ポイントが同じ行にあるかどうかをチェックする方法を試しています。線が斜めであれば動作するように見えますが、縦または横にまっすぐには失敗します。ポイントがライン上の2つの他のポイントの間にあるかどうかを確認する
これは私の方法である:
public bool isBetween(Vector3 C, Vector3 A, Vector3 B)
{
Vector3 sum = Vector3.Cross(A,B) + Vector3.Cross(A,C) + Vector3.Cross(B,C);
if (sum.x == 0 && sum.z == 0 && sum.y == 0)
{
Vector3 min = Vector3.Min(A, B);
Vector3 max = Vector3.Max(A, B);
// only checking 2 dimensions
if (C.x > min.x && C.x < max.x && C.z > min.z && C.z < max.z)
{
return true;
}
}
return false;
}
それはすべてのケースのために、100%、特定の場合のために動作しますが、ありません。それが動作するように修正する方法がわからない。
どのような場合に適していますか?どのような場合にはうまくいかないのですか? – gdc