Помощь - Поиск - Пользователи - Календарь
Полная версия: Небольшая Геометрическая задачка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nulbok
А смысл вот в чём. Рисуются на экране произвольно 2 отрезка. В случае, если отрезки пересекаются , точка персечения становится центром окружности , с радиусом (неважно каким).

Собственно проблема в том, как узнать пересекаются ли прямые, точнее как узнать координаты точки персечения. Поиском искал. Ничего толкового не нашел. Заранее спасибо.
Bokul
А как задаются отрезки? Уравнением, координатами его концов?
nulbok
Координатами его концов. Используя LineTo короче ..

blink.gif Waiting 4 replay.
volvo
Цитата(nulbok @ 27.11.2006 0:06)
как узнать координаты точки персечения.

AlgoList -> Пересечение: Прямая(отрезок) и прямая (отрезок)
( теория... Будут проблемы с реализацией - Welcome back smile.gif )
nulbok
Спс..

Я конечно не специолист.. но мне кажется , что там отрезки задаются уравнением.. а мне нуна координатами..
volvo
Какие же уравнения? 4 точки, координаты x1, x2, x3, x4, y1, y2, y3, y4 - через них все выводится... blink.gif

const
n = 4;
x: array[1 .. 4] of integer = (3, 5, 3, 6);
y: array[1 .. 4] of integer = (3, 7, 7, 1);

var
Z, Ua, Ub: real;
pX, pY: real;

begin
Z := (y[4]-y[3])*(x[2]-x[1]) - (x[4]-x[3])*(y[2]-y[1]);
Ua := ((x[4]-x[3])*(y[1]-y[3]) - (y[4]-y[3])*(x[1]-x[3]))/z;
{ Ub := ((x[2]-x[1])*(y[1]-y[3]) - (y[2]-y[1])*(x[1]-x[3]))/z; }

pX := x[1] + Ua*(x[2] - x[1]);
pY := y[1] + Ua*(y[2] - y[1]);
writeln('X = ', pX:10:5, ' ; Y = ', pY:10:5);
end.
(не забудь проверить принадлежность Ua, Ub интервалу, о чем говорится в статье...)
nulbok
Может мне кто-нибудь пояснить.. что ЭТО делает.. smile.gif Что такое Х и У.. и вообще.. unsure.gif
Michael_Rybak
Учитывая, что всё, что у тебя есть - координаты концов отрезков, а всё, что тебе надо - координаты точки их пересечения, может быть ты сам догадаешься, что такое X и Y ? ;)
nulbok
... нифига не понял, как найти точку пересечения, но всё равно спа... вот щас писал и понял smile.gif спасибо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.