java - 三点共线及其他关于点的算法中的精度问题
本文介绍了java - 三点共线及其他关于点的算法中的精度问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在计算三点共线的算法中, 尝试了计算任意两个直线的斜率相同和采用海伦公式计算面积为0的做法.
遇到的问题如下:
没法精确的表示长度, 比如说(1,1),(2,2)之间的距离为根号2(程序里不能表达这样的数).这样计算面积的时候得到的结果并不为0;
解决方案
一、求出三个点构成的三角形的面积:
1 | x1 y1 1 |
s3 = - | x2 y2 1 |
2 | x3 y3 1 |
二、求出三个点占用矩形的面积:
s4 = (max(x1, x2, x3) - min(x1, x2, x3)) x (max(y1, y2, y3) - min(y1, y2, y3))
三、以矩形为参照,判断三角形面积是否为0:
abs(s3) < s4 x 10^-10
这篇关于java - 三点共线及其他关于点的算法中的精度问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文