已知向量a(x1,y1,z1)、b(x2,y2,z2)
判断垂直,需要点积为0。公式为:
a*b=x1x2+y1y2+z1z2=0在Revit中,您可以编写以下代码:
XYZ a = new XYZ(1, 0, 0);
XYZ b = new XYZ(0, 1, 0);
var result = a.DotProduct(b);判斷平行,需要比值相同。公式為:
x1/x2=y1/y2=z1/z2=k在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());
又或者,您可以編寫以下代碼,通過法向量點乘來判斷:
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中,由於double運算,會導致出現偏差,所以,您要通過1或者-1來判斷平行的話,可能還需要通過絕對值減1,然後判斷是否小於0.00001。
祝您用餐愉快。
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【证明向量平行(Revit二次开发)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态
