tft每日頭條

 > 生活

 > 怎麼處理邊緣相交的線revit

怎麼處理邊緣相交的線revit

生活 更新时间:2024-11-10 16:51:44

已知向量a(x1,y1,z1)、b(x2,y2,z2)

一、判斷垂直

判斷垂直,需要點積為0。公式為:

a*b=x1x2 y1y2 z1z2=0

怎麼處理邊緣相交的線revit(怎麼判斷2個向量之間是平行還是垂直)1

在Revit中,您可以編寫以下代碼:

XYZ a = new XYZ(1, 0, 0); XYZ b = new XYZ(0, 1, 0); var result = a.DotProduct(b);

怎麼處理邊緣相交的線revit(怎麼判斷2個向量之間是平行還是垂直)2

二、判斷平行

判斷平行,需要比值相同。公式為:

x1/x2=y1/y2=z1/z2=k

怎麼處理邊緣相交的線revit(怎麼判斷2個向量之間是平行還是垂直)3

在Revit中,您可以編寫以下代碼:

XYZ a = new XYZ(1, 0, 0); //判斷向量平行,且方向相同 XYZ f = new XYZ(20, 0, 0); var result4 = a.Normalize().IsAlmostEqualTo(f.Normalize()); //判斷向量平行,但方向相反 XYZ g = new XYZ(-120, 0, 0); var resultg = a.Normalize().IsAlmostEqualTo(-g.Normalize());

怎麼處理邊緣相交的線revit(怎麼判斷2個向量之間是平行還是垂直)4

又或者,您可以編寫以下代碼,通過法向量點乘來判斷:

XYZ a = new XYZ(1, 0, 0); //判斷向量平行,當f4的值為1時,表示向量平行且同向 XYZ f = new XYZ(20, 0, 0); var result4 = a.Normalize().IsAlmostEqualTo(f.Normalize()); var f4 = a.Normalize().DotProduct(f.Normalize()); //判斷向量平行,當g5的值為-1時,表示向量平行但方向相反 XYZ g = new XYZ(-120, 0, 0); var result5 = a.Normalize().IsAlmostEqualTo(-g.Normalize()); var g5 = a.Normalize().DotProduct(g.Normalize());

怎麼處理邊緣相交的線revit(怎麼判斷2個向量之間是平行還是垂直)5

在Revit中,由於double運算,會導緻出現偏差,所以,您要通過1或者-1來判斷平行的話,可能還需要通過絕對值減1,然後判斷是否小於0.00001。

祝您用餐愉快。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved