Making Smoother the Curve fit to Airfoil data using cscvn function

9 vues (au cours des 30 derniers jours)
atharva aalok
atharva aalok le 28 Août 2022
Commenté : atharva aalok le 30 Août 2022
Hello I am using the following code to fit a curve to the following data
% Get the coordinates of the airfoil - airfoiltools.com - http://airfoiltools.com/airfoil/details?airfoil=goe802-il
GOE802_DiscretePoints = readtable('GOE802_DiscretePoints.csv', 'NumHeaderLines', 1);
GOE802_DiscretePoints = GOE802_DiscretePoints{:, :};
% Get the x and y coordinates of the airfoil for the upper and lower surfaces
x_lower_original = GOE802_DiscretePoints(:, 1);
y_lower_original = GOE802_DiscretePoints(:, 2);
x_upper_original = GOE802_DiscretePoints(:, 3);
y_upper_original = GOE802_DiscretePoints(:, 4);
x_all = [x_lower_original; flip(x_upper_original)];
y_all = [y_lower_original; flip(y_upper_original)];
x = x_all';
y = y_all';
select = [1:17, 17, 19:34]; % Repeating trailing point to make a sharp corner there
x = x(select);
y = y(select);
curve = cscvn( [x; y] );
fnplt(curve)
axis equal
How do I make it smoother for example I would like to break this boundary into N points where N>>n, say N = 100,000.
This is especially needed at the front tip where it should be smooth but is currently sharp.
  1 commentaire
atharva aalok
atharva aalok le 28 Août 2022
Modifié(e) : atharva aalok le 29 Août 2022
If Mr. John D Errico you are seeing this:
I am also trying to use your Interparc file from file exchange:
% Get the coordinates of the airfoil - airfoiltools.com - http://airfoiltools.com/airfoil/details?airfoil=goe802-il
GOE802_DiscretePoints = readtable('GOE802_DiscretePoints.csv', 'NumHeaderLines', 1);
GOE802_DiscretePoints = GOE802_DiscretePoints{:, :};
% Get the x and y coordinates of the airfoil for the upper and lower surfaces
x_lower_original = GOE802_DiscretePoints(:, 1);
y_lower_original = GOE802_DiscretePoints(:, 2);
x_upper_original = GOE802_DiscretePoints(:, 3);
y_upper_original = GOE802_DiscretePoints(:, 4);
x_all = [x_lower_original; flip(x_upper_original)];
y_all = [y_lower_original; flip(y_upper_original)];
x = x_all';
y = y_all';
select = [1:17, 19:34]; % Repeating trailing point to make a sharp corner there
x = x(select);
y = y(select);
xyint = interparc(5000,x,y,'spline');
figure(10);
axis equal
grid on
hold on
plot(x,y,'bo',xyint(:,1),xyint(:,2),'r-');
How do I get a sharp corner at the end?

Connectez-vous pour commenter.

Réponse acceptée

John D'Errico
John D'Errico le 28 Août 2022
I saw your question. You don't need to direct a question at me.
However, it appears you are asking how to get a sharp corner at the END? Where, at x==1? You explicitly put that point in the middle of your curve, then used a spline to interpolate it.
There might appear to be two corners in that airfoil. One at x==1, and another between x=0.0125 and 0.025. There clearly is not a corner at x==0.
But at x == 1, the curve is not even continuous, with two distinct y values at x==1.
GOE802_DiscretePoints = readtable('GOE802_DiscretePoints.csv', 'NumHeaderLines', 1);
GOE802_DiscretePoints = GOE802_DiscretePoints{:, :};
x_all = [flip(GOE802_DiscretePoints(:, 3));GOE802_DiscretePoints(:, 1)];
y_all = [flip(GOE802_DiscretePoints(:,4));GOE802_DiscretePoints(:, 2)];
inddrop = @(n,ind) setdiff(1:n,ind);
xy = interparc(1000,x_all(inddrop(34,18)),y_all(inddrop(34,18)),'spline');
plot(xy(:,1),xy(:,2))
So what sharp corner might you have thought should be there?
  3 commentaires
atharva aalok
atharva aalok le 29 Août 2022
I think I could go with the following solution:
Use the interparc function to make a finer discretization.
Fit a smoothing spline function to it.
Calculate at equally spaced x vector values.
Can this be done directly using the cscvn function by any chance?
atharva aalok
atharva aalok le 30 Août 2022
After thiking about my above comment, I think its a horrible idea because then near the Leading Edge (x == 0) there would be way lesser points discretizing the curve since the slop is higher at that point than at other locations on the airfoil. Whereas, it should be the other way there should be way more points at x == 0 because of the highly curved nature (Lower radius of curvature).

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by