public static Multiply ( |
||
left | left matrix | |
right | right matrix | |
return |
/// <summary> /// calculate the matrix used to transform 3D to 2D /// </summary> /// <returns>maxtrix is use to transform 3d points to 2d</returns> public virtual Matrix4 Compute3DTo2DMatrix() { Matrix4 result = Matrix4.Multiply( m_to2DMatrix.Inverse(), m_moveToCenterMatrix.Inverse()); m_transformMatrix = Matrix4.Multiply(result, m_scaleMatrix); return(m_transformMatrix); }
/// <summary> /// transform the point on Form to 3d world coordinate of revit /// </summary> /// <param name="ps">contain the points to be transformed</param> /// <returns>Vector list contains points being transformed</returns> public virtual List <Vector4> Transform2DTo3D(Point[] ps) { List <Vector4> result = new List <Vector4>(); TransformPoints(ps); Matrix4 transformMatrix = Matrix4.Multiply( m_scaleMatrix.Inverse(), m_moveToCenterMatrix); transformMatrix = Matrix4.Multiply(transformMatrix, m_to2DMatrix); foreach (Point point in ps) { Vector4 v = new Vector4(point.X, point.Y, 0); v = transformMatrix.Transform(v); result.Add(v); } return(result); }