Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.10;
Скачать: CL | DM;

Вниз

Нормали   Найти похожие ветки 

 
Gerda ©   (2002-10-11 11:07) [0]

Дарова мастера, я с таким вопросом:
имеется поверхность (3,4-уголиник) мне нужно зная координаты (абсцис,ординат и аппликат) наити нормаль к ней.
Как это сделать (формула), а то я искал, ничего подходящего пока нету.
Заранее благодарен.


 
Sapersky_   (2002-10-11 11:21) [1]

function PlaneNormal(Const v1, v2, v3: TD3DVector): TD3DVector;
Var va, vb, vc : TD3DVector;
begin
va:=VectorSub(v1,v2);
vb:=VectorSub(v3,v2);
vc:=VectorCrossProduct(va, vb);
Result:=VectorNormalize(vc);
end;

VectorCrossProduct - векторное произведение:

function VectorCrossProduct(const v1, v2: TD3DVector) : TD3DVector;
begin
result.x := (v1.y*v2.z) - (v1.z*v2.y);
result.y := (v1.z*v2.x) - (v1.x*v2.z);
result.z := (v1.x*v2.y) - (v1.y*v2.x);
end;

VectorNormalize - нормализация, вычисление длины и деление всех координат на неё.
VectorSub - вычитание векторов.



 
Gerda ©   (2002-10-11 11:30) [2]

Sapersky_, пасиба. Я бацаю прогу ( http://delphi.mastak.ru/cgi-bin/download.pl?look=1&id=1025527080&n=1) без использования Директа, и Опэна, и проч... так мне нужна сама формула (из курса аналитической геометрии чтоли) расчета нормали.....мож поможеш ??


 
k   (2002-10-11 14:24) [3]

всмотрись в мессагу Sapersky_ ты не видишь формулу?

есть треуголник, задаваемый векторами v1, v2, v3.
найдем 2 стороны
va = v1 - v2;
vb = v3 - v2;
т.е. наш треуг построен на этих двух векторах

векторное произведение дает vc = va X vb - вектор, перпендикулярный пл-ти треуг-а.
чтоб получить нормаль осталось привести его к единичной длине

n = vc/|vc|

|vc|(скаляр, число - длина вектора vc) = sqrt(sqr(x) + sqr(y) + sqr(z))

такие дела.
удачи




Страницы: 1 вся ветка

Текущий архив: 2003.03.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
6-30005
puNK
2003-01-20 20:17
2003.03.10
Мыльницы


1-29889
apple11
2003-02-26 15:27
2003.03.10
Что такое Stream и для чего они нужны?


1-29821
Swolota
2003-02-26 11:41
2003.03.10
Чтение из ини-файла


3-29760
Андрю-ХА!
2003-02-18 18:00
2003.03.10
Ошибка 9476


3-29702
Alex Chu
2003-02-18 14:42
2003.03.10
Может ли кто помочь с триггером?