bezier и matplotlib

Здравейте, започвам от http://matplotlib.sourceforge.net/users/path_tutorial.html . Търся функция за получаване на всички точки безие с фиксирана честота на дискретизация.

Това, което търся е нещо подобно:

interpolate(t, samplingrate)

където t е параметърът на кривата между 0 и 1, честотата на дискретизация е дължината на списъка с върнати точки.

в страницата с ръководството http://matplotlib.sourceforge.net/api/path_api.html?highlight=bezier и с някои dir() извиквания не намирам нищо полезно

Малко помощ?


person nkint    schedule 29.03.2011    source източник


Отговори (1)


Обектът Path не съхранява точките по крива на Безие, а само минималните параметри, от които се нуждае. Написването на собствена функция не трябва да е трудно. Какво ще кажете за нещо подобно, следвайки изразите от wikipedia.

def quadBrezPoints(P0, P2, P1, nSamples):
    ans = numpy.zeros((nSamples,2))
    for i in xrange(nSamples):
        t = (i+0.0)/nSamples
        ans[i,0] = (1-t)**2 * P0[0] + 2*(1-t)*P1[0] + t**2 * P2[0]
        ans[i,1] = (1-t)**2 * P0[1] + 2*(1-t)*P1[1] + t**2 * P2[1]
return ans

Ако искате криви на Безие с n степен, просто променете функцията.

person highBandWidth    schedule 29.03.2011