你的前提已知条件是什么?是图形识别不是图像识别吧?
判断直线逐点计算斜率就可以了。
判断三角形,如果是三个点就可以了;如果是四个点,第一和第四点重合也算。
至于矩形,先计算点数,四个点或五个点都可以(首尾点相同),然后逐三个点计算斜率,是直角就行。
以下是计算斜率的函数,返回是“弧度”,供参考:
//参数为两个点的坐标
function GetDirection(X1,Y1,NX,NY : double)
ouble;
var
BufLen,Direction : Double;
begin
BufLen := Sqrt(Sqr(X1-NX)+Sqr(Y1-NY));
if (Abs(NX-X1)< 10e-300) then begin
if (Abs(Y1-NY)< 10e-300) then begin
//等于没有移动}
end
else begin
if (Y1-NY)>0 then Direction := PI/2
else Direction := 3*PI/2;
end;
end
else begin
if ArcTan((Y1-NY)/(NX-X1))>0 then begin
if (Sin((Y1-NY)/BufLen)>0) then
Direction := ArcTan((Y1-NY)/(NX-X1))
else
Direction := ArcTan((Y1-NY)/(NX-X1))+PI;
end
else begin
if (Sin((Y1-NY)/BufLen)>0) then
Direction := ArcTan((Y1-NY)/(NX-X1))+PI
else begin
Direction := ArcTan((Y1-NY)/(NX-X1));
if (Direction = 0) and (X1 > NX) then Direction := PI;
end;
end;
end;
Result := -Direction;
end;