2

我有几百分。连接它们给了我几百架飞机。我需要控制法线向量的方向,这样我总是从建筑物外面看这个平面。

这里有几点。

XYZ=[1,26.7801084079290,10.9279762852855,5.90125567150161;
1,26.7801084079290,10.6329762852855,5.90125567150161;
1,26.7801084079290,10.6329762852855,7.78125567150161;
1,26.7801084079290,10.9279762852855,7.78125567150161;
1,26.7801084079290,10.9279762852855,5.90125567150161;
2,31.2001083983270,10.9279762852855,5.89675567150161;
2,31.2001083983270,10.6329762852855,5.89675567150161;
2,31.2001083983270,10.6329762852855,7.77675567150161;
2,31.2001083983270,10.9279762852855,7.77675567150161;
2,31.2001083983270,10.9279762852855,5.89675567150161;
2,31.2001083983270,10.9279762852855,5.89675567150161;]

用最小二乘法拟合平面给了我以下参数

1   1 0 0 26.78  % [plane number, n, d]
2   1 0 0 31.2

绘制这些点

在此处输入图像描述

当我从建筑物的外部向内部看时,2 号飞机还可以。但是我怎样才能改变平面 1 的方向。它向我显示了建筑物内的法线方向。它应该是相反的方向。

注意:我有数百个平面,所以我需要一些系统的方法来让这些平面法线在正确的方向上。

%------------------------已编辑-------------- ------------------%

% 对于顺时针和逆时针 % 我得到相同的结果

XYZ=[1,26.7801084079290,10.9279762852855,7.78125567150161;
    1,26.7801084079290,10.6329762852855,7.78125567150161;
    1,26.7801084079290,10.6329762852855,5.90125567150161;
    1,26.7801084079290,10.9279762852855,5.90125567150161;        
    2,26.7801084079290,10.6329762852855,5.90125567150161;
    2,26.7801084079290,10.6329762852855,7.78125567150161;
    2,26.7801084079290,10.9279762852855,7.78125567150161;
    2,26.7801084079290,10.9279762852855,5.90125567150161; ]

在此处输入图像描述

4

1 回答 1

1

您可以使用一般方程的 D 项确定一个点是否位于平面的后面

  N.P0 + D0 = 0 => D0 = - N.P0 (dot product) 

其中 P0 是平面内的一个点,N 是法线

如果你用其他点(P1)计算得到(D1),如果D1>D0意味着P1落后于P0。

如果建筑物是凸面的,则可以很容易地计算出 P1。

其他方法是确保生成平面的点按顺时针(或逆时针)顺序

于 2013-04-29T12:13:48.637 回答