尋找來計算坐落在一條線上 給定距離的線的終點遠點的最快方法:給定一個起點和終點,和距離,計算點沿着一條線
void calculate_line_point(int x1, int y1, int x2, int y2, int distance, int *px, int *py)
{
//calculate a point on the line x1-y1 to x2-y2 that is distance from x2-y2
*px = ???
*py = ???
}
感謝您的答覆,不,這不是功課,只是一些黑客出於 我正常的專業領域。
這是以下建議的功能。它並不接近工作。如果我 計算點每隔5度上的 的圓作爲起點的右上90度的部分,並調用下面與圓的中心爲X2,Y2爲4的距離的函數的結束點是完全錯誤的。它們位於中心的右下方,長度與中心點一樣長。任何人有任何建議?
void calculate_line_point(int x1, int y1, int x2, int y2, int distance)
{
//calculate a point on the line x1-y1 to x2-y2 that is distance from x2-y2
double vx = x2 - x1; // x vector
double vy = y2 - y1; // y vector
double mag = sqrt(vx*vx + vy*vy); // length
vx /= mag;
vy /= mag;
// calculate the new vector, which is x2y2 + vxvy * (mag + distance).
px = (int) ((double) x2 + vx * (mag + (double)distance));
py = (int) ((double) y2 + vy * (mag + (double)distance));
}
我發現在計算器this解決方案,但不完全理解它,任何人都可以澄清?
也許你應該使用花車/雙打,因爲你會得到roundi ng錯誤。這可能是一個問題。 – Lucas
盧卡斯說什麼。此外,您可能在我有錯別字時閱讀我的文章。如果x1y1是原點,則需要x1y1 + vxvy *(mag +距離),而不是x2y2。也就是說,從原點出發,要行進的距離_TO x2y2_加上額外的距離,使用方向X1Y1到X2Y2。雖然我認爲你可能想要重述你的問題。你到底想做什麼?現在的問題似乎更像是一箇中間問題。 – 2009-12-05 02:19:23
[幾何:沿着距離另一點一定距離的線找到一個點!](http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain-距離外之另一點/ 1630886#1630886) –