オブジェクトの連動(2線分の垂直・等長を維持する)
課題
・3点A, B, Cを作る。この3点は自由にドラッグできるものとする。
・線分ABと線分BCを作る。この2つの線分は、常に長さが等しく、かつ垂直に交わるものとする。
(課題の内容は、Yahoo!知恵袋より引用。URL:
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11119843661
投稿者:prorenk)
完成したアプレット
概説
前提オブジェクト
各種オブジェクトのOn Update スクリプト
点A
SetValue[C,Point[Circle[B,Distance[A,B]]]]
SetValue[C,Rotate[A,π/2,B]]
1行目で、BCの長さをABに揃えている。2行目で、角ABCをπ/2に設定している。
点C
SetValue[A,Point[Circle[B,Distance[B,C]]]]
SetValue[A,Rotate[C,-π/2,B]]
1行目で、ABの長さをBCに揃えている。2行目で、角CBAを-π/2に設定している。
点B
SetValue[A,Translate[B,u]]
SetValue[C,Translate[B,v]]
点 A, Cをそれぞれ、点Bの座標更新直前におけるベクトルu, vに基づいて再設定するようにしている。これによって、点Bをドラッグすると、それに伴い点A,Cも同じ分だけ移動するようになる。