» Главная
eXcode.ru » Статьи » Алгоритмы » Геометрия
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 10





Хлеборезка

Услуги по печати на пленке. Предложение техобслуживания.

merpasa.ru


Картины с кристаллами сваровски

Адреса точек продаж. Интернет-магазин подарков.

eurosuvenir.ru




Нахождение точки пересечения двух отрезков





{
Программа, которая находит точку пересечения двух
отрезков на плоскости, заданных парами координат.

Для 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.
Рейтинг: 0/10 (0)
Посмотреть все анекдоты

 
eXcode.ru » Статьи » Алгоритмы » Геометрия