c ++根据另外2个点计算2个点

c++ calculating 2 points based off 2 other points

好的,所以我正在用 C++ 制作这个有趣的小游戏,不幸的是我一直在制作 "radar",我被困在这部分

(编辑,我已经有 A & B,我唯一没有的是 C & D

所以我需要做的是计算 CD 的两个点 (2d vector),它们需要像我制作的 lil pic 中那样放置如上所示(抱歉,我知道这很糟糕)。

B 将围绕 A 旋转,所以我需要根据 B 旋转了多少来计算 CD 的位置A。我要创建一个三角形(例如,从 CDDBBA 画一条线)

A可以认为是三角形底线的圆心,这就像万物的底,万物围绕着A旋转,而[=13=的位置]&D需要根据BA旋转了多少来计算。

为此计算创建 lil 函数的最佳方法是什么? 例如

inline float returnDPoint(float A, float B)
{
    float dPoint;
    //calculate point of D based off A & B
    return dPoint;
}


inline float returnCPoint(float A, float B)
{
    float cPoint;
    //calculate point of C based off A & B
    return cPoint;
}

希望我的问题措辞足够好,感谢阅读!

这里计算得到 C:

auto angle = atan2(b.y-a.y,b.x-a.x) + pi/2.0;
auto radius = sqrt((b.y-a.y)*(b.y-a.y)+(b.x-a.x)*(b.x-a.x));
Point C {a.x + radius * cos(angle), a.y +radius * sin(angle)};

由于您正在寻找 90° 的旋转,因此您不需要使用昂贵的函数,例如 atan2sqrt 等。一个简单的替代方法是:

diffx = bx - ax;
diffy = by - ay;

cx = ax - diffy = ax - by + ay;
cy = ay + diffx = ay + bx - ax;

dx = ax + diffy = ax + by - ay;
dy = ay - diffx = ay - bx + ax;