Показать сообщение отдельно
Старый 25.12.2013, 22:15
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
1) Вообще плоскость должна задаваться 3 точками. 4 могут не образовать плоскость. Давайте считать что у нас есть 3 точки: A, B, C
2) Создадим вектора AB и AC (оба соответственно лежат в плоскости, так как соединяют вершины, лежащие на этой плоскости)
3) Возмем cross-product от AB и AC (это третий вектор, который точно перпендикулярен и AB и AC). Что такое cross-product и как его считать можно нагуглить. Так вот, помимо прочего cross-product будет нормалью плоскости (то есть перпендикулярен любой прямой, лежащей в плоскости)
4) Проверим, что обе точки отрезка лежат по одну сторону относительно плоскости (зная нормаль и координаты это можно посчитать. Координаты - это у нас точка A, так как и AB и AC, и cross-product выходят из нее и направлены в разные стороны). Как считать - я честно не помню. Но опять же можн найти.
5) Если в пункте 4 выяснилось что обе точки нашего отрезка лежат по одну сторону от плоскости, значит отрезок плоскость не пересекает.
6) Все готово, дело за малым - осталось лишь найти пересечение прямой, на которой лежит отрезок, и плоскости. Все данные у нас есть. Решение, опять же, можно найти.

ЗЫ
Извините что даю только теорию, но я совсем давно этим занимался. Кстати, когда занимался, я все что мне нужно было находил здесь: http://www.enlight.ru/faq3d/content.htm
__________________
...вселенская грусть