3

円弧の中心(x、y、z)と直径、および開始点と終了点がわかっている場合、開始点と終了点の間の値を生成するにはどうすればよいですか?

4

1 に答える 1

10

あなたの「弧」は、2つの既知の点の間の曲線の円形近似のように聞こえます。あなたの投稿の「直径」(半径の2倍)という言葉からこれを推測します。これを行うには、から始まる円をパラメータ化します 。中心、2つの端点、および半径が与えられると、次のように曲線の一部を概算できます。(t) -> (x,y)t0..2pi

from numpy import cos,sin,arccos
import numpy as np

def parametric_circle(t,xc,yc,R):
    x = xc + R*cos(t)
    y = yc + R*sin(t)
    return x,y

def inv_parametric_circle(x,xc,R):
    t = arccos((x-xc)/R)
    return t

N = 30
R = 3
xc = 1.0
yc = 3.0

start_point = (xc + R*cos(.3), yc + R*sin(.3))
end_point   = (xc + R*cos(2.2), yc + R*sin(2.2))


start_t = inv_parametric_circle(start_point[0], xc, R)
end_t   = inv_parametric_circle(end_point[0], xc, R)

arc_T = np.linspace(start_t, end_t, N)

from pylab import *
X,Y = parametric_circle(arc_T, xc, yc, R)
plot(X,Y)
scatter(X,Y)
scatter([xc],[yc],color='r',s=100)
axis('equal')
show()

ここに画像の説明を入力してください

この例は2Dのみですが、曲線は常に2点と中心の間の平面に沿っているため、簡単に適応できます。

于 2012-07-04T15:58:08.230 に答える