相关疑难解决方法(0)

如何检测两个线段相交的位置?

如何确定两条线是否相交,如果它们相交,在x,y点处是什么?

geometry line-intersection

519
推荐指数
17
解决办法
41万
查看次数

我该如何进行浮点比较?

我正在编写一些代码,其中包含以下内容:

double a = SomeCalculation1();
double b = SomeCalculation2();

if (a < b)
    DoSomething2();
else if (a > b)
    DoSomething3();
Run Code Online (Sandbox Code Playgroud)

然后在其他地方我可能需要做平等:

double a = SomeCalculation3();
double b = SomeCalculation4();

if (a == 0.0)
   DoSomethingUseful(1 / a);
if (b == 0.0)
   return 0; // or something else here
Run Code Online (Sandbox Code Playgroud)

简而言之,我有很多浮点数学正在进行,我需要对条件进行各种比较.我无法将其转换为整数数学,因为在这种情况下这样的事情毫无意义.

我以前读过浮点比较可能不可靠,因为你可以做这样的事情:

double a = 1.0 / 3.0;
double b = a + a + a;
if ((3 * a) != b)
    Console.WriteLine("Oh no!");
Run Code Online (Sandbox Code Playgroud)

简而言之,我想知道:我如何可靠地比较浮点数(小于,大于,相等)?

我使用的数字范围大致是从10E-14到10E6,所以我确实需要使用小数字和大数字.

我已将此标记为语言无关,因为无论我使用何种语言,我都对如何实现此目标感兴趣.

language-agnostic floating-point comparison

73
推荐指数
4
解决办法
6万
查看次数

计算两条线的交点

我有动态生成的动画线,我希望在线撞到另一条线时检测到.我正在尝试实现一些基本的线性代数来获得线的方程,然后求解x,y,但结果是不稳定的.在这一点上,我只测试两条线,这意味着我应该得到一个交叉点,但我得到两条线.我只是想确保我的数学运算正常,我应该在其他地方寻找问题.

function collision(boid1, boid2) {
    var x1 = boid1.initialX, y1 = boid1.initialY, x2 = boid1.x, y2 = boid1.y, x3 = boid2.initialX, y3 = boid2.initialY, x4 = boid2.x, y4 = boid2.y;

      slope1 = (y1 - y2)/(x1 - x2);
      slope2 = (y3 - y4)/(x3- x4);

      //console.log("slope1:"+slope1);
  //console.log('x2:'+x2+' y2:'+y2);

    if(slope1 != slope2){
        var b1 = getB(slope1,x1,y1);
        var b2 = getB(slope2,x3,y3);

        if(slope2 >= 0){
            u = slope1 - slope2;
        }else{
            u = slope1 + slope2;
        }

        if(b1 >= 0){
            z = b2 - b1; …
Run Code Online (Sandbox Code Playgroud)

javascript linear-algebra

7
推荐指数
3
解决办法
1万
查看次数