2017-04-13 3 views
1

私はベジェ曲線を作成するためのパイソンコードを持っています。そこからベジェ曲線を作成します。ここでsvgpathtoolsベジェ曲線から座標リストを取得するにはどうすればよいですか?

は私の輸入品です。ここ

import from svgpathtools import Path, Line, CubicBezier 

は私のコードです:

bezier_curve = CubicBezier(start_coordinate, control_point_1, control_point_2, end_coordinate) 
    bezier_path = Path(bezier_curve) 

私はこの曲線を構成する座標のリストを作成したいのですが、documentationのどれも私はありません読書はそれを行うための簡単な方法を与える。 bezier_curveおよびbezier_pathには、開始点、終了点、および制御点のパラメータしかありません。

+0

あなたは「この曲線を構成する座標」とはどういう意味ですか? 'bezier_curve.bpoints()'はタプル '(start_coordinate、control_point_1、control_point_2、end_coordinate)'を返しますが、それはあなたが探しているものではないように聞こえます。 ベジェ曲線は多項式なので、たとえば、3次ベジェ曲線は4つの係数によって完全に決定されます。 詳細については、 https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curvesをご覧ください。 – AndyP

答えて

2

かなり妥当な質問のようです。驚いて答えはありません。私は最近これを自分でしなければならず、その秘密はpoint()です。ここで

が、私はそれが出発点として、あなたの定型を使用して、行ってしまった方法は次のとおりです。

from svgpathtools import Path, Line, CubicBezier 

bezier_curve = CubicBezier(start=(300+100j), control1=(100+100j), control2=(200+200j), end=(200+300j)) 
bezier_path = Path(bezier_curve) 

NUM_SAMPLES = 10 

myPath = [] 
for i in range(NUM_SAMPLES): 
    myPath.append(bezier_path.point(i/(NUM_SAMPLES-1))) 

print(myPath) 

出力:

[(300+100j), (243.8957475994513+103.56652949245542j), (206.72153635116598+113.71742112482853j), (185.1851851851852+129.62962962962962j), (175.99451303155004+150.480109739369j), (175.85733882030178+175.44581618655695j), (181.4814814814815+203.7037037037037j), (189.57475994513032+234.43072702331963j), (196.84499314128942+266.8038408779149j), (200+300j)] 
関連する問題