Сталкивалась с подобным вопросом =))
Отложить точку, если правильно поняла суть, можно так: сначала узнаем k и b уравнения прямой оси симметрии (т.к. y=kx+b), затем находим k и b прямой, проходящей через заданную точку и перпендикулярной оси симметрии, координате х искомой точке присваиваем значение длины перпендикуляра, умноженного на два. Вторую координату из уравнения прямой.
Получить всё это можно преобразованием трех формул:
1) Уравнение прямой из данной точки с данным k: y=k(x-x3)+y3; (x3,y3)-координаты точки. 2) через две точки: (y-y2)/(y2-y1)=(x-x2)/(x2-x1). 3) зависимость угловых коэффициентов перпендикулярных п-х: k1*k2=-1.
Код
uses crt, Graph;
var i, gd, gm : integer;
x , y: array[1..4] of integer; {координаты 1,2-прямой, 3-данной точки, 4-искомой точки}
ptd : string;
k1,b1,k2,b2 : real; {k и b 1-данной прямой, 2-прямой,ей перпендикулярной}
begin
clrscr;
for i:= 1 to 3 do
begin
write('x',i,'= '); read(x[i]);
write('y',i,'= '); read(y[i]);
end;
gm:= 2; gd:= detect; ptd:='';
InitGraph(gd,gm,ptd);
Line(x[1], y[1], x[2], y[2]);
k1:= (y[2]-y[1])/(x[2]-x[1]);
b1:= -1*((x[1]*y[2])/(x[2]-x[1])-(x[2]*y[1])/(x[2]-x[1]));
k2:= -1/((y[2]-y[1])/(x[2]-x[1]));
b2:= -k2*x[3]+y[3];
y[3]:= trunc(k2*x[3] + b2);
x[4]:= trunc((b2-b1)/(k1-k2));
x[4]:= x[4]+(x[4]-x[3]);
y[4]:= trunc(k2*x[4] + b2);
PutPixel(x[3],y[3],10);
PutPixel(x[4],y[4],10);
readkey;
end.
Хотя, мне кажется, это какой-то нерациональный алгоритм