/
wmigor
/
z-plane
Обзор
Документация
Войти
/
wmigor
/
z-plane
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/AirfoilPlot.cpp
68 строк
2 KB
wmigor
Параметры элементов лопасти пропеллера
12 авг 2026, 10:40
12 авг 2026, 10:40
29c26ef
Код
Авторство
О чём код?
#include "AirfoilPlot.h" #include <asim/Airfoil.h> #include <asim/Fuselage.h> #include <fstream> using namespace asim; void plotAirfoil() { std::ofstream file("data.csv", std::ios::trunc); if (!file.is_open()) return; file << "angle cl cd\n";// cm cl_30 cd_30 cm_30\n"; Airfoil airfoil; airfoil.baseSettings.zeroLiftAngle = glm::radians(-5.25); airfoil.baseSettings.dragMin = 0.01; airfoil.baseSettings.liftSlope = 5.1; Airfoil::WingData data; data.flapFraction = 0.4; data.aspectRatio = 0.0; // airfoil.baseSettings.stallAngleMax = glm::radians(10.0); // airfoil.baseSettings.stallAngleMin = glm::radians(-10.0); auto degree = -180.0; while (degree <= 180.0) { data.angle = glm::radians(degree); data.flapDeflection = glm::radians(0.0); // airfoil.smallUavFactor = 0.0; auto flap0 = airfoil.calculate(data); data.flapDeflection = glm::radians(30.0); // airfoil.smallUavFactor = 1.0; auto flap30 = airfoil.calculate(data); file << degree << " " << flap0.lift << " " << flap0.drag << "\n"; // file << degree << " " << flap0.lift << " " << flap0.drag << " " << flap0.pitch << " "; // file << flap30.lift << " " << flap30.drag << " " << flap30.pitch << "\n"; degree += 1; } // Fuselage::Config config; // config.endRadius = 1.0; // config.startRadius = 1.0; // config.midRadius = 1.0; // config.midPoint = 0.0; // config.length = 1.0; // config.axialFriction = 0.02; // Fuselage fuselage(config); // std::vector<Thruster *> thrusters; // // auto degree = -180.0; // while (degree <= 180.0) // { // auto angle = glm::radians(degree); // auto wind = glm::dvec3(0.0, glm::sin(angle), glm::cos(angle)); // const auto &element = fuselage.getElements()[0]; // auto wrench = fuselage.calculate(-wind, Constants::Zero, Constants::Zero, 1.0, thrusters); // // auto drag = 2.0 * glm::length(wrench.force) / element.areaSide; // // file << degree << " " << drag << "\n"; // degree += 0.1; // } file.close(); }