public string to_string() { string str = n.ToString() + " " + nj.ToString() + " " + nx.ToString() + "\r\n"; str += Lj.ToString() + " " + Lx.ToString() + "\r\n"; str += Vj.ToString() + " " + Vx.ToString() + "\r\n"; str += Cj.ToString() + " " + Cx.ToString() + "\r\n"; str += Pt.ToString() + " " + At.ToString() + "\r\n"; foreach (var t in targets) { str += t.to_string() + "\r\n"; } return(str); }
public override string ToString() { return($"{base.ToString()} AND V[{Vx.ToString(ByteFormat)}], V[{Vy.ToString(ByteFormat)}]"); }
public override string ToString() { return(Vx.ToString() + ", " + Vr.ToString()); }
/* Simulacija koristeci Eulerov metod*/ public void simulationEuler() { /* FUNKCIONALNE PROMENLJIVE */ int i = 0; //brojac iteracija bool simulationRunning = true; // promenljiva za pokretanje/prekidanje simulacije /* Stil za oznacavanje zapisa */ DataGridViewCellStyle boja = new DataGridViewCellStyle(); boja.ForeColor = Color.DarkOrange; boja.Font = new Font(Tabela.Font, FontStyle.Bold); double axPrim; double ayPrim; double axSec; double aySec; PointD[] points = { new PointD(865, 0.296221041243509), new PointD(815, 0.362064203509306), new PointD(776, 0.371578055743002), new PointD(737, 0.382525045298620), new PointD(700, 0.382835165547702), new PointD(664, 0.384235165547702), new PointD(629, 0.385786703294031), }; try { while (simulationRunning) { /* Upis podataka u datagridview */ string[] row = new string[] { posX.ToString(), posY.ToString(), V.ToString(), Vx.ToString(), Vy.ToString(), ax.ToString(), ay.ToString(), Fd.ToString(), Cd.ToString(), (currAngle * 180 / Math.PI).ToString() }; Tabela.Rows.Add(row); Tabela.Rows[Tabela.Rows.Count - 2].DefaultCellStyle = boja; /* Upis u grafik */ Grafik.Series[3].Points.AddXY(posX, posY); // crtanje pozicije na grafiku Grafik1.Series[3].Points.AddXY(posX, V); // crtanje pozicije na grafiku /* Ugao vektora brzine i apscise */ angleA = g / V * Math.Cos(currAngle); angleSpeed = angleSpeed + angleA * interval; currAngle = Math.Atan(Vy / Vx) - angleSpeed * interval; /* Racunanje vremena leta */ t += interval; /* pomeranje projektila */ posX = posX + Vx * interval - 0.5 * Math.Pow(interval, 2) * ax; // pomeranje po X osi posY = posY + Vy * interval - 0.5 * Math.Pow(interval, 2) * ay; // pomeranje po Y osi /* Trenutna brzina */ V = Math.Sqrt(Math.Pow(Vx, 2) + Math.Pow(Vy, 2)); //racunanje efektivne vrednosti vektora brzine /* otpor vazduha IMPLEMENTIRATI INTERPOLACIJU ZA Cx */ Cd = LinearFunctionD.LinearInterpolationY(V, points); Fd = Cd * airDensity * S * Math.Pow(Vx, 2) * 0.5; //racunanje sile otpora vazduha /* Racunanje ubraznja */ axPrim = airDensity * S * Cd * Vx * ax; ayPrim = airDensity * S * Cd * Vy * ay; axSec = airDensity * S * Cd * axPrim; aySec = airDensity * S * Cd * ayPrim; ax = Fd * Math.Cos(currAngle) / m + axPrim * interval + 0.5 * Math.Pow(interval, 2) * axSec; ay = g + Fd * Math.Sin(currAngle) / m + ayPrim * interval + 0.5 * Math.Pow(interval, 2) * aySec; /* promena brzine u intervalu vremena */ Vx = Vx - ax * interval - 0.5 * Math.Pow(interval, 2) * axPrim; Vy = Vy - ay * interval - 0.5 * Math.Pow(interval, 2) * axPrim; /* USLOV ZA PREKIDANJE SIMULACIJE */ if (posY < -1) { simulationRunning = false; //MessageBox.Show("Vreme leta:" + t + "s"); } i++; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
/* Simulacija u uslovima vakuuma */ public void simulationVacuum() { /* FUNKCIONALNE PROMENLJIVE */ int i = 0; //brojac iteracija bool simulationRunning = true; // promenljiva za pokretanje/prekidanje simulacije /* Stil za oznacavanje zapisa */ DataGridViewCellStyle boja = new DataGridViewCellStyle(); boja.ForeColor = Color.ForestGreen; boja.Font = new Font(Tabela.Font, FontStyle.Bold); try { while (simulationRunning) { /* Upis podataka u datagridview */ string[] row = new string[] { posX.ToString(), posY.ToString(), V.ToString(), Vx.ToString(), Vy.ToString(), ax.ToString(), ay.ToString(), Fd.ToString(), Cd.ToString(), (currAngle * 180 / Math.PI).ToString() }; Tabela.Rows.Add(row); Tabela.Rows[Tabela.Rows.Count - 2].DefaultCellStyle = boja; /* Upis u grafik */ Grafik.Series[2].Points.AddXY(posX, posY); // crtanje pozicije na grafiku Grafik1.Series[2].Points.AddXY(posX, V); // crtanje pozicije na grafiku /* Racunanje vremena leta */ t += interval; /* pomeranje projektila */ posX = posX + Vx * interval; // pomeranje po X osi posY = posY + Vy * interval; // pomeranje po Y osi /* Trenutna brzina */ V = Math.Sqrt(Math.Pow(Vx, 2) + Math.Pow(Vy, 2)); //racunanje efektivne vrednosti vektora brzine /* Racunanje ubrzanja */ ay = g; /* promena brzine u intervalu vremena */ Vy = Vy - ay * interval; /* USLOV ZA PREKIDANJE SIMULACIJE */ if (posY < -1) { simulationRunning = false; //MessageBox.Show("Vreme leta:" + t + "s"); } i++; } // Tabela.Rows.Add(emptyRow); // Tabela.Rows[Tabela.Rows.Count - 2].DefaultCellStyle = zeleni; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public override string ToString() { return($"{base.ToString()} SHL V[{Vx.ToString(ByteFormat)}]{{, V[{Vy.ToString(ByteFormat)}]}}"); }
public override string ToString() { return($"{base.ToString()} RND V[{Vx.ToString(ByteFormat)}], {Value.ToString(ByteFormat)}"); }
/* Simulacija sa otporom vazduha - prediktor-korektor */ public void simulationAdams() { /* FUNKCIONALNE PROMENLJIVE */ bool simulationRunning = true; // promenljiva za pokretanje/prekidanje simulacije /* Stil za oznacavanje zapisa */ DataGridViewCellStyle boja = new DataGridViewCellStyle(); boja.ForeColor = Color.DarkCyan; boja.Font = new Font(Tabela.Font, FontStyle.Bold); //promenljive za poziciju, brzinu i ubrzanje - nizovi zbog koraka prediktor-korektor metode double[] posXPC = new double[3]; double[] posYPC = new double[3]; double[] VxPC = new double[3]; double[] VyPC = new double[3]; double[] axPC = new double[3]; double[] ayPC = new double[3]; double[] currAnglePC = new double[3]; double[] angleSpeedPC = new double[3]; double[] angleAPC = new double[3]; //promenljive za poziciju, brzinu i ubrzanje - nizovi zbog koraka adamsovog metod double[] posXStep = new double[5]; double[] posYStep = new double[5]; double[] VxStep = new double[5]; double[] VyStep = new double[5]; double[] axStep = new double[5]; double[] ayStep = new double[5]; double[] currAngleStep = new double[5]; double[] angleSpeedStep = new double[5]; double[] angleAStep = new double[5]; PointD[] points = { new PointD(865, 0.296221041243509), new PointD(815, 0.362064203509306), new PointD(776, 0.371578055743002), new PointD(737, 0.382525045298620), new PointD(700, 0.382835165547702), new PointD(664, 0.384235165547702), new PointD(629, 0.385786703294031), }; try { /* FOR petlja za popunjavanje cetiri koraka metode*/ for (int i = 0; i < 5; i++) { /* Upis podataka u datagridview */ string[] row = new string[] { posX.ToString(), posY.ToString(), V.ToString(), Vx.ToString(), Vy.ToString(), ax.ToString(), ay.ToString(), Fd.ToString(), Cd.ToString(), (currAngle * 180 / Math.PI).ToString() }; Tabela.Rows.Add(row); Tabela.Rows[Tabela.Rows.Count - 2].DefaultCellStyle = boja; /* Upis u grafik */ Grafik.Series[4].Points.AddXY(posX, posY); // crtanje pozicije na grafiku Grafik1.Series[4].Points.AddXY(posX, V); // crtanje pozicije na grafiku /* PREDIKTOR start */ /* Ugao vektora brzine i apscise */ angleAPC[0] = g / V * Math.Cos(currAngle); angleSpeedPC[0] = angleSpeedPC[0] + angleAPC[0] * interval; currAnglePC[0] = Math.Atan(Vy / Vx) - angleSpeedPC[0] * interval; /* Racunanje vremena leta */ t += interval; /* pomeranje projektila */ posXPC[0] = posX + Vx * interval; // pomeranje po X osi posYPC[0] = posY + Vy * interval; // pomeranje po Y osi /* Trenutna brzina */ V = Math.Sqrt(Math.Pow(Vx, 2) + Math.Pow(Vy, 2)); //racunanje efektivne vrednosti vektora brzine /* otpor vazduha*/ Cd = LinearFunctionD.LinearInterpolationY(V, points); Fd = Cd * airDensity * S * Math.Pow(Vx, 2) * 0.5; //racunanje sile otpora vazduha /* Racunanje ubraznja */ axPC[0] = Fd * Math.Cos(currAngle) / m; ayPC[0] = g + Fd * Math.Sin(currAngle) / m; /* promena brzine u intervalu vremena */ VxPC[0] = Vx - ax * interval; VyPC[0] = Vy - ay * interval; /* Ugao vektora brzine i apscise */ angleAPC[1] = g / V * Math.Cos(currAnglePC[0]); angleSpeedPC[1] = angleSpeedPC[0] + angleAPC[1] * interval; currAnglePC[1] = Math.Atan(VyPC[0] / VxPC[0]) - angleSpeedPC[1] * interval; /* Racunanje vremena leta */ t += interval; /* pomeranje projektila */ posXPC[1] = posXPC[0] + VxPC[0] * interval; // pomeranje po X osi posYPC[1] = posYPC[0] + VyPC[0] * interval; // pomeranje po Y osi /* Trenutna brzina */ V = Math.Sqrt(Math.Pow(Vx, 2) + Math.Pow(Vy, 2)); //racunanje efektivne vrednosti vektora brzine /* otpor vazduha IMPLEMENTIRATI INTERPOLACIJU ZA Cx */ Cd = LinearFunctionD.LinearInterpolationY(V, points); Fd = Cd * airDensity * S * Math.Pow(VxPC[0], 2) * 0.5; //racunanje sile otpora vazduha /* Racunanje ubrzanja */ axPC[1] = Fd * Math.Cos(currAngle) / m; ayPC[1] = g + Fd * Math.Sin(currAngle) / m; /* promena brzine u intervalu vremena */ VxPC[1] = VxPC[0] - axPC[0] * interval; VyPC[1] = VyPC[0] - ayPC[0] * interval; /* PREDIKTOR end*/ /* KOREKTOR start */ axPC[2] = (axPC[0] + axPC[1]) / 2.0; ayPC[2] = (ayPC[0] + ayPC[1]) / 2.0; VxPC[2] = (VxPC[0] + VxPC[1]) / 2.0; VyPC[2] = (VyPC[0] + VyPC[1]) / 2.0; posXPC[2] = (posXPC[0] + posXPC[1]) / 2.0; posYPC[2] = (posYPC[0] + posYPC[1]) / 2.0; angleAPC[2] = (angleAPC[0] + angleAPC[1]) / 2.0; angleSpeedPC[2] = (angleSpeedPC[0] + angleSpeedPC[1]) / 2.0; currAnglePC[2] = (currAnglePC[0] + currAnglePC[1]) / 2.0; ax = axPC[2]; ay = ayPC[2]; Vx = VxPC[2]; Vy = VyPC[2]; posX = posXPC[2]; posY = posYPC[2]; angleA = angleAPC[2]; angleSpeed = angleSpeedPC[2]; currAngle = currAnglePC[2]; V = Math.Sqrt(Math.Pow(Vx, 2) + Math.Pow(Vy, 2)); /*KOREKTOR end */ /* Promenljive za 4 koraka adams metode start */ axStep[i] = ax; ayStep[i] = ay; VxStep[i] = Vx; VyStep[i] = Vy; posXStep[i] = posX; posYStep[i] = posY; angleAStep[i] = angleA; angleSpeedStep[i] = angleSpeed; currAngleStep[i] = currAngle; /* Promenljive za 4 koraka adams metode end */ /* USLOV ZA PREKIDANJE SIMULACIJE */ if (posY < -1) { simulationRunning = false; //MessageBox.Show("Vreme leta:" + t + "s"); } } while (simulationRunning) { /* Upis podataka u datagridview */ string[] row = new string[] { posX.ToString(), posY.ToString(), V.ToString(), Vx.ToString(), Vy.ToString(), ax.ToString(), ay.ToString(), Fd.ToString(), Cd.ToString(), (currAngle * 180 / Math.PI).ToString() }; Tabela.Rows.Add(row); Tabela.Rows[Tabela.Rows.Count - 2].DefaultCellStyle = boja; /* Upis u grafik */ Grafik.Series[4].Points.AddXY(posX, posY); // crtanje pozicije na grafiku Grafik1.Series[4].Points.AddXY(posX, V); // crtanje pozicije na grafiku /* PREDIKTOR start */ /* Ugao vektora brzine i apscise */ angleA = g / V * Math.Cos(currAngle); angleSpeed = angleSpeed + angleA * interval; currAngle = Math.Atan(Vy / Vx) - angleSpeed * interval; /* Racunanje vremena leta */ t += interval; /* pomeranje projektila */ // pomeranje po X osi posX = posX + interval / 24 * (55 * VxStep[3] - 59 * VxStep[2] + 37 * VxStep[1] - 9 * VxStep[0]); // pomeranje po Y osi posY = posY + interval / 24 * (55 * VyStep[3] - 59 * VyStep[2] + 37 * VyStep[1] - 9 * VyStep[0]);; /* Trenutna brzina */ V = Math.Sqrt(Math.Pow(Vx, 2) + Math.Pow(Vy, 2)); //racunanje efektivne vrednosti vektora brzine /* otpor vazduha*/ Cd = LinearFunctionD.LinearInterpolationY(V, points); Fd = Cd * airDensity * S * Math.Pow(Vx, 2) * 0.5; //racunanje sile otpora vazduha /* Racunanje ubraznja */ ax = Fd * Math.Cos(currAngle) / m; ay = g + Fd * Math.Sin(currAngle) / m; /* promena brzine u intervalu vremena */ Vx = Vx - interval / 24 * (55 * axStep[3] - 59 * axStep[2] + 37 * axStep[1] - 9 * axStep[0]); Vy = Vy - interval / 24 * (55 * ayStep[3] - 59 * ayStep[2] + 37 * ayStep[1] - 9 * ayStep[0]);; for (int i = 0; i < 3; i++) { VxStep[i] = VxStep[i + 1]; VyStep[i] = VyStep[i + 1]; axStep[i] = axStep[i + 1]; ayStep[i] = ayStep[i + 1]; } VxStep[3] = Vx; VyStep[3] = Vy; axStep[3] = ax; ayStep[3] = ay; /* USLOV ZA PREKIDANJE SIMULACIJE */ if (posY < -1) { simulationRunning = false; //MessageBox.Show("Vreme leta:" + t + "s"); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public override string ToString() { return($"{base.ToString()} DRW V[{Vx.ToString(ByteFormat)}], V[{Vy.ToString(ByteFormat)}], {Height.ToString(ByteFormat)}"); }