Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

курсач / SquareFinder

.pas
Скачиваний:
17
Добавлен:
08.03.2015
Размер:
2.12 Кб
Скачать
unit SquareFinder;

interface

uses DynStruct;

function FindSquares( listRoot : pPointNode ) : pSquareNode;

implementation

const
eps = 0.001;

function vecLength( v : tPoint ) : real;
begin
result := sqrt( v.X * v.X + v.Y * v.Y );
end;

function vecOrth( v1, v2 : tPoint ) : boolean;
begin
result := ( v1.X * v2.X + v1.Y * v2.Y ) = 0;
end;

function FindSquares( listRoot : pPointNode ) : pSquareNode;
var tz1, tz2, tz3, tz4 : pPointNode;
v1, v2, v3, v4 : tPoint;
v1l, v2l, v3l, v4l : real;
Squares : pSquareNode;
begin
Squares := InitSquareList;

tz1 := listRoot^.Next;
while tz1 <> nil do
begin

tz2 := listRoot^.Next;
while tz2 <> nil do
begin
v1.X := tz2^.Point.X - tz1^.Point.X;
v1.Y := tz2^.Point.Y - tz1^.Point.Y;
v1l := vecLength( v1 );
if ( v1l > eps ) then
begin
tz3 := listRoot^.Next;
while tz3 <> nil do
begin
v2.X := tz3^.Point.X - tz2^.Point.X;
v2.Y := tz3^.Point.Y - tz2^.Point.Y;
v2l := vecLength( v2 );

if ( vecOrth( v1, v2 ) ) and ( v1l - v2l <= eps ) then
begin
tz4 := listRoot^.Next;
while tz4 <> nil do
begin
v3.X := tz4^.Point.X - tz3^.Point.X;
v3.Y := tz4^.Point.Y - tz3^.Point.Y;
v3l := vecLength( v3 );

if ( vecOrth( v2, v3 ) ) and ( v2l - v3l <= eps ) then
begin
v4.X := tz4^.Point.X - tz1^.Point.X;
v4.Y := tz4^.Point.Y - tz1^.Point.Y;
v4l := vecLength( v4 );

if ( vecOrth( v3, v4 ) ) and ( v3l - v4l <= eps ) then
begin
AddSquareNode( Squares, tz1^.Point, tz2^.Point, tz3^.Point, tz4^.Point );
end;

end;

tz4 := tz4^.Next;
end;
end;

tz3 := tz3^.Next;
end;
end;
tz2 := tz2^.Next;
end;
tz1 := tz1^.Next;
end;

result := Squares;
end;

end.
Соседние файлы в папке курсач
  • #
    08.03.2015260 б18Project1.dpr
  • #
    08.03.20152.16 Кб17Project1.dsk
  • #
    08.03.2015876 б17Project1.res
  • #
    08.03.20154.14 Кб17Project1.~dsk
  • #
    08.03.20151.57 Кб17SquareFinder.dcu
  • #
    08.03.20152.12 Кб17SquareFinder.pas
  • #
    08.03.20152.26 Кб18SquareFinder1.txt
  • #
    08.03.20159.28 Кб17Unit1.dcu
  • #
    08.03.201551 б17Unit1.ddp
  • #
    08.03.20152.44 Кб17Unit1.dfm
  • #
    08.03.20155.75 Кб18Unit1.pas