2
四角の四隅を指すベクトルが4つあります。私は彼らがどこか他の場所を指し示す別のベクターにある程度近接しているかどうかを検出し、そうであればそれに応じて検出したいと思います。私は2つの線分間の最短距離を測定していると言わアルゴリズムを発見したが、それが正常に動作していないが、私は思う:Unity3dの2つの線分間の距離を測定する方法
public class Test : MonoBehaviour {
public void FixedUpdate() {
var source = new Vector3(0, 0, 0);
var target = new Vector3(0, 0, 4);
var otherSource = new Vector3(1.6f, 0, -0.5f);
foreach (var dir in new[] {
new Vector3(source.x + 1, source.y, source.z + 1),
new Vector3(source.x - 1, source.y, source.z + 1),
new Vector3(source.x + 1, source.y, source.z - 1),
new Vector3(source.x - 1, source.y, source.z - 1)
}) {
var A = source;
var B = otherSource;
var a = dir - A;
var b = target - B;
var n = Vector3.Cross(a, b);
var u = Vector3.Cross(n, A - B)/Vector3.Dot(n, n);
var AA = A - a * Vector3.Dot(b, u);
var BB = B - b * Vector3.Dot(a, u);
Debug.DrawRay(A, a, Color.blue);
Debug.DrawRay(B, b, Color.red);
Debug.DrawLine(AA, BB, Color.green);
}
}
}
を今、あなたはそれを実行した場合、あなたはこのような何かわかります
私は4本の緑色のラインが見たいと思っていましたが、何もありません。だから、少し良く
、それでも私は探していない何を:私はotherSource
ベクトルを少し上に移動hovewer場合、私はこれを参照してください。このアルゴリズムを調整する助け?
'Vector3.Distance'が2間の距離を見つけるために使用されますベクトル – Programmer
また、2つのベクトルを減算することもできますし、大きさを2乗して比較することもできます。 – George
他のどこかを指している別のベクトル*は何ですか?そして、2つのベクトル*の間の最短距離を測定すると、2点間の距離*または2点で定義される2つの線分/線を意味しますか? – zwcloud