Exemplo n.º 1
0
 public Segment3f(Vector3F p0, Vector3F p1)
 {
     //update_from_endpoints(p0, p1);
     Center    = 0.5f * (p0 + p1);
     Direction = p1 - p0;
     Extent    = 0.5f * Direction.Normalize();
 }
Exemplo n.º 2
0
 public static float PlaneAngleD(Vector3F a, Vector3F b, int nPlaneNormalIdx = 1)
 {
     a[nPlaneNormalIdx] = b[nPlaneNormalIdx] = 0.0f;
     a.Normalize();
     b.Normalize();
     return(Vector3F.AngleD(a, b));
 }
Exemplo n.º 3
0
 public void Scale(Vector3F s)
 {
     Center *= s;
     Extent *= s;
     AxisX  *= s; AxisX.Normalize();
     AxisY  *= s; AxisY.Normalize();
     AxisZ  *= s; AxisZ.Normalize();
 }
Exemplo n.º 4
0
        public static float PlaneAngleSignedD(Vector3F vFrom, Vector3F vTo, int nPlaneNormalIdx = 1)
        {
            vFrom[nPlaneNormalIdx] = vTo[nPlaneNormalIdx] = 0.0f;
            vFrom.Normalize();
            vTo.Normalize();
            float fSign  = Math.Sign(vFrom.Cross(vTo)[nPlaneNormalIdx]);
            float fAngle = fSign * Vector3F.AngleD(vFrom, vTo);

            return(fAngle);
        }
Exemplo n.º 5
0
        public static float PlaneAngleSignedD(Vector3F vFrom, Vector3F vTo, Vector3F planeN)
        {
            vFrom = vFrom - Vector3F.Dot(vFrom, planeN) * planeN;
            vTo   = vTo - Vector3F.Dot(vTo, planeN) * planeN;
            vFrom.Normalize();
            vTo.Normalize();
            Vector3F c      = Vector3F.Cross(vFrom, vTo);
            float    fSign  = Math.Sign(Vector3F.Dot(c, planeN));
            float    fAngle = fSign * Vector3F.AngleD(vFrom, vTo);

            return(fAngle);
        }
Exemplo n.º 6
0
 void update_from_endpoints(Vector3F p0, Vector3F p1)
 {
     Center    = 0.5f * (p0 + p1);
     Direction = p1 - p0;
     Extent    = 0.5f * Direction.Normalize();
 }