Esempio n. 1
0
        // 點到平面的距離 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);
        }
Esempio n. 2
0
        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);
        }