java - 三点共线及其他关于点的算法中的精度问题

查看:367
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