c++中两个圆的交点

Intersection points of two circles in c++

本文关键字:两个 c++      更新时间:2023-10-16

让我们在2D:中定义一个圆

struct Vec2D
{
    float x;
    float y;
};
// Assume dot, normalize, length, sum, subtract, and scale to exist.
struct Circle2D
{
    Vec2D center;
    float radius;
};

给定两个圆,需要确定圆之间的0、1或2个交点:

bool circleVsCircleIntersection( const Circle& a, const Circle& b, 
    std::array<std::optional<Vec2D>,2>& intersPos); 

如何确定C++中圆的0、1或2个交点

假设你有一个圆心和它的半径你可以设置一个类似的方程式

(x-x1)²+(y-y1)²=r1²

你可以对两个圆圈都这样做

I  x²-2xx1+x1²+y²-yy1+y1²=r1²
II x²-2xx2+x2²+y²-yy2+y2²=r2²

然后你可以在I中插入II,然后你就可以:)