Я использую формулу Безье для определения контрольных точек кривой, которая создается из 6 точек, выбранных из облака точек (COP). COP описывает кривизну профиля (верхний изгиб).
Согласно формуле и литературе контрольные точки (n = 5) описывают верхний изгиб профиля. Кажется, что в формуле где-то есть ошибка , потому что кривая Безье не соответствует верхнему изгибу, генерируемому облаком точек.
Есть ли у кого-нибудь идея улучшить формулу? Я не могу найти ошибку ...
спасибо, и я с нетерпением жду вашего ответа, лучше
import numpy as np
from numpy.linalg import inv
# start and end point of airfoil
p0 = .030
p5 = 0
# x position of knot
f = 3.48
g = 7.65
h = 8.06
j = 5.75
# ratio
u = 0.04
v = .2376
w = .4670
r = .699862
c = f-((1-u)**5*p0+u**5*p5)
d = g-((1-v)**5*p0+v**5*p5)
e = h-((1-w)**5*p0+w**5*p5)
k = j-((1-r)**5*p0+r**5*p5)
A = np.array([[5*(1-u)**4*u, 10*(1-u)**3*u**2, 10*(1-u)**2*u**3, 5*(1-u)*u**4],
[5*(1-v)**4*v, 10*(1-v)**3*v**2, 10*(1-v)**2*v**3, 5*(1-v)*v**4],
[5*(1-w)**4*w, 10*(1-w)**3*w**2, 10*(1-w)**2*w**3, 5*(1-w)*w**4],
[5*(1-r)**4*r, 10*(1-r)**3*r**2, 10*(1-r)**2*r**3, 5*(1-r)*r**4]])
inverse = np.linalg.inv(A)
b =([c,d,e,k])
print(np.dot(inverse,b))
введите описание изображения здесь
Если хотите, я могу распределить координаты профиля ...