|
|
Нахождение точки пересечения двух отрезков
{
Программа, которая находит точку пересечения двух
отрезков на плоскости, заданных парами координат.
Для Borland Pascal 7.0
Olegis, 02.2005
}
var
x1,y1,x2,y2,x3,y3,x4,y4: real;
buf: text;
procedure inp;
begin
assign(buf, ′input.txt′); reset(buf);
readln(buf, x1, y1, x2, y2);
readln(buf, x3, y3, x4, y4);
close(buf);
end;
procedure outp(param: shortint; xp, yp: real);
begin
assign(buf, ′output.txt′); rewrite(buf);
case param of
-1: write(buf, ′otrezki ne peresekayutca′);
0: write(buf, ′otrezki kollinearny′);
1: write(buf, xp:0:3, ′ ′,yp:0:3);
end;
close(buf);
halt;
end;
procedure solve;
var a,b,c,d,e,f,
dt,ds,det,t,s: real;
begin
a:=x2-x1;
b:=x3-x4;
c:=x3-x1;
d:=y2-y1;
e:=y3-y4;
f:=y3-y1;
det:=a*e-b*d; if det=0 then outp(0,0,0);
dt:=c*e-f*b;
ds:=a*f-c*d;
t:=dt/det;
s:=ds/det;
if (0<=s) and (s<=1)
and(0<=t) and (t<=1) then
outp(1, x1*(1-t)+x2*t, y1*(1-t)+y2*t)
else outp(-1,0,0);
end;
BEGIN
inp;
solve;
END.
|
К началу статьи
| Добавил: LedWorm | Дата публикации: 2005-05-30 22:36:35 |
| Рейтинг статьи: | 5.00 [Голосов 2] | Кол-во просмотров: 11122 |
Комментарии читателей Всего комментариев: 2
| 2011-05-10 05:59:51 |
| Дима |
Попробовал вставить в свою программу. Попробую. Коли не забуду - напишу, как прошло.
|
| 2005-12-13 16:31:54 |
| romodos |
Чётко, кратко, стильно. Просто математика какая-то.
|
|
|
|
|
|
|
Какой жанр комп. игр вам нравится?
Стратегии | | 24% (55) | Action | | 17% (39) | RPG | | 36% (82) | RTS | | 1% (3) | Симуляторы | | 8% (18) | Квесты | | 7% (15) | Логические | | 3% (6) | Другой | | 5% (11) |
Проголосовало: 229
|
|
Сантехник - администратор сервера фирмы Sun.
|
|