- ベストアンサー
☆のそれぞれの角度っていくつ?
夏休みに入り、一人でプログラムを独学しています。 ☆型をプログラムで書きたいんですが それぞれの角度がいくらかわからないんでかけません・・。 星型の左端に接するようにy軸を置き、星型の下の部分に接するようにx軸をおいて それぞれの線を方程式であらわしたいのです。 例えば下のような三角形を表示したいときは ■ ■■ ■■■ ■■■■ ■■■■■ ■■■■■■ ■■■■■■■ ■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■■ x > 0 , y > 0 , y <= -x + 10 ですよね。 こんな風に☆(星形)もそれぞれを方程式であらわしたいのです。 どなたか方程式教えていただけないでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
星型は真ん中の正五角形と5つの二等辺三角形を切り合わせた形と考えます。 正五角形の内側の角度は108°です。 二等辺三角形の頂角は36°、二つの底角は72°になります。 原点を星の左下一点とし、原点を中心とする単位円に頂点と右上の一点が通る、第一象限に☆がくるように考えた場合、 5つの直線で表せます。 一本目、y=tan72°x (0≦x≦cos72°) 二本目、y=-tan72°x + 2*sin72°(cos72°≦x≦2*cos72°) 三本目、y=-tan36°x + 2*sin36° (cos36°- 2*cos72°≦x≦2*cos72°) 四本目、y=sin36° (cos36°- 2*cos72°≦xcos36°) 五本目、y=tan36°x (0≦x≦cos36°) さあて、計算ミスがあったら申し訳ありません。
その他の回答 (3)
- shkwta
- ベストアンサー率52% (966/1825)
プログラム言語が何かわからないのですが、通常sin関数とcos関数が用意されていると思いますので、これを使うと簡単です。 まず、基本として (1)原点を中心とする半径Rの円周上で、x軸から反時計回りに 角度k度の点の座標は x = R * cos(π*k/180) y = R * sin(π*k/180) πは円周率です(具体的な書き方はプログラミング言語により異なります。pi = 3.14159265358979などと代入してからpiを使ってもいいと思います)。 (2)上のことを、(x0, y0)を中心とする円周上で考えると、 x = x0 + R * cos(π*k/180) y = y0 + R * sin(π*k/180) となります。星型五角形の5つの頂点では、k = 18,90,162,234,306 になります。これを上の式に入れるとx,yが求められます。 --------------- x0とy0の選び方ですが、k=162のときx=0と決めているので、 x0 = -R * cos(π* 162/180) また、k=234のときy=0 と決めているので y0 = -R * sin(π* 234/180) としてx0,y0を求めておけばよいのです。 半径Rは、事前に適当に決めておきます。 -------------------- ご質問のように不等式で表わしたい場合は、星型五角形をつくる5つの直線について不等式が必要です。 (a,b)と(c,d)を結ぶ直線の方程式は(a≠cとします)、 y = (d-b)(x-a)/(c-a) + b ですから、この直線の上側の領域は y > (d-b)(x-a)/(c-a) + b 下側の領域は y < (d-b)(x-a)/(c-a) + b 星型五角形は、3つの三角形の和集合で表わすことができます。それらの、それぞれの三角形は、ご質問のように3つの不等式の共通部分で表わせます。
- char2nd
- ベストアンサー率34% (2685/7757)
プログラムとしては、#1さんの方法がいいかと思いますが、質問者さんは角度を所望のようなので、その算出方法について考えてみましょう。 いうまでもなく、星形のそれぞれの頂点をとなり同士結んでいけば正五角形になります。 n角形の外角の和は360度であり、制n角形であればその外角はすべて等しいです。すなわち正五角形の場合は、360/5度となります。これより、正五角形の内角も求められます。 星形と正五角形を重ねて描くと、正五角形のある一つの点を頂点とする二等辺三角形が見えるでしょう(扁平なかたちをしています)。内角が分かっていますから、この二等辺三角形の残りの2つの角も分かります。 星形の一つの内角は、五角形の内角からこの二等辺三角形の底部の内角を2箇所分差し引いたものになります。
- sittaka-kun
- ベストアンサー率22% (153/686)
円周上に等間隔に5つの点を配置して,1つおきに結んだ図形を描けばいいと思います。 考え方は極座標の方が簡単だと思いますが,画面描画を平面座標で 行いたい場合には,原点を円周の中心にとって軸上にシフトした方が 簡単に考えられると思います。 がんばってください。