Skip to content

Commit

Permalink
RunHorizonRenderer: add movement to simulation
Browse files Browse the repository at this point in the history
  • Loading branch information
lordfolken committed May 21, 2024
1 parent 74c54f8 commit febb2c1
Showing 1 changed file with 46 additions and 7 deletions.
53 changes: 46 additions & 7 deletions test/src/RunHorizonRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,55 @@ Main(TestMainWindow &main_window)
horizon.Create(main_window, main_window.GetClientRect(), with_border);
main_window.SetFullWindow(horizon);

UI::PeriodicTimer timer([&horizon](){
double bank_angle = 0;
double pitch_angle = 0;

UI::PeriodicTimer timer([&horizon, &pitch_angle, &bank_angle]() {
// Static variables to keep track of the pitch angle and bank angle
static double pitch_increment = 1.0;
static double bank_increment = 1.2;
static double min_angle = -30.0;
static double max_angle = 30.0;

AttitudeState attitude;
attitude.bank_angle_available = attitude.pitch_angle_available =
Validity{TimeStamp{std::chrono::steady_clock::now().time_since_epoch()}};
attitude.bank_angle = Angle::Zero();
attitude.pitch_angle = Angle::Zero();
attitude.bank_angle_available = attitude.pitch_angle_available = Validity{
TimeStamp{std::chrono::steady_clock::now().time_since_epoch()}};

// Update pitch angle
if (pitch_angle == max_angle) {
pitch_increment = -1.0; // Change direction
} else if (pitch_angle == min_angle) {
pitch_increment = -pitch_increment; // Reverse direction
}
pitch_angle += pitch_increment;

// Ensure pitch angle stays within bounds [-30, 30]
if (pitch_angle > max_angle) {
pitch_angle = max_angle;
} else if (pitch_angle < min_angle) {
pitch_angle = min_angle;
}

// Update bank angle
if (bank_angle == max_angle) {
bank_increment = -1.0; // Change direction
} else if (bank_angle == min_angle) {
bank_increment = -bank_increment; // Reverse direction
}
bank_angle += bank_increment;

// Ensure bank angle stays within bounds [-30, 30]
if (bank_angle > max_angle) {
bank_angle = max_angle;
} else if (bank_angle < min_angle) {
bank_angle = min_angle;
}

attitude.bank_angle = Angle::Degrees(bank_angle);
attitude.pitch_angle = Angle::Degrees(pitch_angle);

horizon.SetAttitude(attitude);
});
timer.Schedule(std::chrono::milliseconds(250));

timer.Schedule(std::chrono::milliseconds(50));
main_window.RunEventLoop();
}

0 comments on commit febb2c1

Please sign in to comment.