http://blog.csdn.net/happy__888/article/details/315762
斜率一样的点需要去除;代码如下
/// <summary>
/// 顺时针:第3个点在 1,2点线段方向 左边(返回值 大于 0 ),第2个点为 阴角;第3个点在 1,2点线段方向 右边(返回值 小于 0 ),第2个点为 阳角;返回值 为 0 ,3点同一条线
/// 逆时针:第3个点在 1,2点线段方向 左边(返回值 大于 0 ),第2个点为 阳角;第3个点在 1,2点线段方向 右边(返回值 小于 0 ),第2个点为 阴角;返回值 为 0 ,3点同一条线
/// 返回值 为 0:3个点 在一条直线上,可利用此功能 去除斜率一样的多余点
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="c"></param>
/// <returns></returns>
float left_right(PointF a, PointF b, PointF c)
{
a.X -= c.X; a.Y -= c.Y;
b.X -= c.X; b.Y -= c.Y;
return a.X * b.Y - a.Y * b.X;
}
注意输入数据的正负 决定 放大缩小 ,另外还与坐标顺逆时针有关