Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нормаль к поверхности

1.9K
10 июня 2007 года
0xf001
96 / / 24.05.2005
 
Код:
double n1[3], n2[3];
BVector tmpn;
n1[0]=x3-x2; n1[1]=y3-y2; n1[2]=z3-z2;
n2[0]=x1-x2; n2[1]=y1-y2; n2[2]=z1-z2;
tmpn.CrossProduct(n1, n2);
tmpn.CopyToDblVec(Result.normal);

Так я вычисляю нормаль к поверхности, заданной тремя точками (x1, y1, z1) (x2, y2, z2) (x3, y3, z3)
 
Код:
void CrossProduct( double vec1[3], double vec2[3] )
    {
        x = vec1[1]*vec2[2] - vec1[2]*vec2[1]    ;
        y = -(vec1[0]*vec2[2] - vec1[2]*vec2[0]) ;
        z = vec1[0]*vec2[1] - vec1[1]*vec2[0]    ;
    }

- функция CrossProduct()

Проблема в следующем: у меня плоскость задается точками:
( -1472 -1472 1600 ) ( -1472 960 1600 ) ( 1344 960 1600 )
Или я что-то не так делаю, или алгоритм вообще не правильный, но нормаль получается что-то вроде:
(0, 0, -6848512)

В чем у меня ошибка? Как правильно вычислить норсаль?
551
10 июня 2007 года
Pavia
357 / / 22.04.2004
Нормальная нормаль. Разве только пронормировать что бы длина была равной еденице.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог