我在處理如何將線限制爲最大長度時遇到一些困難。假設我有兩個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這是困難的方式。 –