示例#1
0
        public static void TransformCoordinates(List <Plane> planes, CoordinateSystem actualCS, CoordinateSystem newCS)
        {
            Matrix3d basisVectorMatrix  = actualCS.BasisVectorMatrix;
            Matrix3d basisVectorMatrix2 = newCS.BasisVectorMatrix;
            Point    b     = actualCS.Origin - newCS.Origin;
            Matrix3d a     = basisVectorMatrix2.Invert();
            Matrix3d a2    = basisVectorMatrix2.Invert() * basisVectorMatrix;
            Point    right = basisVectorMatrix2.Invert() * b;

            for (int i = 0; i < planes.Count; i++)
            {
                planes[i].Point        = a2 * planes[i].point_0 + right;
                planes[i].NormalVector = a * (basisVectorMatrix * planes[i].vector3d_2);
            }
        }
示例#2
0
        public Vector3d TransformCoordinates(CoordinateSystem actualCS, CoordinateSystem newCS)
        {
            Matrix3d basisVectorMatrix  = actualCS.BasisVectorMatrix;
            Matrix3d basisVectorMatrix2 = newCS.BasisVectorMatrix;

            return(basisVectorMatrix2.Invert() * (basisVectorMatrix * this));
        }
示例#3
0
        public static List <Ellipse> TransformCoordinates(List <Ellipse> ellipses, CoordinateSystem actualCS, CoordinateSystem newCS)
        {
            Matrix3d       basisVectorMatrix  = actualCS.BasisVectorMatrix;
            Matrix3d       basisVectorMatrix2 = newCS.BasisVectorMatrix;
            Point          b     = actualCS.Origin - newCS.Origin;
            Matrix3d       a     = basisVectorMatrix2.Invert() * basisVectorMatrix;
            Point          right = basisVectorMatrix2.Invert() * b;
            List <Ellipse> list  = new List <Ellipse>(ellipses.Count);

            for (int i = 0; i < ellipses.Count; i++)
            {
                Point point  = ellipses[i].point_0;
                Point point2 = point + ellipses[i].vector3d_0.ToPoint();
                Point point3 = point + ellipses[i].vector3d_1.ToPoint();
                point  = a * point + right;
                point2 = a * point2 + right;
                point3 = a * point3 + right;
                list.Add(Ellipse.ConstructFromConjugateDiameters(point, point2, point3));
            }
            return(list);
        }