指定された Z 座標を持つ 3D 三角形の 2 点を計算したいと考えています。これを行う方法は、与えられた Z 座標で完全に平らな平面を何らかの方法で作成し、三角形がそれと交差する場所を計算することだと思います (またはこれは間違っています)。
何らかの方法でこれを行う方法を知っている場合は、助けてください。私は検索しましたが、うまくいくと思われるものは実際には見つかりませんでした。
指定された Z 座標を持つ 3D 三角形の 2 点を計算したいと考えています。これを行う方法は、与えられた Z 座標で完全に平らな平面を何らかの方法で作成し、三角形がそれと交差する場所を計算することだと思います (またはこれは間違っています)。
何らかの方法でこれを行う方法を知っている場合は、助けてください。私は検索しましたが、うまくいくと思われるものは実際には見つかりませんでした。
三角形が、T0 が底辺左、T1 が底辺右、T2 が先端である 3 点で定義されていると仮定します。そして、三角形がどのように整列されているかなどに関する他の多くの仮定:
public bool GetIntersect(Vector3 T0, Vector3 T1, Vector3 T2, float Z, out Vector3 P0, out Vector3 P1)
{
if (!((Z <= T2.Z) && (Z >= T0.Z) && (Z >= T1.Z)))
return false;
var left = T2 - T0;
left *= 1f / left.Z;
var right = T2 - T1;
right * 1f / right.Z;
P0 = T0 + (left * (Z - T0.Z));
P1 = T1 + (right * (Z - T1.Z));
return true;
}
PS; パラメータ名の大文字はダメです!それをしないでください!私は今自分の間違いを修正する気にはなりません:P