Geogebraスキルアップ問題集(007解答)
007
点Dが三角形(poly1)の外部にある場合と内部にある場合を、どうやって区別するかがポイントとなります。アイデアがものを言います。
見本
三角形の外部と内部
まず、点EをPointIn[poly1]として定義する。
点Eはpoly1の内部の点だから、点Dがpoly1の外部にある状態で
SetValue[E, D]
を実行しても、点Eは点Dと一致することはない。
逆に、点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を非表示にすれば、完成である。