// 點到平面的距離 collisionPt=>交点 public static float PtToPlaneDistance(Vector3 pt, SoftPlane panel, out Vector3 collisionPt) { float d = panel.normal.magnitude; float aa = pt.x * panel.normal.x + pt.y * panel.normal.y + pt.z * panel.normal.z + panel.d; float a = Mathf.Abs(aa); float ret = a / d; // 获得交点 Vector3 dir = panel.normal; if (aa < 0) { dir = -dir; } collisionPt = pt + dir * ret; return(ret); }
public static float PtInPlane(Vector3 pt, SoftPlane plane) { float ret = plane.normal.x * pt.x + plane.normal.y * pt.y + plane.normal.z * pt.z + plane.d; return(ret); }