うしブログ

うしブログ

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

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

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

Geogebraスキルアップ問題集(007解答)

007

点Dが三角形(poly1)の外部にある場合と内部にある場合を、どうやって区別するかがポイントとなります。アイデアがものを言います。

見本

Geogebraファイル

 

三角形の外部と内部

まず、点EをPointIn[poly1]として定義する。

点Eはpoly1の内部の点だから、点Dがpoly1の外部にある状態で

SetValue[E, D]

を実行しても、点Eは点Dと一致することはない。

f:id:usiblog:20160817094642g:plain

逆に、点Dがpoly1の内部にある状態で上記コマンドを実行すると、点Eは必ず点Dと一致する。

この違いを利用する。

 

点Dのスクリプティング

点DのOn Update スクリプトとして、以下を記述する。

SetValue[E,D]
If[D==E,SetValue[in,true],SetValue[in,false]]

1行目でEをDに一致させようと試みて、その結果、DとEが一致したのであれば、点Dはpoly1の内部にあるということなので、真偽値(in)をtrueにする。 そうでない場合にはfalseにする。

あとは点Eを非表示にすれば、完成である。