2

Pの境界上に凸多角形Pと点Aがある場合、ABがPを特定の割合の2つの領域に分割するように、点BもPの境界上で計算するにはどうすればよいですか?凸多角形を一定の割合で2つの領域に分割するにはどうすればよいですか?

理想的には、分析ソリューションが必要です。最後の手段として、ポリゴンのどこにでも線を描き、その割合が所定の精度になるまで徐々に移動させることができます。

私は、ポリゴン上の2つのポイントの間にどこがあるかを知った後、Bを計算する方法を学びました。だから、どのポイント間にあるべきかを知る方法があれば、そこからそれを取ることができるはずです!

答えて

2

ポリゴンを点Aから三角形に分割し、その面積を計算します。次に、1つの三角形だけが残るまで、比率に応じて各端から各ポリゴンに三角形を追加できます。次に、点Bがその三角形の底辺のどこかにあることがわかります。

+0

ありがとう、これは完全に動作します。うまくいっていればより効率的になるはずですが、エリア合計の式の中間段階を追跡することに固執します。 –

1

よくあることですが、私は自分の質問に投稿してからわずか数分で答えました!

Bは行くべきポイントする間に決定する私のコードは次のようになります。

while areaSoFar + areas[i] < targetArea: 
    i++ 
    areaSoFar += areas[i] 

それは私がちょうど同じチェックに面積の総和式の最後の要素を挿入するために必要なことが判明:

while areaSoFar + areas[i] + points[i].x * start.y - points[i].y * start.x < targetArea: 
    i++ 
    areaSoFar += areas[i] 

上記の[]配列には、area summation formulaの各要素が含まれています。

これはGuffaの答えと似ていますが、やや効率的です。

関連する問題