public static IntersectionPointOptimized ( Vector3 start1, Vector3 dir1, Vector3 start2, Vector3 dir2 ) : Vector3 | ||
start1 | Vector3 | |
dir1 | Vector3 | |
start2 | Vector3 | |
dir2 | Vector3 | |
Résultat | Vector3 |
public static Vector3 IntersectionPointOptimized (Vector3 start1, Vector3 dir1, Vector3 start2, Vector3 dir2) {
float den = dir2.z*dir1.x - dir2.x * dir1.z;
if (den == 0) {
return start1;
}
float nom = dir2.x*(start1.z-start2.z)- dir2.z*(start1.x-start2.x);
float u = nom/den;
return start1 + dir1*u;
}
Polygon::IntersectionPointOptimized ( Vector3 start1, Vector3 dir1, Vector3 start2, Vector3 dir2, bool &intersects ) : Vector3 |
public Vector3 Intersection(LocalAvoidance.HalfPlane hp) { Vector3 dir = Vector3.Cross(this.normal, Vector3.up); Vector3 dir2 = Vector3.Cross(hp.normal, Vector3.up); return(Polygon.IntersectionPointOptimized(this.point, dir, hp.point, dir2)); }