うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

正三角形を用いたフラクタル表現

課題

f:id:usiblog:20190601110035p:plain

上図のように、正三角形ABCを作成する。名前をpoly1とする。

 

(1)下図のように、点Aを拡大の中心点として、poly1を0.8倍した多角形(poly2)を作成せよ。

f:id:usiblog:20190601110258p:plain

 

(2)poly2の、点Bに対応する頂点を、B2とする。

f:id:usiblog:20190601110446p:plain

下図のように、B2を拡大の中心点として、poly2を0.8倍した多角形(poly3)を作成せよ。

f:id:usiblog:20190601110658p:plain

 

(3)poly3の、点Cに対応する頂点を、C3とする。

f:id:usiblog:20190601110757p:plain

下図のように、C3を拡大の中心点として、poly3を0.8倍した多角形(poly4)を作成せよ。

f:id:usiblog:20190601110949p:plain

 

(4)(1)〜(3)の作業を同様に繰り返し、poly101まで作成した場合の様子を、下図のように図示せよ。なお、poly2〜poly101を逐一作成していくのは煩雑であるから、リストとして一括して作成する方法を検討せよ。

f:id:usiblog:20190601111212p:plain

 

(5)(4)の作業で、「0.8倍」という条件を、「0.95倍」「0.25倍」「マイナス0.75倍」「マイナス0.89倍」「マイナス1倍」に変更した場合の結果を、それぞれ図示せよ。なお、「ある点Pを拡大の中心点として、オブジェクトをマイナスk倍する」というのは、当該オブジェクトを、点Pを中心に反転し、それを、点Pを中心にk倍する、ということである。

 

解答例

(1)〜(3)

poly2 = Dilate[poly1, 0.8, A]

poly3 = Dilate[poly2, 0.8, B2]

poly4 = Dilate[poly3, 0.8, C3]

 

(4)の一括作成方法

Zip[Element[β, 1], β, IterationList[{Dilate[Element[α, 1], 0.8, Element[{Vertex[Element[α, 1]]}, Loop[Element[α, 2], Length[{Vertex[Element[α, 1]]}]]]], Element[α, 2] + 1}, α, {{poly1, 1}}, 100]]

IterationListコマンドを用いて、poly1〜poly101を集めたリストを、帰納的に定義している。

なお、ここで用いられているLoopコマンドは、オリジナルツールである。Loopツールの解説、および、ツール導入のためのggtファイルは、下記記事を参照。

 

(5)

数値オブジェクトratioを用意し、上記解答例の数式における「0.8」を、ratioに置き換えた数式

Zip[Element[β, 1], β, IterationList[{Dilate[Element[α, 1], ratio, Element[{Vertex[Element[α, 1]]}, Loop[Element[α, 2], Length[{Vertex[Element[α, 1]]}]]]], Element[α, 2] + 1}, α, {{poly1, 1}}, 100]]

によって、リストオブジェクトを作成する。

ratioを0.95, 0.25, -0.75, -0.89, -1に変化させた場合の、当該リストオブジェクトの描画を観察しよう。

f:id:usiblog:20190601113751p:plain

 

f:id:usiblog:20190601113824p:plain

 

f:id:usiblog:20190601113903p:plain

ratioをマイナスにした途端、図形が外側に成長し始めた。

 

f:id:usiblog:20190601113945p:plain

ratio = -0.89 では、各頂点と辺が重なって見えて、美しい。

各頂点と点がぴったり重なるratioは、厳密には、-0.89ではないかもしれない。これを計算するというのも、面白い問題だ。

 

f:id:usiblog:20190601114023p:plain

ratio = -1 のときは、六芒星になった。