| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Нормаль к плоскости |
| Автор: DragonFire 9.12.2006, 17:50 |
| Вобщем вот в чем задача: у нас есть 3 точки, образующие плоскость. Необходимо найти коордаты вектора нормали к этой плоскости в общем случае - тоесть не в конкретной точке а вообще. Суть в том что у нас есть 3 координаты вектора нормали и мы можем приложить этот вектор к любой точки плоскости и получится вертор нормали. Извините, язык может быть кривой, но задача вроде как несложная, просто я это только начал в институте проходить. Знаю уравнение плоскости Ax+By+Cz+D=0, знаю как определители считаются, а алгоритм придумать сам не могу)) Направьте на путь истинный. |
| Автор: Sartorius 9.12.2006, 17:54 |
| n =[AB , BC] (для точек A B и C) ЗЫ AB, BC - вектора. [, ] векторное произведение |
| Автор: DragonFire 9.12.2006, 18:00 |
| Верторное произведение векторов AB и BC? А как это в координатах считается? Так чтоли: | i j k | AB*BC=| AB.x AB.y AB.z | | BC.x BC.y BC.z | и отсюда находим искомые i,j,k равные i=N.x j=N.y k=N.z так? |
| Автор: Dottik 9.12.2006, 18:03 |
| http://algolist.manual.ru/maths/geom/equation/plane.php |
| Автор: Sartorius 9.12.2006, 18:06 |
| DragonFire, да, определитель правильный |
| Автор: DragonFire 9.12.2006, 18:10 |
| Dottik, по-моему через это уравнение можно только проверить, является вектор нормалью к плоскости, но не найти его координаты, а до второго способа не догнал сходу)) Sartorius, ну а i, j и k и будут искомыми координатами вектора нормали так? |
| Автор: Dottik 9.12.2006, 18:15 |
| Ax + By + Cz + D = 0 ( A/sqrt(A*A+B*B+C*C), B/sqrt(A*A+B*B+C*C), C/sqrt(A*A+B*B+C*C)) чем не вектор нормали? |
| Автор: DragonFire 9.12.2006, 18:19 | ||
| Dottik, круто, толко не понял откуда это берется, а разобраться то хочется)) Ведь на сколько я понял, x,y,z это не координаты вектора нормали и почему нужно делать на длинну вектора? Тогда уж Nx=A Ny=B Nz=C из статьи той, и будут равны:
|
| Автор: Dottik 9.12.2006, 18:27 | ||
это для уравнения плоскости которая проходит через 3 точки. Делить на длину - чтобы получить еденичный вектор нормали (обычно его используют). |
| Автор: DragonFire 9.12.2006, 18:33 | ||
| Совсем запустался)) про длинну понял, все круто и умно очень)) Только я не понял, чему у тебя равны A,B и C в этой формуле:
У меня же есть как раз координаты 3х точек, задающьх плоскость. |
| Автор: DragonFire 9.12.2006, 18:53 |
| Так я и не получил простого вразумительного ответа. |
| Автор: Aloha 9.12.2006, 19:47 |
DragonFire![]() |
| Автор: DragonFire 9.12.2006, 21:04 |
| Aloha, вот спасибо!!! Достойный итог всей прошедшей теме... Обо всем этом было сказано, но теперь все на ладони. Я думаю многим эта тема поможет в будущем) |
| Автор: DragonFire 17.2.2007, 09:57 |
| тема закрыта |