Вопрос по геометрии :-)

webmaster_Chris

Новичок
Имеем:



Каждая точка трейдера имеет две координаты (x,y) как рассчитать входит ли какая либо точка в пределы этого трейдера или не входит?

ЗЫ: Сейчас считаю тупо.. достраиваю по максимальным значениям до прямоугольника и считаю, но это в данном случае не верно, ведь если относительно B и A точка может входить, то относительно D и скажем B уже быть вне границы... Может кто то поделиться решением проблемы, чего то видимо прогулял в школе :)
 

webmaster_Chris

Новичок
Опа :)

PHP:
Vector3 p0, p1, p2; //три точки плоскости
Vector3 point; //точка, которую мы хотим проверить
bool side = ( (p2 - p0).cross(p1 - p0).dot(point - p0) > 0.0f );
как бы это перевести в PHP...

тааак...

стоп... а оно же просто для точки, а для пространства?..
 

tz-lom

Продвинутый новичок
а в пространстве точка не точка?
либо три нормали посчитай по формуле которую нашёл, либо смени у точки базис на заданный пирамидой и там уже простая проверка на левее/правее линии
 

Dovg

Продвинутый новичок
Где-то писали, что достаточно провести луч от точки в "центр" фигуры.
Строго говоря, куда угодно, лишь бы он пересекал фигуру.
Если по лучу число пересечений со сторонами фигуры будет четное, то точка находится вовне, если нечетное - то внутри.
Пересечение прямых - это система линейных уравнений, которую еще в школе проходят.
 

tz-lom

Продвинутый новичок
Dovg
однако это же надо найти середину прамиды(легко) , и найти пересечение луча со всеми сторонами (не легче чем другие варианты)
в общем случае решение правильное,но оно же неоптимальное как по рассчётам, так и потому что здесь можно сделать упрощение т.к. фигура выпуклая
 
Сверху