圆到圆的交点

时间:2015-10-28 15:02:08

标签: c++ c

我搜索了Google并且可以找到圆圈到圆圈的交叉点,但我没有找到任何方法来判断交叉点是从左边,右边,顶部还是底部。

请告诉我在C或C ++中是如何完成的?

我确实试过这个,但它输出的方面是错误的..

if ( ((dx*dx) + (dy*dy)) < radii * radii) {



    if (Circle2Position.x < Circle1Position.x) {
       // code |= LEFT;



    } else if (Circle2Position.x > Circle1Position.x+Circle1.width) {
       // code |= RIGHT;


    }

    if (Circle2Position.y < Circle1Position.y) {
       // code |= BOTTOM;


    } else if (Circle2Position.y  > Circle1Position.y  + Circle1.height) {

       // code |= TOP;


    }

        }

1 个答案:

答案 0 :(得分:1)

这是一个数学而不是C ++特定的问题。您可以使用向量v = c1 - c2确定象限,该向量是两个圈子中心c1c2之间的差异。然后,根据v的X和Y坐标的符号,您可以说出圆与哪个方向相对。

在C ++中,根据几何相关代码的数量,使用现有的矢量类是有意义的。建议的内容取决于您的项目及其领域......