This commit is contained in:
2025-07-15 02:16:03 +03:00
parent f6cdc57e7b
commit 771440f642
3 changed files with 119 additions and 1 deletions

View File

@ -49,6 +49,12 @@ namespace DroneSimulator
static public float MaxPower; // Максимальная Тяга всех двигателей (КГ)
}
public struct Propeller
{
static public float Diameter; // Диаметр лопостей
static public float MaxRotate; // Максимальнные обороты в секунду
}
private RealMode.Accelerometer RealAcc = new RealMode.Accelerometer();
private RealMode.Gyroscope RealGyr = new RealMode.Gyroscope();
private RealMode.Position RealPos = new RealMode.Position();
@ -376,6 +382,13 @@ namespace DroneSimulator
{
ul = Range(ul); ur = Range(ur); dl = Range(dl); dr = Range(dr);
float coef = Area.Wind.Density * MathF.Pow(Propeller.Diameter, 4);
//ul = MathF.Pow(ul * Propeller.MaxRotate, 2) * coef; // я хз как делать
//ur = MathF.Pow(ur * Propeller.MaxRotate, 2) * coef;
//dl = MathF.Pow(dl * Propeller.MaxRotate, 2) * coef;
//dr = MathF.Pow(dr * Propeller.MaxRotate, 2) * coef;
Power = (ul + ur + dl + dr) / 4;
AccPRY.Y = ((ul + dl) - (ur + dr));

View File

@ -198,6 +198,13 @@
label67 = new Label();
label66 = new Label();
tabPage_Drone = new TabPage();
groupBox6 = new GroupBox();
label79 = new Label();
numericUpDown_Propeller_Rotation = new NumericUpDown();
label39 = new Label();
numericUpDown_Propeller_Diameter = new NumericUpDown();
label38 = new Label();
label37 = new Label();
groupBox_Physics = new GroupBox();
label78 = new Label();
numericUpDown_Physics_Power = new NumericUpDown();
@ -286,6 +293,9 @@
((System.ComponentModel.ISupportInitialize)numericUpDown_GPS_Lon).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDown_GPS_Lat).BeginInit();
tabPage_Drone.SuspendLayout();
groupBox6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)numericUpDown_Propeller_Rotation).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDown_Propeller_Diameter).BeginInit();
groupBox_Physics.SuspendLayout();
((System.ComponentModel.ISupportInitialize)numericUpDown_Physics_Power).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDown_Physics_Length).BeginInit();
@ -2161,6 +2171,7 @@
//
// tabPage_Drone
//
tabPage_Drone.Controls.Add(groupBox6);
tabPage_Drone.Controls.Add(groupBox_Physics);
tabPage_Drone.Location = new Point(4, 24);
tabPage_Drone.Name = "tabPage_Drone";
@ -2170,6 +2181,83 @@
tabPage_Drone.Text = "Drone";
tabPage_Drone.UseVisualStyleBackColor = true;
//
// groupBox6
//
groupBox6.Controls.Add(label79);
groupBox6.Controls.Add(numericUpDown_Propeller_Rotation);
groupBox6.Controls.Add(label39);
groupBox6.Controls.Add(numericUpDown_Propeller_Diameter);
groupBox6.Controls.Add(label38);
groupBox6.Controls.Add(label37);
groupBox6.Dock = DockStyle.Top;
groupBox6.Enabled = false;
groupBox6.Location = new Point(3, 119);
groupBox6.Name = "groupBox6";
groupBox6.Size = new Size(204, 89);
groupBox6.TabIndex = 1;
groupBox6.TabStop = false;
groupBox6.Text = "Propeller";
//
// label79
//
label79.AutoSize = true;
label79.Location = new Point(162, 57);
label79.Name = "label79";
label79.Size = new Size(32, 15);
label79.TabIndex = 9;
label79.Text = "RPM";
//
// numericUpDown_Propeller_Rotation
//
numericUpDown_Propeller_Rotation.Increment = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDown_Propeller_Rotation.Location = new Point(94, 55);
numericUpDown_Propeller_Rotation.Maximum = new decimal(new int[] { 100000, 0, 0, 0 });
numericUpDown_Propeller_Rotation.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDown_Propeller_Rotation.Name = "numericUpDown_Propeller_Rotation";
numericUpDown_Propeller_Rotation.Size = new Size(62, 23);
numericUpDown_Propeller_Rotation.TabIndex = 8;
numericUpDown_Propeller_Rotation.Value = new decimal(new int[] { 5000, 0, 0, 0 });
numericUpDown_Propeller_Rotation.ValueChanged += numericUpDown_Propeller_ValueChanged;
//
// label39
//
label39.AutoSize = true;
label39.Location = new Point(152, 28);
label39.Name = "label39";
label39.Size = new Size(18, 15);
label39.TabIndex = 7;
label39.Text = "m";
//
// numericUpDown_Propeller_Diameter
//
numericUpDown_Propeller_Diameter.DecimalPlaces = 2;
numericUpDown_Propeller_Diameter.Location = new Point(94, 26);
numericUpDown_Propeller_Diameter.Maximum = new decimal(new int[] { 1, 0, 0, 0 });
numericUpDown_Propeller_Diameter.Minimum = new decimal(new int[] { 5, 0, 0, 131072 });
numericUpDown_Propeller_Diameter.Name = "numericUpDown_Propeller_Diameter";
numericUpDown_Propeller_Diameter.Size = new Size(52, 23);
numericUpDown_Propeller_Diameter.TabIndex = 6;
numericUpDown_Propeller_Diameter.Value = new decimal(new int[] { 30, 0, 0, 131072 });
numericUpDown_Propeller_Diameter.ValueChanged += numericUpDown_Propeller_ValueChanged;
//
// label38
//
label38.AutoSize = true;
label38.Location = new Point(10, 57);
label38.Name = "label38";
label38.Size = new Size(78, 15);
label38.TabIndex = 1;
label38.Text = "Max rotation:";
//
// label37
//
label37.AutoSize = true;
label37.Location = new Point(30, 28);
label37.Name = "label37";
label37.Size = new Size(58, 15);
label37.TabIndex = 0;
label37.Text = "Diameter:";
//
// groupBox_Physics
//
groupBox_Physics.Controls.Add(label78);
@ -2184,7 +2272,7 @@
groupBox_Physics.Dock = DockStyle.Top;
groupBox_Physics.Location = new Point(3, 3);
groupBox_Physics.Name = "groupBox_Physics";
groupBox_Physics.Size = new Size(204, 120);
groupBox_Physics.Size = new Size(204, 116);
groupBox_Physics.TabIndex = 0;
groupBox_Physics.TabStop = false;
groupBox_Physics.Text = "Physics";
@ -2443,6 +2531,10 @@
((System.ComponentModel.ISupportInitialize)numericUpDown_GPS_Lon).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDown_GPS_Lat).EndInit();
tabPage_Drone.ResumeLayout(false);
groupBox6.ResumeLayout(false);
groupBox6.PerformLayout();
((System.ComponentModel.ISupportInitialize)numericUpDown_Propeller_Rotation).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDown_Propeller_Diameter).EndInit();
groupBox_Physics.ResumeLayout(false);
groupBox_Physics.PerformLayout();
((System.ComponentModel.ISupportInitialize)numericUpDown_Physics_Power).EndInit();
@ -2639,5 +2731,12 @@
private GroupBox groupBox_Lockstep;
private Label label_Lockstep_Time;
private CheckBox checkBox_Lockstep_Limit;
private GroupBox groupBox6;
private Label label38;
private Label label37;
private Label label79;
private NumericUpDown numericUpDown_Propeller_Rotation;
private Label label39;
private NumericUpDown numericUpDown_Propeller_Diameter;
}
}

View File

@ -373,5 +373,11 @@ namespace DroneSimulator
{
Drone.TimeLimit = checkBox_Lockstep_Limit.Checked;
}
private void numericUpDown_Propeller_ValueChanged(object sender, EventArgs e)
{
Drone.Propeller.Diameter = (float)numericUpDown_Propeller_Diameter.Value;
Drone.Propeller.MaxRotate = ((float)numericUpDown_Propeller_Rotation.Value) / 60;
}
}
}