垂距法压缩数据(c++)

输入十个数据,坐标为(10.10)(20.40)(40.10)(30.100)(50.20)(60.30)(70.0)(90.10)(80.20)(100.50)要求限差为25,输出压缩后的数据

原理
垂距法的算法思想是:每次顺序取曲线上的三个点,计算中间点与其它两点连线的垂线距离d,并与限差D比较。若d<D,则中间点去掉;若d≥D,则中间点保留。然后顺序取下三个点继续处理,直到这条线结束。

大概方法:
点到直线距离可以用公式求出,直线方程,可用两点式求出

1)先求出直线两点式 为 (y-y0)/(y2-y0 )= (x-x0)/(x2-x0) 整理成标准 形式 Ax +By+C =0
手动整理出来公式
程序中,用整理出来的公式,求出 A,B,C

2)运用点到直线距离公式
d =fabs(A x +B y +C) /sqrt(A*A +B*B)
求出第二个点到第一第三个点的距离 <25
剔除第二个点,第一个点不变
否则 保存第一个点 ,新的第一个点为原来的第二个点

3)第三点变成第二点,取下一个点作为第三点
4)继续以上步骤,直到最后一个点为止