Есть ли способ векторизовать алгоритм Де Кастельжо в NumPy?Python

Программы на Python
Ответить
Anonymous
 Есть ли способ векторизовать алгоритм Де Кастельжо в NumPy?

Сообщение Anonymous »

Алгоритм Де Кастельжо используется для интерполяции кривой Безье и представляет собой рекурсивную (или итеративную) процедуру для уменьшения количества линейных сегментов до тех пор, пока не останется только один и интерполяция не даст одну точку. Вот в итеративной форме:

Код: Выделить всё

import numpy as np
import matplotlib.pyplot as plt

def de_casteljau(cp, t):
interpolated = cp.copy()
for i in range(len(cp)-1):
p_from = interpolated[:-1]
p_to = interpolated[1:]
interpolated = t * p_from + (1-t) * p_to
return interpolated[0,:]

cp = np.array([[268, 113], [293, 226], [284, 277], [206, 146]])
t = np.linspace(0, 1, num=50, endpoint=True)
curve = np.array([de_casteljau(cp, u) for u in t])

plt.plot(curve[:,0], curve[:,1])
plt.plot(cp[:,0], cp[:,1])
plt.show()
Есть ли способ вычислить массив кривых из массива t, используя только векторизованные операции NumPy вместо списка понимания?
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... m-in-numpy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»