Показать сообщение отдельно
Старый 06.02.2011, 11:18   #8
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: 360 Градусов

1. прямая линия. уравнение вида y(x)=kx+b
2. два параметра, две заданных точки
y1=k*x1+b
y2=k*x2+b
Есть исключение-вертикальная линия
С точки зрения матаматики более точно было бы ax+by+c=0
Получаются 2 уравнения с 3 неизвестными, но они решаются.

Второй вариант-сделать вектор из первой точки во вторую.
Процедура даёт координаты точки(тебе ведь точка нужна?) на векторе, на расстоянии K от x1,y1
procedure xy_point(x1,y1,x2,y2,k:integer);
var L,mn:real;
x,y:real;
begin
//находим длину вектора
L:=sqrt(sqr(x1-x2)+sqr(y1-y2));
//смотрим во сколько раз длина больше нужной
mn:=K/L;
x:=x1+(x2-x1)*mn;
y:=y1+(y2-y1)*mn;
//х и у - координаты точки, делай с ними что хочешь)
end;

Инструкция:
запусти несколько раз, увеличивая k - точка полетит от x1,y1 до (и дальше тоже) x2,y2. При отрицательном К полетит в другую сторону.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (06.02.2011)