わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

辺の長さがすべて等しい多角形を描く(1)

 いきなりですが問題です.

 辺の長さがすべて等しく,角の大きさはすべて等しいわけではない十角形を描いてください.

 解答の前に元ネタです.

 この本のp.70は「多角形といろいろな面積」です.復習ポイントの一つに「辺の長さがすべて等しい多角形を正多角形という。」を挙げています.これは間違いで,ひし形がその反例となります.三角形に限り,「辺の長さがすべて等しい」と「角の大きさがすべて等しい」と「辺の長さがすべて等しく,角の大きさがすべて等しい」という3つの命題は互いに同値となります.
 もう一つ,注意する点があります.「角の大きさはすべて等しいわけではない」というのは,n角形のn個の角のうち,少なくとも2個の角の大きさが異なっていればよいと考えます.部分否定です.全体否定(辺の長さがすべて等しく,角の大きさはすべて異なる多角形)は別の記事にします.
 といったところで解答です.以下のように描きます.
f:id:takehikom:20210514072329p:plain
 正十角形となるように10個の点をとるのですが,1点だけ,「凹ませる」ことで,そこの角度が異なるのが一目で分かります.
 比較できるよう,正十角形の画像も貼り付けておきます.
f:id:takehikom:20210514072345p:plain
 今回,2次元平面上で各点の座標計算を行った上で,SVG画像を生成しましたが,上の2つの多角形であれば,タートルグラフィックスを用いるのが簡便です.Pythonhttps://docs.python.org/ja/3/library/turtle.html)も興味深いのですが,文科省もといScratch(https://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/05/21/1417094_006.pdf)の「○歩動かす」と「○度回す」を用いて,次のように表現できます.

  • 7回繰り返す:「50歩動かす,36度回す」
  • 50歩動かす,72度回す
  • 50歩動かす,-36度回す
  • 50歩動かす

 上記の「36度」は,正十角形の外角の大きさです(「50歩動かす,36度回す」を10回繰り返すと,正十角形を描画します).正整数nに対して同じように1箇所凹んだn角形を描くには,歩数をs(例えば50),正n角形の外角の大きさをa(=360÷n)としたとき,「s歩動かす,a度回す」をn-3回繰り返して,s歩動かす,a*2度回す,s歩動かす,-a度回す*1,s歩動かすことになります*2
 自作プログラムでは,外角が分かるよう線を延ばす処理も入れてみました.以下の図形について,赤の点は正十角形の外角の大きさ,赤の点が2つはその2倍の角の大きさ,青の点は,角の大きさとしては赤の点と同じですが,向きが反対(「-a度回す」の操作)です.
f:id:takehikom:20210514072359p:plain
 そのほか,n=3, 4, ..., 9についても「凹ませる」処理を行い,画像を生成してみました.もっとも面白いと思った,「辺の長さがすべて等しく,角の大きさはすべて等しいわけではない」多角形は,以下に示す六角形です.
f:id:takehikom:20210514072407p:plain

*1:Scratchにはマイナスの単項演算子がないので「0-a度回す」にする…よりは,「○度回す」には左回り・右回りあるので,反対のものを選んで「a度回す」とするといいでしょう.

*2:実際にhttps://scratch.mit.edu/で動作確認しました.最初に,https://scratch.programming-edu.net/sample/scrach3pen.htmlに書かれた手順で「ペン」を追加します.1周して,キャラクター(Scratchキャット)の向きを開始時と同じにするには,最後に「a*2度回す」を追加します.