正三角形・正方形

複素平面上での正三角形は、問題図としてよく使います。

Cinderellaの作図ツールで正三角形を描くこともできますが、複素数を使えば簡単にできます。

線分ABを1辺とする正三角形を描きます。ABに対してどちらに作るかは、角を正にとるか負にとるかで決まります。

与えられた線分(2点を表す複素数)に対してその都度計算式を書いてもよいのですが、その手続きを関数にしてしまえばあとからが楽でしょう。引数を2つの複素数と、回転角にして、3点を取って結ぶ関数です。

triangle(z1,z2,th):=(

A.xy=gauss(z1);

B.xy=gauss(z2);

C.xy=gauss((z2-z1)*(cos(th)+i*sin(th))+z1);

);

これを使って、A(-1-i) と B(1+2i)の場合について描いてみましょう。

三角形ABCは、作図ツールであらかじめ適当に書いておきます。正三角形でなくてかまいません。

triangle(-1-i,1+2*i,pi/3);

Listplot([A,B,C,A]);

Letter([A,"se","A($-1-i$)",B,"e","B($1+2i$)",C,"w2","C"]);

(2) 正方形

全く同じ要領で正方形ができます。

そこで、これを使って、三平方の定理の図を描いてみましょう。

直角三角形ABCは、方眼を使って適当に書くことにします。

3つの正方形を描くので、三角形のときのように点をA..,B,Cに限定するのはあまり好ましくないでしょう。

そこで、引数は2つの複素数と角で同じですが、点の座標を設定するのではなくdrawpoly()を使って直接正方形を描くことにします。

square(z1,z2,th):=(

p1=gauss(z1);

p2=gauss(z2);

p3=gauss((z1-z2)*(cos(-th)+i*sin(-th))+z2);

p4=gauss((z2-z1)*(cos(th)+i*sin(th))+z1);

drawpoly([p1,p2,p3,p4]);

);

三角形ABCに対して、次のようにして使えば三平方の定理の図が描けます。

square(complex(A),complex(B),-pi/2);

square(complex(B),complex(C),-pi/2);

square(complex(A),complex(C),pi/2);

次に、これをKETCindyで書き出すのですが、点を作っていませんので、そのまま座標のリストを書き出すことにします。

square()関数の中の p1,p2,p3,p4は局所変数ではありませんので関数の外でも使えます。

したがって、関数を呼び出したら、そのまま[p1,p2,p3,p4,p1]をListplot()で書き出します。

Addax(0);

square(complex(A),complex(B),-pi/2);

Listplot("1",[p1,p2,p3,p4,p1]);

square(complex(B),complex(C),-pi/2);

Listplot("2",[p1,p2,p3,p4,p1]);

square(complex(A),complex(C),pi/2);

Listplot("3",[p1,p2,p3,p4,p1]);

Letter([A,"w2","A",B,"se2","B",C,"n2e","C"]);

< 戻る >