C# 元素镜像

实体编程过程中,经常会遇到镜像操作,如果采用三维几何变换,涉及构造复杂的变换矩阵,对于镜像操作来说,得不偿失,在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坐标在实际位置,因此大致关于原点坐标对称。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容