Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Как определить попала ли точка в треугольник |
Автор: BOB4uK 16.6.2008, 17:55 |
Есть треугольник координаты вершин которого известны! И есть точка с координатами Х и У! Как определить попала ли точка в треугольник? |
Автор: Jorjio 16.6.2008, 18:04 |
Геометрия Плоскость определена 3-мя прямыми. Идешь далле к принадлежности точки плоскости. Думаю изобретать велосипед не стоит, открой справочник по математике. |
Автор: BOB4uK 16.6.2008, 18:47 |
Пожалуйста пишите по существу, а не размазано, например пользуйся гуглем... |
Автор: jonie 16.6.2008, 19:34 |
Возможны два варианта взаимного расположения точки и плоскости, ограниченной кривой: либо точка принадлежит плоскости, либо нет. Три точки задают плоскость тогда, и только тогда, когда они попарно различны, и не лежат на одной прямой точка= (x,y,z) обозначим плоскость как : $(xp_i, yp_i, zp_i), i=1..3$ уравнение плоскости : $ ax+by+cz = d $ где \begin{eqnarray*} a &=& (yp_2 -yp_1 )(zp_3 -zp_1 ) - (yp_3 -yp_1 )(zp_2 -zp_1 ); \\ b &=& -(xp_2 -xp_1 )(zp_3 -zp_1 ) + (xp_3 -xp_1 )(zp_2 -zp_1 ); \\ c &=& (xp_2 -xp_1 )(yp_3 -yp_1 ) - (xp_3 -xp_1 )(yp_2 -yp_1 ); \\ d &=& xp_1 a+yp_1 b+zp_1 c \end{eqnarray*} остается только проверить удовлетворяет ли (x,y,z) приведенному уравнению. |
Автор: BOB4uK 19.6.2008, 04:19 |
Если чесно нифига не понятно! а треугольник плоский, координата Z не нужна! |
Автор: Mayk 19.6.2008, 06:32 | ||
Доступное описание алгоритма есть в Кормене et al. Кстати неалгоритмиеческое решение на WinAPI может подразумевать использование ф-ций CreatePolygonRgn + PtInRegion. |
Автор: BOB4uK 19.6.2008, 15:24 | ||
Это где? |
Автор: Walker 20.6.2008, 08:03 | ||
А по существу - в "Центр помощи" с такими вопросами и наездами. http://smiles2k.net/angry_smiles/index.html В Google, кстати, ответ на этот вопрос обнаруживается в течение пяти секунд. Хинт - точка находится в треугольнике, если площадь исходного треугольника равна сумме площадей треугольников, образованных каждой из сторон треугольника и "проблемной" точкой. Всё! ABC - треугольник, D - точка SABC = SABD + SACD + SBCD. Задача решается комбинацией трёх функций. 1. Сравнение площадей. 2. Нахождение площади по трём сторонам по http://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0_%D0%93%D0%B5%D1%80%D0%BE%D0%BD%D0%B0. 3. Нахождение длины отрезка по двум точкам. Функции приведены в последовательности, выводимой из логического рассуждения. Удачи! ИМХО, тему можно закрывать! |
Автор: Dmi3ev 20.6.2008, 12:12 | ||||||
Walker правильно говорит, что-то типа этого
создал класс точки MyPoint вот текст mypoint.h
создал класс отрезка вот текст mysegment.h
я все делал быстро, но должно работать |
Автор: Mayk 20.6.2008, 12:55 |
http://www.ozon.ru/context/detail/id/2429691/ |
Автор: BOB4uK 20.6.2008, 16:02 |
Спасибо! |