ポリゴン:内と外の判定

画面をクリックした際に、そのポイントが
領域の中か外か判断する問題があります。
簡単なのは円で半径の大小で判断できます
四角形になると直線4本の判断になり、
急に計算量が増えます。多角形を円で
近似するのは、ゲームレベルだと
操作感覚は悪くなく、領域の周縁に
境界領域があるからだと思います。

画像


任意の点と中心の間の距離を計算して、
半径との大小を比較するという流れの
シンプルさと、プログラムの数学ライブラリ
関数の pow() や sqrt() が組込関数だから
速いと考えられます。

https://www.ibm.com/support/knowledgecenter/ja/SSGH2K_12.1.0/com.ibm.xlc121.aix.doc/proguide/tvopfunc.html

自作関数と異なり、自動的にインライン化
されるとのことで、その意味は関数呼出しを
するところに、関数の実体を書きこんで
コンパイルするそうです。コンパイルには
5つの段階(字句解析、構文解析、意味解析
最適化、コード生成)がありますが、
中間コードの生成と機械語変換で組込み
関数の方が最適化が有利なのは分かります。

https://ufcpp.net/study/computer/Compiler.html

次のページを見ていて、高速化のアイデアが
浮かびました。

http://www.tokumaru.org/yacc/yacc04.htm

関数名をアスキー表で先に出てくるものに
するのです。xyz() より ABC() の方が
速く処理してくれそうです。
アハハ・・・

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック