2013-04-29 3 views
2

У меня есть несколько сотен точек. Подключение их дает мне несколько сотен самолетов. Мне нужно управлять направлением нормального вектора, так что я всегда смотрю на этот самолет вне здания.Управление направлением нормального вектора, matlab

Некоторые моменты.

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;] 

установки плоскости с методом наименьших квадратов дает мне folloing параметры

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

черчения эти точки

enter image description here

Как я смотрю снаружи внутрь здания, самолет номер 2 в порядке. Но как я могу изменить направление плоскости 1. Это показывает мне нормальное внутри здания. Это должно быть направление oppsite.

Примечание: У меня есть сотни самолетов, поэтому мне нужен системный способ получить эти нормальные плоскости в правильном направлении.

% ----------------------- Отредактировано ---------------------- ---------------------------------%

% Для по часовой стрелке и против часовой стрелки % Я получаю одинаковые результат

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; ] 

enter image description here

ответ

1

Вы можете определить, если точка находится позади плоскости с термином D общего уравнения

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

где P0 точка внутри плоскости и N является нормальным

, если вы сделаете расчеты с другой точкой (P1), чтобы получить (D1), если D1> D0 означает, что P1 позади P0.

P1 можно легко вычислить, если здание выпукло.

Другой подход заключается в обеспечении того, что точки, которые создают самолеты, в порядке по часовой стрелке (или против часовой стрелки)

+0

@ Blau пожалуйста, см отредактированы. – Shahgee

Смежные вопросы