Пятница, 24.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Дана точка(x;y;). Треугольник...
Van_der_VlaadДата: Суббота, 18.10.2008, 23:36 | Сообщение # 1
Старый знакомый
Группа: Пользователи
Сообщений: 35
Репутация: 1
Замечания: 0%
Статус: Offline
Дана точка(x;y;). Определить, принадлежит ли она треугольнику, заданному координатами своих вершин
 
AlexanderДата: Воскресенье, 19.10.2008, 02:17 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Давненько я тут не появлялся biggrin .
Quote
Дана точка(x;y;). Определить, принадлежит ли она треугольнику, заданному координатами своих вершин

По-моему этот вопрос уже и на этом форуме был. Как бы то ни было напомню, что в этом случае следует воспользоваться обходом контура. Смотри пункт 7.


Скажем дружно- нафиг нужно!
 
Van_der_VlaadДата: Воскресенье, 19.10.2008, 03:48 | Сообщение # 3
Старый знакомый
Группа: Пользователи
Сообщений: 35
Репутация: 1
Замечания: 0%
Статус: Offline
спасибо за быстрый ответ, но хотелось бы кое что уточнить.

Q = x(y2-y1)+y(x1-x2)+y1*x2-x1*y2

я прописываю эту формулу, где x,y-координаты точки, а x1,y1,x2,y2 - координаты начала и конца прямой(стороны треугольника).
таким образом, у меня в переменной ку получается некое число. далее, как я понял нужно сравнить числа(из переменной ку) для все сторон треугольника. т.е. если все три числа будут или отрицательными или положительными, то точка в треугольнике, иначе вне его.
правильно ли я понял?

 
AlexanderДата: Воскресенье, 19.10.2008, 04:42 | Сообщение # 4
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
правильно ли я понял?

Нет. Если соединить точку (х,у) с каждой из вершин треугольника, то получатся 3 треугольника. Здесь очевидно, что если точка входит в треугольник, то сумма площадей этих треугольников должна быть равна площади исходного треугольника. Но в данной ситуации удобнее вычислить ориентированные площади этих маленьких треугольников. Если они будут одного знака, то точка принадлежит исходному треугольнику. В твоих обозначениях это будет выглядить так: все три выражения удвоенных площадей-
(y2-y1)*(x-x1)-(x2-x1)*(y-y1)
(y3-y2)*(x-x2)-(x3-x2)*(y-y2)
(y1-y3)*(x-x3)-(x1-x3)*(y-y3)
должны быть одного знака.
Другой способ(глупее, но возможно понятнее). Провести прямую через точки (x1,y1) и (x,y). Проверить пересекает ли она отрезок соединяющий точки (x2,y2) и (x3,y3).


Скажем дружно- нафиг нужно!
 
Van_der_VlaadДата: Воскресенье, 19.10.2008, 06:08 | Сообщение # 5
Старый знакомый
Группа: Пользователи
Сообщений: 35
Репутация: 1
Замечания: 0%
Статус: Offline
ммм...кажется понимаю...

var x,y,x1,y1,x2,y2,x3,y3,s1,s2,s3:integer;
begin
readln(x,y); {вводим координаты точки}
readln(x1,y1);
readln(x2,y2); {вводим координаты вершин треугольника}
readln(x3,y3);
s1:=(y2-y1)*(x-x1)-(x2-x1)*(y-y1);
s2:=(y3-y2)*(x-x2)-(x3-x2)*(y-y2); {три выражения удвоенных(стоп, разве удвоенных?) площадей}
s3:=(y1-y3)*(x-x3)-(x1-x3)*(y-y3);
if (s1>0) and (s2>0) and (s3>0) or (s1<0) and (s2<0) and (s3<0)
then writeln('принадлежит треугольнику')
else writeln('net');
end.

вот так?
online2long

 
AlexanderДата: Воскресенье, 19.10.2008, 06:54 | Сообщение # 6
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
стоп, разве удвоенных?

Конечно удвоенных. (y2-y1)*(x-x1)-(x2-x1)*(y-y1) эквивалентно {01}*{12}*sin(012), где {01}*sin(012)=h(высота), а площадь треугольника это ПОЛ основания на высоту.
Quote
вот так?

не совсем:
Quote
if ((s1>0) and (s2>0) and (s3>0)) or ((s1<0) and (s2<0) and (s3<0))

