Модуль должен обеспечивать реализацию четырех-вершиной выпуклой фигуры, обладая теми же возможностями, что и объект TRect, описанный в модуле objects.
{$mode objfpc} unit u7; interface type TMyPoint=record x,y:double; end;
TLine=record// хранит коэффициенты прямой типа y=k*x+c k,c:double; end;
TApexes=record// хранит вершины фигуры a1,a2,a3,a4:TMyPoint; end;
TPFourPoints=^TFourPoints; TFourPoints=object Points:TApexes; constructor assign(a1,a2,a3,a4:TMyPoint);//инициализируем Points function contains(p:TMyPoint):boolean;// провеяем входит ли точка в объект end;
implementation type ProcPosition=Function(line:TLine; point:TMyPoint):boolean;
function Above(line:TLine; point:TMyPoint):boolean; far;//проверяем правда что точка point выше прямой line begin Above:=(point.x*line.k+line.c)>point.y; end;
function Below(line:TLine; point:TMyPoint):boolean; far;//проверяем правда что точка point ниже прямой line begin Below:=(point.x*line.k+line.c)<=point.y; end;
function FindLine(p1,p2:TMyPoint):TLine;//находим коэффициенты прямой по двоим точкам var line:TLine; begin line.k:=(p2.x-p1.x)/(p2.y-p1.y); line.c:=p1.y-line.k*p1.x; FindLine:=line; end;
function PosRelToLine(line:TLine; point:TMyPoint; pos:ProcPosition):boolean;// совмещаем Above и Below begin PosRelToLine:=pos(line,point); end;
constructor TFourPoints.assign(a1,a2,a3,a4:TMyPoint);//инициализируем Points begin Points.a1:=a1; Points.a2:=a2; Points.a3:=a3; Points.a4:=a4 end;
function TFourPoints.contains(p:TMyPoint):boolean;// провеяем входит ли точка в объект begin with Points do begin if (PosRelToLine(FindLine(a1,a2),p,below)) and //!!!Ошибка!!! Error: Wrong number of parameters specified (PosRelToLine(FindLine(a2,a3),p,above)) and (PosRelToLine(FindLine(a3,a4),p,above)) and (PosRelToLine(FindLine(a4,a1),p,below)) then contains:=true else contains:=false; end; end; end.
Я ж не должен там ставить параметры, что ему не нравится?
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.