我試圖找到一種方法,一個特定的距離延長線段。例如,如果我有一個從10,10開始延伸到20,13的線段,並且我希望將長度延長3,那麼我如何計算新的端點。我在這個例子10.44,所以如果我想知道從10,10與13.44長度會是什麼計算以最快的方式將新的端點獲得通過的sqrt(一^ 2 + B^2)的長度是多少?我也知道斜坡,但不知道在這種情況下是否能幫助我。延長線段特定距離
延長線段特定距離
回答
可以通過找到你的線段的單位矢量做到這一點,將其縮放到所需的長度,然後翻譯用該載體您的線段的端點。假設你的線段的端點是A
和B
,你想終點B
後,延長(與lenAB
是線段的長度)。
#include <math.h> // Needed for pow and sqrt.
struct Point
{
double x;
double y;
}
...
struct Point A, B, C;
double lenAB;
...
lenAB = sqrt(pow(A.x - B.x, 2.0) + pow(A.y - B.y, 2.0));
C.x = B.x + (B.x - A.x)/lenAB * length;
C.y = B.y + (B.y - A.y)/lenAB * length;
如果你已經有了,你可以計算出新點的斜率:我有一段時間沒有這樣做
x = old_x + length * cos(alpha);
y = old_y + length * sin(alpha);
所以把它當作一粒鹽。
其中alpha = atan2(y-old_y,x-old_x) –
感謝您的幫助,此解決方案似乎比較低的解決方案稍慢。我感謝幫助,這也有效。 – goodgulf
我只是在這個偶然發現自己尋找此之後,並給你一個徹頭徹尾的現成的解決方案,你可以看看標準Vector類中的代碼(任何語言)和櫻桃選擇你需要的部分,但我最終使用一個,代碼如下所示:
vector.set(x,y);
vector.normalize();
vector.multiply(10000);// scale it by the amount that you want
祝你好運!
我認爲這是最優雅的答案 –
- 1. 特定距離內的點
- 2. 距離某一點的線段距離上的點
- 3. 直線上的特定距離上的點C
- 4. 使用MapKit生成一條具有特定距離的路線
- 5. 具有確定距離的空間線
- 6. 與延長片段
- 7. 選擇特定距離內的點
- 8. 在特定距離拋出物品
- 9. 確定距離
- 10. 如何通過Haversine計算短距離和長距離?
- 11. 在jQuery中爲長距離短距離設置動畫位置
- 12. 序言,對角線距離
- 13. PHP計算距離 - 在線
- 14. 顯示路線的距離
- 15. 計算距離邊線
- 16. 如何找到距離線段指定距離的標題上的第一個點?
- 17. 指向大圓段距離
- 18. 你如何找到距離某條線的給定垂直距離上的點?
- 19. 按特定距離查找距離目標位置最近的位置
- 20. 確定距離MySQL
- 21. 遠離其他人輸入特定的距離
- 22. 延長軸線上oxyplot
- 23. Python:計算點距離N的距離尺寸線
- 24. 找到距離get.shortest.paths()的路線的距離
- 25. 使用地理位置確定距離固定點的距離
- 26. Igraph:獲取最長的測地距離
- 27. 向長/緯e6添加metresc距離
- 28. 距離Cell塔的距離
- 29. 如何在GLSL中實現從點到線段的距離?
- 30. 三維點到多義線段算法的距離
這不是一個編程問題,但簡單的數學,這你就必須擴大你的代碼。 – Constantinius
@Constantinius它仍然是一個算法問題,只是一個基於數學(計算機科學是非常沉重的)。 – corsiKa
@glowcoder:我不同意。如果不瞭解下面的數學問題,他就沒有任何問題可以解決他的任務。另一方面,如果他熟悉數學,將它翻譯成程序代碼是一項微不足道的任務。 – Constantinius