Кстати, если координаты вводить не беспорядочно, а чтоб x возрастал- то можно убрать проверку на отрицательные площади, т.к. обход контура будет строго по часовой стрелке.


Скажем дружно- нафиг нужно!
 
Van_der_VlaadДата: Воскресенье, 19.10.2008, 18:47 | Сообщение # 7
Старый знакомый
Группа: Пользователи
Сообщений: 35
Репутация: 1
Замечания: 0%
Статус: Offline
Спасибо вам большое, не ожидал, что все будет так быстро и с объяснениями)
Также по возможности буду теперь помогать другим участникам форума
Еще раз respect
 
ViRuSДата: Пятница, 28.11.2008, 21:45 | Сообщение # 8
Старый знакомый
Группа: Пользователи
Сообщений: 42
Репутация: 0
Замечания: 0%
Статус: Offline
Quote (Alexander)
а площадь треугольника это ПОЛ основания на высоту.

Я бы так не сказал, это у равнобедренного треугольника половина основания на высоту !!!

А если треугольник разносторонний, там можно площадь по теореме Герона найти.

 
AlexanderДата: Суббота, 29.11.2008, 00:49 | Сообщение # 9
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (ViRuS)
Я бы так не сказал, это у равнобедренного треугольника половина основания на высоту !!!

А если треугольник разносторонний, там можно площадь по теореме Герона найти.


кошмар, я в шоке. Срочно найди учебник по геометрии за шестой класс. Это даже интуитивно должно быть понятно:
1) прямоугольный треугольник ABC с гипотенузой BC, тогда если на гипотенузе построить такой же треугольник, то мы получим прямоугольник со сторонами AB и AC, а стало быть площадью AB*AC. Откуда видно, что площадь одного треугольника равна AB*BC/2.
2) пусть дан произвольный треугольник ABC, с высотой AD. Тогда его можно разбить на два прямоугольных треугольника ABD и BCD, площади которых равны AD*BD/2 и BD*CD/2(см. пункт 1). Стало быть площадь ABC равна AD*BD/2+BD*CD/2=(AD+CD)/2*BD=AC/2*BD, ч.т.д.
З.Ы. А самое забавное, что формула Герона выводится именно из этой.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Суббота, 29.11.2008, 01:08
 
ViRuSДата: Суббота, 29.11.2008, 02:36 | Сообщение # 10
Старый знакомый
Группа: Пользователи
Сообщений: 42
Репутация: 0
Замечания: 0%
Статус: Offline
Alexander, блин, я помню нам училка ещё всё время говорила что половина основания на высоту -это формула тока для равнобедренного треугольника.

Сообщение отредактировал ViRuS - Суббота, 29.11.2008, 02:38
 
AlexanderДата: Суббота, 29.11.2008, 03:26 | Сообщение # 11
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (ViRuS)
Alexander, блин, я помню нам училка ещё всё время говорила что половина основания на высоту -это формула тока для равнобедренного треугольника.

бред, такого нормальный человек не мог сказать. Раз уж ты в этом так уверен, то выведи здесь формулу Герона, без использования этого тождества, уж очень хочется посмотреть. И вообще, что за манера в ответ на конкретное доказательство швыряться левыми фразами типа "я точно знаю", "мне училка сказала", "так звёзды говорят"? Лучше ищи ошибку в моих рассуждениях, а твоя "училка" для меня авторитетом не является. И вообще в математике нельзя никому верить, всё надо выводить, проверять и доказывать самостоятельно, а иначе ты её никогда не поймёшь.


Скажем дружно- нафиг нужно!
 
snaper1993Дата: Суббота, 29.11.2008, 07:17 | Сообщение # 12
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
ViRuS, haha
Quote

это формула тока для равнобедренного треугольника.

Тебе не стыдно такой бред писать, каждый младенец знает что ето для прямоугольного треугольника!


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
AlexanderДата: Суббота, 29.11.2008, 07:44 | Сообщение # 13
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (snaper1993)
ViRuS, haha
Quote

это формула тока для равнобедренного треугольника.

Тебе не стыдно такой бред писать, каждый младенец знает что ето для прямоугольного треугольника!


"no comments".
*вылезая из под стола*


Скажем дружно- нафиг нужно!
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;