人家不是要得到鼠标的位置,而是要判断运动状态。
假设是判断50个坐标点的运动状态。
第一步先区别绕环运动和直线运动,顺序地取相邻两个
坐标的x,y方向绝对差值,然后加起来。
x:=abs(x1-x2)+abs(x3-x4).....abs(x49-x50)
y:=abs(y1-y2)+abs(y3-y4).....abs(y49-y50)
1.如果x方向的累加值远大于y方向说明是左右运动.
2.如果y方向的累加值远大于x方向说明是上下运动.
3.如果x,y的的累加值相差不远说明是绕环运动。
4.如果x,y的的累加值比较小说明没有运动。
具体多少叫远大于要实际试验了
第二步要区别顺时针绕环和逆时针绕环。主要思想是判断
两点之间斜率的变化。
K 为相邻两点的斜率
k[1]:=(y2-y1)/(x2-x1)....k[49]:=(y50-y49)/(x50-x49)
deasil:=0;anticlockwise:=0;
for i:=2 to 49
if k>k[i-1] then
deasil:=deasil+1
else
anticlockwise:=anticlockwise+1;
1.如果 deasil>>anticlockwise 就是顺时针绕环
2.如果 deasil<<anticlockwise 就是逆时针绕环
3.如果 deasil~=anticlockwise 画8字
这里的坐标系是左上角,如果换成标准的坐标系那么k[1]:=-(y2-y1)/(x2-x1)
判断条件为 if k<k[i-1] then
deasil:=deasil+1
else
anticlockwise:=anticlockwise+1;
要注意计算斜率可能会碰到除0错误。