1

手続き的に都市を生成するプログラムを C++ で構築しようとしています。現時点では、都市は Quad ブロックまたは Triangle ブロックのいずれかのブロックの配列によって表されます。

三角形 (TBlock) を四角形 (QBlock) と 3 つの三角形に分割する効果的な方法が見つかりません。

ここに画像の説明を入力

三角形ABCをイメージしてください。線分 BC の 1 番目と 2 番目の層である 2 つの点 T と T' があります。ここで、それぞれ AB と AC の線分にある P と P' を見つける必要があります。P は、AB と T を通る BC の法線との交点です。P' は、AB と T' を通る BC の法線との交点です。

T と T'、およびベクトル BC の内側法線を見つける方法は知っていますが、T または T' を通過する法線を計算する方法が見つかりません。

ありがとう !

4

3 に答える 3

1

(BC) ベクトルが (x, y) の場合、BC の法線ベクトルは (-y, x) です。法線ベクトルを T' の座標でオフセットすると、T' を通過する BC の法線が得られます。

于 2013-06-02T14:21:09.520 に答える
1

CBA が形成する角度は、TBP が形成する角度と同じであることがわかります。これを O としましょう。B と T の間の距離もわかっています。これを D と呼びます。これを使用して、三角法を使用して P を見つけることができます。

タン(O) = X / D

ここで、X は T と P の間の y_axis 距離です。O と D はわかっているので、X を解くだけです。

X がわかれば、T の y 値に X を足すだけで P を求めることができます。

于 2013-06-02T14:51:23.103 に答える
1

線の法線y = m*x + cは liney = (-1/m)*x + dで、cdは定数です。共通点 (T または T') を持つ 2 つの線があり、T と T' の両方を見つけるために同時に解くことができmます d

于 2013-06-02T14:28:44.973 に答える