另一个共线点问题。这个问题是,我正在使用整数算法,并且正在寻找精确的共线性,而不是基于模糊epsilon的测试。
使用内联汇编,我可以得到确切的答案:x86乘法指令可访问产品的高低部分,这两者在计算叉积( X - A )时都很重要 B - A );我可以简单地将两个半部分或在一起并测试零。但是我希望有一种方法可以在C语言中实现,那就是:
大致按此顺序。同时,做某事的方法是/不会:
double
我不关心 X 是否超出了 AB AB 段;那只是四个无趣的比较。
我的噩梦场景是必须将每个坐标分量分成两半,并明确地进行长乘法,以便可以跟踪部分乘积中的所有高半部分。 (然后必须明确地进行“随身携带”。)
最佳答案
经过一些比较和简单的检查之后,您可以获得2个正数(x1,y1)
,(x2,y2)
,它们要检查x1*y2==x2*y1
。
您可以使用欧几里得算法来找到x1
和y1
的GCD,然后将它们均按GCM划分。对(x2,y2)
做同样的事情。如果在两种情况下您使用相同的对,则两个 vector 的方向相同。
关于c - 如何确定3个点在Z ^ 2中是否完全共线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9474453/