Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 21.11.2015, 13:22   #1
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
Репутация: 75
По умолчанию Лежит ли точка на прямой

Если, к примеру, указаны 3 точки координат, x,y,z. Как понять, что отрезок, проведенный от x до z, пройдет через y? Или не пройдет. Алгоритм дайте, пожалуйста.

Последний раз редактировалось Аватар; 21.11.2015 в 13:34.
dimon_snake вне форума   Ответить с цитированием
Старый 21.11.2015, 13:33   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,900
Репутация: 6688
По умолчанию

Уравнение прямой, проходящей через две точки, можешь написать? Вот если третья удовлетворяет этому уравнению, тогда сам знаешь что
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 21.11.2015, 13:56   #3
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
Репутация: 75
По умолчанию

Мне, собственно, уравнение и надо
dimon_snake вне форума   Ответить с цитированием
Старый 21.11.2015, 14:00   #4
Dvoishnik
Участник клуба
 
Регистрация: 12.02.2011
Сообщений: 808
Репутация: 295
По умолчанию

в этой теме достаточно подробно рассказали про уравнение прямой даже я понял
Dvoishnik вне форума   Ответить с цитированием
Старый 21.11.2015, 14:29   #5
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
Репутация: 75
По умолчанию

Ага, спасибо. Только вопрос: Во всех случаях работает, кроме как, если корды равняются нуля, выдает ошибку. Хотя если координаты x=(0:0), y=(1;1), z=(2:2) ю Тогда при делении на ноль выдает ошибку. Что делать?
dimon_snake вне форума   Ответить с цитированием
Старый 21.11.2015, 14:40   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,829
Репутация: 5617
По умолчанию

Цитата:
Тогда при делении на ноль выдает ошибку
Вы что-то не на то делите.
Формула может давать деление на ноль, только если X1=X2 (это вертикальная прямая), либо когда (Y1=Y2) (это когда горизонтальная прямая)
Эти частные случаи нужно обрабатывать отдельно.

в вашем случае прямая не параллельна ни одной из осей координат, поэтому в знаменателе нуля быть не должно.
показывайте свой код!
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 21.11.2015, 14:47   #7
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
Репутация: 75
По умолчанию

Код:
var 
xmet,ymet,xdom,ydom,xyn,yyn:integer;
fi,fo:text;
begin
Assign(fi,'a3.txt');
Assign(fo,'a33.txt');
reset(fi);
Rewrite(fo);
while not eof(f) do begin
Read(fi,xmet,ymet,xdom,ydom,xyn,yyn);
if ymet=ydom+(xmet-xdom)*(yyn-ydom)/xyn-xdom then write(fo,'YES') else Write(fi,'NO');
Readln(fi);
Writeln(fo);
end;
Close(fo);
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 21.11.2015 в 14:52.
dimon_snake вне форума   Ответить с цитированием
Старый 21.11.2015, 14:54   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,829
Репутация: 5617
По умолчанию

вы делите на xyn
а надо делить на разность xyn-xdom

скобки поставьте
Код:
 ymet=ydom+(xmet-xdom)*(yyn-ydom)/(xyn-xdom)
ну и я бы проверку написал, что xyn не равен xdom
в этом частном случае надо по другому проверять...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 22.11.2015, 20:38   #9
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
Репутация: 75
По умолчанию

Спасибо, очень помогли
dimon_snake вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


23:02.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.