Главная страница
Навигация по странице:

  • Задача 1.

  • Описание решения. Задача 1 Составил код для решения задачи 1. Задача 2

  • Листинг кода

  • Моделирование движения неуправляемого снаряда при бомбометании Колонна военной техники условного противника движется по прямолин. Лабораторная работа 7 Основы работы в среде разработки Microsoft Visual Studio 2022 Постановка задачи


    Скачать 109.75 Kb.
    НазваниеЛабораторная работа 7 Основы работы в среде разработки Microsoft Visual Studio 2022 Постановка задачи
    АнкорМоделирование движения неуправляемого снаряда при бомбометании Колонна военной техники условного противника движется по прямолин
    Дата21.06.2022
    Размер109.75 Kb.
    Формат файлаdocx
    Имя файлаOtchet_7 (1).docx
    ТипЛабораторная работа
    #607160

    Лабораторная работа №7

    Основы работы в среде разработки Microsoft Visual Studio 2022

    1. Постановка задачи.

    Моделирование движения неуправляемого снаряда при бомбометании Колонна военной техники условного противника движется по прямолинейному участку шоссе со скоростью к v км/ч. Колонну догоняет самолет-бомбардировщик, движущийся горизонтально над шоссе на высоте H м со скоростью c v км/ч. Стремясь поразить колонну, самолет сбрасывает на цель неуправляемый снаряд (бомбу) массой m кг.

    1. Считать, что при движении снаряда в вертикальном направлении он испытывает сопротивление воздуха. При этом сила сопротивления равна: Fс = k1v + k2v2, где v – проекция скорости на вертикальную ось (направление падения снаряда).

    2. Считать, что при движении в горизонтальном направлении (направлении движения самолета) лобовым сопротивлением воздуха на снаряд можно пренебречь. Числовые значения величин, характеризующих моделируемый процесс движения снаряда принять равными: k1 = 0,2 + 0,1p; k2 = 0,04 + 0,01p; H = 5(20 + 2p + q)2 м; m = 200 + 20p +10q кг; vc = 600 + 2 p + 4q км/ч; vк = 60 + p + q км/ч.

    Задача 1. Определить траекторию движения снаряда при бомбометании.

    Задача 2. На каком расстоянии l до колонны необходимо сбросить снаряд, чтобы поразить цель.

    Значения p и q равны 1 и 2 соответственно.

    1. Описание решения.

    Задача 1

    Составил код для решения задачи 1.

    Задача 2

    Составил код для решения задачи 2.

    Скриншоты визуальной части программы оставлены ниже:



    Рис. 1 – Скриншот результата работы программы

    1. Листинг кода

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;
    namespace BlokhinLab7

    {

    public partial class Form1 : Form

    {

    public Form1()

    {

    InitializeComponent();

    }
    private void resultButton_Click(object sender, EventArgs e)

    {

    double p = Convert.ToDouble(pValue.Value);

    double q = Convert.ToDouble(qValue.Value);

    double k1 = 0.2 + 0.1 * p;

    double k2 = 0.04 + 0.01 * p;

    double H = 5 * ((20 + 2 * p + q) * (20 + 2 * p + q));

    double m = 200 + 20 * p + 10 * q;

    double Vc = ((600 + 2 * p + 4 * q) * 1000) / 3600;

    double Vk = ((60 + p + q) * 1000) / 3600;

    double tau = 0.2;

    double g = 9.81;
    chart1.Series.Clear();

    chart2.Series.Clear();

    chart1.Series.Add("Траектория движения самолета");

    chart2.Series.Add("Траектория падения снаряда");

    chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

    chart1.Series[0].Color = Color.Red;

    chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

    chart2.Series[0].Color = Color.Red;
    CalculateTrajectory(k1, k2, H, m, Vc, Vk, tau, g);

    }
    double CalculateTime(double t1, double h1, double t2, double h2)

    {

    double tp = t1 - (t2 - t1) * h1 / (h2 - h1);

    return tp;

    }
    void CalculateTrajectory(double k1, double k2, double H,

    double m, double vc, double vk, double tau, double g)

    {

    // координата снаряда

    double x = 0;

    // скорость снаряда

    double v = 0;

    // координата самолета

    double y = 0;

    // высота снаряда

    double h = H;

    // время движения снаряда

    double t = 0;

    // время падения снаряда

    double tp = 0;

    // шапка таблицы

    StringBuilder str = new StringBuilder();

    str.Append("t");

    str.Append('\t');

    str.Append("v");

    str.Append('\t');

    str.Append("x(t)");

    str.Append('\t');

    str.Append("y(t)");

    str.Append('\t');

    str.Append("h");

    str.AppendLine();

    // начальные значения

    str.Append(t.ToString("F2"));

    str.Append('\t');

    str.Append(v.ToString("F2"));

    str.Append('\t');

    str.Append(x.ToString("F2"));

    str.Append('\t');

    str.Append(y.ToString("F2"));

    str.Append('\t');

    str.Append(h.ToString("F2"));

    str.AppendLine();

    // основной цикл

    while (h > 0)

    {

    // расчет скорости

    v = v + tau * (g - (k1 * v + k2 * v * v) / m);

    // расчет координаты

    x = x + tau * v;

    if ((H - x) <= 0)

    {

    // если высота получилось отрицательной, то

    // выполняем расчет момента времени падения снаряда

    tp = CalculateTime(t, h, t + tau, H - x);

    }

    // расчет высоты

    h = H - x;

    // расчет времени

    t += tau;

    // расчет координаты самолета

    y = vc * t;

    // формирование значений таблицы

    str.Append(t.ToString("F2"));

    str.Append('\t');

    str.Append(v.ToString("F2"));

    str.Append('\t');

    str.Append(x.ToString("F2"));

    str.Append('\t');

    str.Append(y.ToString("F2"));

    str.Append('\t');

    str.Append(h.ToString("F2"));

    str.AppendLine();
    chart1.Series[0].Points.AddXY(Math.Ceiling(x), y);

    chart2.Series[0].Points.AddXY(Math.Ceiling(v), h);

    }

    // величина упреждения при бомбометании

    double l = (vc - vk) * tp;

    str.AppendLine();

    str.Append("Время падения снаряда tп = ");

    str.Append(tp.ToString("F2"));

    str.Append(" , c,");

    str.AppendLine();

    str.Append("Величина упреждения при бомбометании l = ");

    str.Append(l.ToString("F2"));

    str.Append(" , м");

    str.AppendLine();

    resultTextBox.Text = str.ToString();

    }

    }

    }


    написать администратору сайта