Cross() public static method

public static Cross ( Vec3 v1, Vec3 v2 ) : Vec3
v1 Vec3
v2 Vec3
return Vec3
Exemplo n.º 1
0
        public void InitVirtualPlane(Vec3 planePos, CoordinateSystem planeBase, Axis axisConstraint)
        {
            this.m_virtualPlanePos  = planePos;
            this.m_virtualPlaneBase = planeBase;
            this.m_axisConstraint   = axisConstraint;
            CoordinateSystem virtualPlaneCoords = default(CoordinateSystem);

            switch (this.m_axisConstraint)
            {
            case Axis.X:
                virtualPlaneCoords.axisX = planeBase.axisX;
                virtualPlaneCoords.axisY = Vec3.Cross(Camera.FrontVector, planeBase.axisX);
                virtualPlaneCoords.axisY.Normalize();
                virtualPlaneCoords.axisZ = Vec3.Cross(planeBase.axisX, virtualPlaneCoords.axisY);
                virtualPlaneCoords.axisZ.Normalize();
                break;

            case Axis.Y:
                virtualPlaneCoords.axisX = planeBase.axisY;
                virtualPlaneCoords.axisY = Vec3.Cross(Camera.FrontVector, planeBase.axisY);
                virtualPlaneCoords.axisY.Normalize();
                virtualPlaneCoords.axisZ = Vec3.Cross(planeBase.axisY, virtualPlaneCoords.axisY);
                virtualPlaneCoords.axisZ.Normalize();
                break;

            case Axis.XY:
                virtualPlaneCoords.axisX = planeBase.axisX;
                virtualPlaneCoords.axisY = planeBase.axisY;
                virtualPlaneCoords.axisZ = planeBase.axisZ;
                break;

            case Axis.Z:
                virtualPlaneCoords.axisX = planeBase.axisZ;
                virtualPlaneCoords.axisY = Vec3.Cross(Camera.FrontVector, planeBase.axisZ);
                virtualPlaneCoords.axisY.Normalize();
                virtualPlaneCoords.axisZ = Vec3.Cross(planeBase.axisZ, virtualPlaneCoords.axisY);
                virtualPlaneCoords.axisZ.Normalize();
                break;

            case Axis.XZ:
                virtualPlaneCoords.axisX = planeBase.axisX;
                virtualPlaneCoords.axisY = planeBase.axisZ;
                virtualPlaneCoords.axisZ = planeBase.axisY;
                break;

            case Axis.YZ:
                virtualPlaneCoords.axisX = planeBase.axisY;
                virtualPlaneCoords.axisY = planeBase.axisZ;
                virtualPlaneCoords.axisZ = planeBase.axisX;
                break;
            }
            this.m_virtualPlane       = Plane.FromPointNormal(this.m_virtualPlanePos, virtualPlaneCoords.axisZ);
            this.m_virtualPlaneCoords = virtualPlaneCoords;
        }
Exemplo n.º 2
0
        public static Plane FromPoints(Vec3 p1, Vec3 p2, Vec3 p3)
        {
            Plane result = default(Plane);
            Vec3  v      = p2 - p1;
            Vec3  v2     = p2 - p3;
            Vec3  v3     = Vec3.Cross(v, v2);

            v3.Normalize();
            result.normal = v3;
            result.dist   = Vec3.Dot(v3, p1);
            return(result);
        }