我正在嘗試以鐵路大亨 3 中實作的方式繪制鐵路。我已經了解了一些完成此操作的模式,但我找不到它們的應用公式。我正在嘗試僅使用兩個點和一些初始方向來構建弧。為簡單起見,假設我只能繪制 0 到 90 度范圍內的路徑。圓弧應始終以“初始方向”的方向開始。我需要一種方法來實作這一點。我試圖在圖紙中描繪這個想法。我猜任何偽代碼都可以。

Python 代碼。也許示例太簡單而無法揭示錯誤,但第一個半圓給出 R=L/2,中心在 M,第二個顯示正確的 C 位置和 R。
from math import hypot, atan2
def arcfromptsdir(sx, sy, ex, ey, dx, dy):
sex = ex - sx
sey = ey - sy
perpx = -sey
perpy = sex
mx = (ex sx) / 2
my = (ey sy) / 2
#equation
#(sex/2 perpx * t )*dx (sey/2 perp.y * t )*dy = 0
p = perpx * dx perpy * dy
if p:
t = -0.5*(sex*dx sey*dx) / p
else:
return None
#centerx, centery, radius
cx = mx perpx * t
cy = my perpy * t
radius = hypot(cx-sx, cy-sy)
arcangle = atan2((sx-cx) * (ey-cy) - (sy-cy) * (ex-cx),
(sx-cx) * (ex-cx) (sy-cy) * (ey-cy))
return (cx, cy, radius, arcangle)
print(arcfromptsdir(0, 0, 2, 0, 0, 1))
print(arcfromptsdir(0, 0, 2, 0, 0.7071, 0.7071))
(1.0, 0.0, 1.0, -3.141592653589793)
(1.0, -1.0, 1.4142135623730951, -1.5707963267948966)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490394.html
上一篇:如何圍繞它的中心旋轉三角形?
