2016-10-11 4 views
3

circle.htmlを使って円を描きたかったのですが、circle()関数を直接使用していませんでした。私が描きたい円は、小さい円を点として使用します。すなわち、小さな円は大きな円の円周を構成します。だから私は、私はこのような何かをした場合、それが働くだろう、と思った:これは私たちが学校でで学習しているコンパイラであると私はターボC++にgraphics.h使用していたときに標準デカルト円の数式を使ってグラフィックスモードでサークルを描く(C++)

{ 
     int radius = 4; 


     // Points at which smaller circles would be drawn 
     int x, y; 


     int maxx = getmaxx(); 
     int maxy = getmaxy(); 

     // Co-ordinates of center of the larger circle (centre of the screen) 
     int h = maxx/2; 
     int k = maxy/2; 

     //Cartesian cirle formula >> (X-h)^2 + (Y-k)^2 = radius^2 

     //Effectively, this nested loop goes through every single coordinate on the screen 

     int gmode = DETECT; 
     int gdriver; 

     initgraph(&gmode, &gdriver, ""); 

     for(x = 0; x<maxx; x++) 
     { 
      for(y = 0; y<maxy; y++) 
      { 
      if((((x-h)*(x-h)) + ((y-k)*(y-k))) == (radius*radius)) 
      { 
       circle(x, y, 5) //Draw smaller circle with radius 5 
      }     //at points which satisfy circle equation only! 
      } 
     } 
    getch(); 
    } 

です。

私はそれが古代であることを知っています。

理論的には、ネストされたforループはスクリーン上のすべての点をチェックし、円の方程式だけを満たすすべての点で小さな円を描くので、その円周は私がforループで作る小さな円の構成要素です。

私はプログラムをしようとすると、私は半径を大きくする場合しかし、私は、双曲線の増加(より良い言葉の欠如のため)pointinessを4本の双曲線(すべての画面の中心に向かって指している)を取得し、最終的にまで半径が256以上の場合、上と下の2つの双曲線が交差して、「それはユーザーです、私はあきらめます。

半径が4の倍数であることに気付くと、私は256という値になりました。

私はかなりの時間ソリューションを見回しましたが、回答が得られなかったため、ここにいます。

提案がありますか?

EDIT >>ここで私が得た出力のラフ図だ...すべての

This is the rough output

+0

壊れた出力のスクリーンショットを追加することはできますか? –

+0

maxxとmaxyは画面の境界を表していますか? –

+0

@JasonC現在、Turbo C++を搭載していないノートパソコンで作業しているため、スクリーンショットを手に入れることができません。また、デスクトップPCもかなり離れているため、できません。ごめんなさい。だから私は出力を記述するために最善を尽くしたのです... – Zac

答えて

関連する問題