IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Как узнать принадлежность
kojan
сообщение 25.11.2005 16:05
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


как узнать принадлежит ли точка к треугольнику (находится ли она в нем) или нет!
Зарание спасибо!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
virt
сообщение 26.11.2005 10:35
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


program point_in_treug;
const _eps = 1E-7;
type TPoint = record
x,y : real;
end;

var a,b,c,p : TPoint;
s,s1,s2,s3 : real;

function sq_treug(a,b,c : TPoint) : real;
begin
sq_treug := (a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y)) / 2;
end;

begin
read(a.x,a.y);
read(b.x,b.y);
read(c.x,c.y);
read(p.x,p.y);
s := abs (sq_treug(a,b,c));
s1 := abs (sq_treug(a,b,p));
s2 := abs (sq_treug(a,p,c));
s3 := abs (sq_treug(p,b,c));
if abs (s - s1 - s2 - s3) < _eps then writeln('point is inside the triangle')
else writeln('point is outside the triangle');
end.


функция sq_treug вычисляет ориентированную площадь треугольника. Соответственно если точка p вне треугольника то сумма площадей треугольников abp ,apc ,pbc бедет больше площади abc ,иначе площади будут равны.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 5.03.2006 21:14
Сообщение #3


Гость






Цитата(virt @ 26.11.2005 10:35) *

program point_in_treug;
const _eps = 1E-7;
type TPoint = record
x,y : real;
end;

var a,b,c,p : TPoint;
s,s1,s2,s3 : real;

function sq_treug(a,b,c : TPoint) : real;
begin
sq_treug := (a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y)) / 2;
end;

begin
read(a.x,a.y);
read(b.x,b.y);
read(c.x,c.y);
read(p.x,p.y);
s := abs (sq_treug(a,b,c));
s1 := abs (sq_treug(a,b,p));
s2 := abs (sq_treug(a,p,c));
s3 := abs (sq_treug(p,b,c));
if abs (s - s1 - s2 - s3) < _eps then writeln('point is inside the triangle')
else writeln('point is outside the triangle');
end.

Мона пояснение к сеёму, а то начинающим не особо понятно unsure.gif
 К началу страницы 
+ Ответить 
Гость
сообщение 6.03.2006 19:27
Сообщение #4


Гость






Цитата(Гость @ 5.03.2006 21:14) *

Мона пояснение к сеёму, а то начинающим не особо понятно unsure.gif

а разве если просто сравнить с нулём модуль разности площадей, то это не точнее будет? blink.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
kojan   Как узнать принадлежность   25.11.2005 16:05
Ozzя   http://algolist.manual.ru/maths/geom/belong/poly2d...   25.11.2005 16:19
kojan   Спасибо конечно, но мне там не все понятно, и тмбо...   25.11.2005 20:28
volvo   Поиск: Принадлежность точки многоугольнику   25.11.2005 23:46
kojan   к сожадению я не понимаю этот алгоритм, моет ест ч...   26.11.2005 9:16
virt   program point_in_treug; const _eps = 1E-7; type TP...   26.11.2005 10:35
Гость   program point_in_treug; const _eps = 1E-7; type T...   5.03.2006 21:14
Гость   Мона пояснение к сеёму, а то начинающим не особо ...   6.03.2006 19:27
volvo   virt, уверен, что это будет работать ВСЕГДА? Я - н...   26.11.2005 12:50
virt   уверен ,докажи..   26.11.2005 15:11
virt   там могут быть ошибки только из-за нехватки точнос...   27.11.2005 12:05
nd2   А есть графическое решение сей же задачи? Я знаю ч...   2.03.2006 11:26
volvo   Если знаешь - чего спрашиваешь? А теперь вопрос к...   2.03.2006 11:35
nd2   Если знаешь - чего спрашиваешь? А теперь вопрос ...   2.03.2006 14:18
Hunt666   эта программа имеет недостаточную точность. попроб...   18.09.2006 19:21
volvo   :blink: Running 0 0 1 1 0 1 1.00001 0 point is ou...   18.09.2006 19:27
Hunt666   теперь понял в чем у меня были проблемы не надо ме...   22.09.2006 16:35


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 15:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"