![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
WiZarDX |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 81 Пол: Мужской Репутация: ![]() ![]() ![]() |
vobsem dany 2 otrezka s koordinatami
(x1 y1) (x2 y2) - 1yj (x3 y3) (x4 y4) - 2oj nado ustanovit peresekajutsia oni ili net. rassmatrivat vse varianty kakije mogut byt. + zelatelno poluciat tocku esli oni peresekajuca v vide (x, y) ocen interesno uznat vase mnenije В-общем, даны 2 отрезка с координатами: (x1 y1) (x2 y2) - 1ый (x3 y3) (x4 y4) - 2ой надо установить пересекаются они или нет. Рассматривать все варианты, какие могут быть. + желательно получать точки если они пересекаются в виде (x, y) очень интересно узнать ваше мнение Вам очень удобно читать свои тексты? А об остальных Вы не удосужились подумать? Или здесь роботы, которым все равно, что и как написано? В следующий раз пишите по-русски (и НЕ латинскими буквами) Сообщение отредактировано: volvo - |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Совершенно стандартное решение:
type
vec2 = record
x, y: real;
end;
function IntersectLineLine(pt11, pt12, pt21, pt22: vec2;
var pretpt: vec2): boolean;
var
d, d1, d2, t1, t2: real;
const
eps = 10E-5;
begin
IntersectLineLine := false;
d := (pt12.y - pt11.y)*(pt21.x - pt22.x) -
(pt21.y - pt22.y)*(pt12.x - pt11.x);
if abs(d) < eps then exit;
d1 := (pt12.y-pt11.y)*(pt21.x-pt11.x)-(pt21.y-pt11.y)*(pt12.x-pt11.x);
d2 := (pt21.y-pt11.y)*(pt21.x-pt22.x)-(pt21.y-pt22.y)*(pt21.x-pt11.x);
t1:=d1/d;
t2:=d2/d;
if not ((t1<=1)and(t1>=0)and(t2>=0)and(t2<=1)) then exit;
pretpt.x := pt11.x+(pt12.x-pt11.x)*t2;
pretpt.y := pt11.y+(pt12.y-pt11.y)*t2;
IntersectLineLine := true
end;
const
p1: vec2 = (x:1; y:2); { начало первого отрезка }
p2: vec2 = (x:4; y:1); { конец первого отрезка }
p3: vec2 = (x:0; y:0); { начало второго отрезка }
p4: vec2 = (x:2; y:4); { конец второго отрезка }
var res: vec2;
begin
if intersectLineLine(p1, p2, p3, p4, res) then begin
write('yes. intersection point:');
writeln(' x = ', res.x:0:0, ' y = ', res.y:0:0)
end
else writeln('no')
end.
|
WiZarDX |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 81 Пол: Мужской Репутация: ![]() ![]() ![]() |
бошойе спасибо протестим ![]() да я бы с радостю писал русскими буквами! толко вот в компутерном центре РУ нету ![]() Теперь пользуемся кнопкой TRANSLIT Сообщение отредактировано: volvo - |
![]() ![]() |
![]() |
Текстовая версия | 29.04.2025 12:17 |