-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUntitled_airfoil_rotation.m
More file actions
81 lines (65 loc) · 1.6 KB
/
Copy pathUntitled_airfoil_rotation.m
File metadata and controls
81 lines (65 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
clear all;
close all;
format;
XY = [
1.0000 0.0013
0.9500 0.0147
0.9000 0.0271
0.8000 0.0489
0.7000 0.0669
0.6000 0.0814
0.5000 0.0919
0.4000 0.0980
0.3000 0.0976
0.2500 0.0941
0.2000 0.0880
0.1500 0.0789
0.1000 0.0659
0.0750 0.0576
0.0500 0.0473
0.0250 0.0339
0.0125 0.0244
0.0000 0.0000
0.0125 -0.0143
0.0250 -0.0195
0.0500 -0.0249
0.0750 -0.0274
0.1000 -0.0286
0.1500 -0.0288
0.2000 -0.0274
0.2500 -0.0250
0.3000 -0.0226
0.4000 -0.0180
0.5000 -0.0140
0.6000 -0.0100
0.7000 -0.0065
0.8000 -0.0039
0.9000 -0.0022
0.9500 -0.0016
1.0000 -0.0013];
figure(1)
grid minor;
hold on;
axis equal;
L_proj = plot_airfoil_projection(XY);
alpha_min = fmincon(@(alpha) rotate_airfoil(alpha, XY), 0);
alpha = alpha_min;
R = [cosd(alpha), -sind(alpha); sind(alpha), cosd(alpha)];
XY_rot = (R*XY')';
L_proj_rot = plot_airfoil_projection(XY_rot);
[L_proj, L_proj_rot]
function [L_proj, XY] = rotate_airfoil(alpha, XY)
R = [cosd(alpha), -sind(alpha); sind(alpha), cosd(alpha)];
XY = (R*XY')';
[mn, imn] = min(XY(:,2));
[mx, imx] = max(XY(:,2));
L_proj = mx - mn;
end
function [L_proj] = plot_airfoil_projection(XY)
[mn, imn] = min(XY(:,2));
[mx, imx] = max(XY(:,2));
L_proj = mx - mn;
plot(XY(:,1), XY(:,2));
plot([XY(imn,1), XY(imn,1)], [mn, mn+L_proj], 'r--');
plot([XY(imn,1), XY(imx,1)], [mx, mx], 'r--')
end