簡體   English   中英

將線從2點延伸到一定長度

[英]Extending a line to a certain length from 2 points

我正在使用SFML和Box2D庫在C ++中開發平台游戲。 玩家有一支手槍,我正在嘗試射擊。

Box2D具有RayCast函數,該函數需要兩個位置來檢查它們之間的交集。 我有播放器位置和鼠標位置。 當前,這兩者之間的線路檢查並不理想。

我需要第三個位置,即手槍射擊結束的位置。 玩家位置與第三位置之間的距離應始終為1000。

數學很簡單。 考慮以下行,A和B是您的已知點(A是該段的起點,即您的玩家),C是您要查找的第三點:

   A-----------B------------C
(Xa,Ya)     (Xb,Yb)      (Xc,Yc)

現在的距離:

AB = sqrt( (Xb - Xa)² + (Yb - Ya)² )
AC = 1000

交叉乘以得到Xc:

AB -> Xb - Xa
AC -> Xc - Xa

Xc - Xa = AC * (Xb - Xa) / AB
Xc = Xa + (AC * (Xb - Xa) / AB)

同樣, Yc = Ya + (AC * (Yb - Ya) / AB)

請注意,如果C在A和B之間,這也是可行的,唯一(明顯)的限制是,如果A和B是同一點( AB = 0 ,不傳遞方向信息,並且正確地除以零)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM