Вычислить нормальные векторы для этого профиля - PullRequest
0 голосов
/ 17 сентября 2018

Приведенный набор данных координат XY в матрице 61x2 для точек профиля.Как бы мне создать нормальные векторы вдоль каждой точки аэродинамического профиля?Я уже подготовил профиль:

Picture of the airfoil.

1 Ответ

0 голосов
/ 17 сентября 2018

Давайте предположим, что ваш профиль закрыт.

Чтобы вычислить нормали в каждой точке, вы можете усреднить нормали для каждого сегмента.

Это должно решить проблему с задним фронтом ...

Полагаю, ваши данные x, y

xtmp1 = [x, x(1)]
ytmp1 = [y, y(1)]
xtmp2 = [x(end), x]
ytmp2 = [y(end), y]
nx =   (diff(ytmp1)+diff(ytmp2))/2.0
ny =  -(diff(xtmp1)+diff(xtmp2))/2.0

nx будут содержать x-компонент вашего нормального значения, а ny будут содержать y-компонент вашего обычного

конечно, вы можете нормализовать результат, если вы хотите, чтобы нормали равной длины

ntmp = 1.0 ./ sqrt(nx.*nx+ny.*ny)
nx = nx .* tmp
ny = ny .* tmp

Как и предполагалось, вы также можете нормализовать нормали каждого сегмента и затем усреднить как таковые

xtmp1 = [x, x(1)]
ytmp1 = [y, y(1)]
xtmp2 = [x(end), x]
ytmp2 = [y(end), y]
nxF =   diff(ytmp1)    
nyF =  -diff(xtmp1)
nxB =   diff(ytmp2)
nyB =  -diff(xtmp2)
ntmp = 1.0 ./ sqrt(nxF.*nxF+nyF.*nyF)
nxF = nxF .* tmp
nyF = nyF .* tmp
ntmp = 1.0 ./ sqrt(nxB.*nxB+nyB.*nyB)
nxB = nxB .* tmp
nyB = nyB .* tmp
nx = (nxF+nxB)/2.0
ny = (nyF+nxB)/2.0

И затемнормализуйте nx и ny

...