[Squeak-ja: 2960] Re: スクリプトの中で三角関数を利用する方法

Kazuhiro ABE abee @ squeakland.jp
2006年 5月 21日 (日) 19:05:14 JST


阿部@新百合です。

それでは、私はeToys(タイルスクリプト)を使った方法をご紹介します。
どんなモーフ(オブジェクト)を使ってもよいのですが、ここでは楕円を使います。
部品フラップから楕円を引っ張り出して、ビューワを開き、幾何カテゴリに切り
替えます。
eToysの世界(ワールド)では左下が原点です。楕円を動かすと「x座標」と「y座標」
の値が変化するのが分かります。
これらの値は、原点、楕円の中心、楕円の中心からx軸に下ろした垂線とx軸の交
点をそれぞれ頂点とした直角三角形の底辺と垂辺の長さと考えることができます。
このとき、斜辺は「距離」、底辺と斜辺のなす角度は「θ値」として表されます
(つまり極座標ですね)。
したがって、三辺中二辺の長さを決定すれば、残りの一辺とθ値が求まることに
なります。

スクリプトとしては、単に「x座標」「y座標」「距離」の内、2つに適当な値を代
入し、チクタクすると残りの値とθ値が決まります。
このとき、一度ビックリで実行しただけでは収束せず、何回か繰り返す必要があ
るのが面白いところです。これは制約解消の例といえるでしょう。

今話題のSuperSwiki2にサンプルのプロジェクトを置きました。できれば、ご自分
でお試しになったあとにご覧ください。

http://squeakland.jp/seaside/SBSuperSwiki?_s=MgHWLpvmpECNEKln&_k=ffYROmeB

また、大道さんが書かれているようなSmalltalkを使う方法も面白いので、そちら
のお話もぜひお続けください。

 //abee
--
阿部 和広  EMAIL abee @ squeakland.jp



Squeak-ja メーリングリストの案内