我在处理如何将线限制为最大长度时遇到一些困难。假设我有两个SDL_Point的p1
和p2
构成一条线,p2
由鼠标位置决定,而p1
是恒定的。我有一个函数可以计算线的长度,并检查该长度是否大于最大长度。如果它大于最大长度,我想缩放线条以使角度相同,效果将会是p2
已缩放以符合最大长度标准。如何调整由两点定义的线的大小,使其受C++中的最大线长限制
我使用这种方法来计算距离:
double Foo::CalculateDistance(SDL_Point p1, SDL_Point p2)
{
int xd = p2.x- p1.x;
int yd = p2.y - p1.y;
return sqrt(xd*xd + yd*yd);
}
SDL_Point Foo::CalculatePosition(int mousePosX, int mousePosY)
{
SDL_Point p2;
p2.x = mousePosX;
p2.y = mousePosY;
lineLength = (int) CalculateDistance(p2,p1);
if (lineLength > MAX_LINE_LENGTH)
{
// Buggy code
p2.x /= lineLength;
p2.y /= lineLength;
}
return p2;
}
对此有何指导,将不胜感激!
提示:寻找*角*,然后'p2.x'和'p2.y'可以通过'sin'和'cos'来计算。 – usr2564301
@Jongware这是困难的方式。 –