指定の面積を維持する楕円
https://www.geogebra.org/m/umngu6v9
(参考)
詳しくは、上記アプレットを分析して頂きたいのですが、カギとなるスクリプトは、オブジェクト「updater」に書かれた、On Update スクリプトです。
If[A!=B,SetValue[C,Dilate[C,(Distance[C,Line[A,B]]+diff/70)/Distance[C,Line[A,B]],A]]]
If[A!=B,SetValue[C,Intersect[c,Ray[A,B']]]]
If[!IsDefined[C],SetValue[C,B']]
If[A==B,SetValue[C,Point[Circle[A,sqrt(goal/ π )]]]]
1行目:Cを動かして楕円を変形
2行目:CがLine[A,B]上に来てしまうと、Cが飛んでしまうので、Cの位置を微調整
3行目:Cが飛んだときに復活させる。
4行目:A==Bのときは円なので、Cをその円上に配置