C# 元素镜像
2020-11-13 本文已影响0人
板栗_1c34
实体编程过程中,经常会遇到镜像操作,如果采用三维几何变换,涉及构造复杂的变换矩阵,对于镜像操作来说,得不偿失,在Bentley.GeometryNET.dll中的结构体DTransform3d下有TryMirrorPointToPoint镜像方法,方法参数如下:
public struct DTransform3d
{
public static bool TryMirrorPointToPoint(DPoint3d point0, DPoint3d point1, out DTransform3d result);
}
该方法传入两个点,输出一个变换矩阵。
在中国优先社区下,查找该方法参数的含义,point0为镜像平面上的任意一个点,point1为镜像平面法向量上的点,
image.png
现要获得元素A关于过点P垂直于XOZ的平面镜像的元素A1
image.png
测试结果:按照上述参数给定point0,point1,显然不能达到要求,因此该参数含义失效。
正确方式:给定P0,P1,关于镜像平面对称即可。
image.png
特别提示:如P0(3,0,0),P1(7,0,0),需要注意ORD中单位为m,Microstation中单位为Uor,需要将这些点转换成Uor坐标,以免造成这些元素总关于原点对称。
如:输入米制坐标P0(3,0,0,),P1(7,0,0)和Uor坐标P0(3uor,0,0),P1(7uor,0,0)二者相差Uor倍,米制坐标在原点附近,而Uor坐标在实际位置,因此大致关于原点坐标对称。