4 点で指定されたベジエ曲線があります。ポイントがベジエ曲線の左側にあるか右側にあるかを知る必要があります。アルゴリズムを提案してもらえますか?
編集:ベジエ曲線を生成する方法がループを形成しないと確信しています。
後で編集すると、相対位置を使用せずに最初の問題を解決できることに気付きました。この質問を投稿したとき、点が円の内部にあるかどうかを確認するのと同様に、相対位置の数式があると考えていました。これは不可能のようです。したがって、時間効率の良い解決策を提案する答えを受け入れます。
4 点で指定されたベジエ曲線があります。ポイントがベジエ曲線の左側にあるか右側にあるかを知る必要があります。アルゴリズムを提案してもらえますか?
編集:ベジエ曲線を生成する方法がループを形成しないと確信しています。
後で編集すると、相対位置を使用せずに最初の問題を解決できることに気付きました。この質問を投稿したとき、点が円の内部にあるかどうかを確認するのと同様に、相対位置の数式があると考えていました。これは不可能のようです。したがって、時間効率の良い解決策を提案する答えを受け入れます。
かなり単純なアルゴリズム (k-subdivision.DeCastleju's Algorithm に関連) を使用して、ベジエ曲線上の最も近い点を決定できます。詳細が必要な場合は、グラフィックスの宝石を見てください。
その時点で、ループを使用しても、最も近いポイントからテストされたポイントへのベクトルが曲線に沿ったベクトルの右手の左側にあるかどうかを判断することで、サイドネスを判断できます (速度? - よくわからないここでは正しい用語...) 決定した最も近い点でのベジェの。
2 つのベクトルの外積によって -that- を得ることができます。負または正は、利き手と、ラインのどちら側にいるかを決定します。
もちろん、ループでは、あなたがラインを下る車であるかのように側面が定義されます。あなたが通り過ぎるポイントで右または左の窓の外を見ているでしょうか...あなたが右または左にいる場合ではありませんベジェ波線全体の左側。したがって、「サイドネス」をどのように定義するかによって異なります
私の条件が外れていたらごめんなさい。ベジエで何かをしなければならなかったのは久しぶりです
絵を描く方が簡単でしょう;)
オブジェクトを曲線に沿って動かしたいだけなら (コメントで言っているように)、パラメトリック方程式でオブジェクトを動かしてみませんか? この記事を見る
カーブに拘束されたポイントを想定して、アンカーの1つを開始として定義し、もう1つを終了として定義してから、カーブに属し、中央(長さの半分)にあるポイントを計算する必要があります...そうすれば、ポイントが開始と中間の間、または中間と終了の間にあるかどうかを言います。
それはあなたが望むものですか、それとも私は完全に失われていますか?
この遅い時間に数学を思い出せませんが、おそらく、セグメントが十分に「まっすぐ」になり、決定のために線セグメントとして扱うことができるようになるまで、曲線に細分割アルゴリズムを使用して徐々に改良することをお勧めします。 .
曲線改良の境界多面体を使用して、「点」がすべての多面体の外側にあるポイントを特定し、すぐに線分に平坦化することで、より迅速な答えを得ることができる場合があります。