C# 元素鏡像

實(shí)體編程過(guò)程中,經(jīng)常會(huì)遇到鏡像操作,如果采用三維幾何變換,涉及構(gòu)造復(fù)雜的變換矩陣,對(duì)于鏡像操作來(lái)說(shuō),得不償失,在Bentley.GeometryNET.dll中的結(jié)構(gòu)體DTransform3d下有TryMirrorPointToPoint鏡像方法,方法參數(shù)如下:

public struct DTransform3d
    {
 public static bool TryMirrorPointToPoint(DPoint3d point0, DPoint3d point1, out DTransform3d result);
    }

該方法傳入兩個(gè)點(diǎn),輸出一個(gè)變換矩陣。
在中國(guó)優(yōu)先社區(qū)下,查找該方法參數(shù)的含義,point0為鏡像平面上的任意一個(gè)點(diǎn),point1為鏡像平面法向量上的點(diǎn),


image.png

現(xiàn)要獲得元素A關(guān)于過(guò)點(diǎn)P垂直于XOZ的平面鏡像的元素A1


image.png

測(cè)試結(jié)果:按照上述參數(shù)給定point0,point1,顯然不能達(dá)到要求,因此該參數(shù)含義失效。

正確方式:給定P0,P1,關(guān)于鏡像平面對(duì)稱即可。


image.png

特別提示:如P0(3,0,0),P1(7,0,0),需要注意ORD中單位為m,Microstation中單位為Uor,需要將這些點(diǎn)轉(zhuǎn)換成Uor坐標(biāo),以免造成這些元素總關(guān)于原點(diǎn)對(duì)稱。
如:輸入米制坐標(biāo)P0(3,0,0,),P1(7,0,0)和Uor坐標(biāo)P0(3uor,0,0),P1(7uor,0,0)二者相差Uor倍,米制坐標(biāo)在原點(diǎn)附近,而Uor坐標(biāo)在實(shí)際位置,因此大致關(guān)于原點(diǎn)坐標(biāo)對(duì)稱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容