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); } }
public Vector3d TransformCoordinates(CoordinateSystem actualCS, CoordinateSystem newCS) { Matrix3d basisVectorMatrix = actualCS.BasisVectorMatrix; Matrix3d basisVectorMatrix2 = newCS.BasisVectorMatrix; return(basisVectorMatrix2.Invert() * (basisVectorMatrix * this)); }
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); }