平面上の点の 4 つの座標を取得します。それらをすべて線で接続する必要があります。線が交差してはなりません。
あなたの戦略は何ですか?
画像を見る
私の最初の直感は、ポイントを「左上」「右上」「左下」「右下」に整理し、左上が左下、左下が下になるように接続し続けることでした。右、右下は右上、右上は左上に接続します。
これはほとんどの場合に機能しますが、すべてではありません。より良い戦略はありますか?
皆さん、ありがとうございました。
平面上の点の 4 つの座標を取得します。それらをすべて線で接続する必要があります。線が交差してはなりません。
あなたの戦略は何ですか?
画像を見る
私の最初の直感は、ポイントを「左上」「右上」「左下」「右下」に整理し、左上が左下、左下が下になるように接続し続けることでした。右、右下は右上、右上は左上に接続します。
これはほとんどの場合に機能しますが、すべてではありません。より良い戦略はありますか?
皆さん、ありがとうございました。
まあ、100% 確信できるほど十分にゲームを作ったわけではありませんが、次のようにすればうまくいくと思います。
これまでのところ、それが失敗する例は思いつきませんでしたが、それは単に夜が遅すぎるからかもしれません。:)
クイックノート:
ドットB = ax *bx + ay*by [ + az*bz ... ] = | || _ B |cos(A と B の間の角度)
計算をより効率的にするには:
まず、内積では 0 から 180 度の角度しか得られないため、どのコサインが小さいか、またはより負かを確認することで、どの角度が大きいかを確認できます。これにより、逆余弦を実行する必要がなくなります。
内積は |A||B|cos(角度) を与えるので、大きさごとに sqrt 関数を実行する必要があり、|A||B| で除算する必要があります。コサインを取得します。ただし、少しのヒューリスティックで、sqrt も回避できます。|あ| と |B| 常に正でなければなりません。そう:
一方の内積が負で、もう一方が正の場合、負の内積は負の余弦を持ち、もう一方の内積は正の余弦を持つ必要があるため、負の内積の方が角度が大きくなります。
両方とも正の場合は、内積を 2 乗し、2 乗した値 (x^2 + y^2 [+ z^2...] (平方根なし)) で割ることができます。結果が小さいほどコサインが小さくなり、角度が大きくなります。
内積が両方とも負の場合、同じ操作を実行しますが、結果が大きいほどコサインが小さくなり、角度が大きくなります。