Andrey36
(Андрей)
09.Октябрь.2021 16:26:12
#1
Помогите создать график как на рисунке.
private void button1_Click(object sender, EventArgs e)
{
double g = 9.8;
double pi = 3.1415;
double v = Convert.ToInt32(textBox1.Text);
double dt = Convert.ToInt32(textBox3.Text);
double alpha = Convert.ToInt32(textBox2.Text);
double T = Math.Round(2 * v * Math.Sin(alpha) / g, 2);
double S = Math.Round(v * v * Math.Sin(2 * alpha) / g, 2);
double H=Math.Round(v*v*Math.Sin(alpha)*Math.Sin(alpha)/(2*g),2);
label5.Text = "Максимальная высота H max ="+Convert.ToString(H);
label4.Text = "Максимальное расстояние L max= " + Convert.ToString(S);
label6.Text = "Максимальная время полета T max ="+Convert.ToString(T);
//Построение графика
this.chart1.Series[0].Points.Clear();
while()
{
T = Math.Round(2 * v * Math.Sin(alpha) / g, 2);
}
this.chart1.Series[0].Points.AddXY();
}
Вот файл со всем проетом:
задача.zip (745.3 КБ)
AlexP
(Alex P.)
09.Октябрь.2021 19:56:11
#2
Так а в чем проблема, надо просто в цикле менять Х (в нужном по заданию диапазоне с каким-то шагом) и по какой-то формуле вычислять Y с этими значениями X, и передавать их в
Andrey36
(Андрей)
09.Октябрь.2021 20:13:55
#3
что-то на подобие этого?
double a = 150, b = -50, h = 50, x, y;
this.chart1.Series[0].Points.Clear();
x = a;
while(x<=b)
{
S = Math.Round(v * v * Math.Sin(2 * alpha) / g, 2);
y = S;
this.chart1.Series[0].Points.AddXY(x, y);
x += h;
double n = 1;
n = n + 1;
}
AlexP
(Alex P.)
09.Октябрь.2021 20:52:50
#4
Если делает то, что надо, то видимо да )
Andrey36:
double n = 1;
n = n + 1;
Но тут явно бесполезная фигня, создали переменную, увеличили на 1, и сразу выкинули не используя её ни для чего.
Andrey36
(Андрей)
09.Октябрь.2021 20:54:14
#5
ну на счет n согласен что не нужна. Я вот пытался сделать по этому циклу ну график не выводился(
AlexP
(Alex P.)
09.Октябрь.2021 21:13:46
#6
Наверно потому что 150 больше -50.
Andrey36
(Андрей)
10.Октябрь.2021 08:36:47
#7
График появился но не то что нужно
private void button1_Click(object sender, EventArgs e)
{
double g = 9.8;
double pi = 3.1415;
double v = Convert.ToInt32(textBox1.Text);
double dt = Convert.ToInt32(textBox3.Text);
double alpha = Convert.ToInt32(textBox2.Text);
double T = Math.Round(2 * v * Math.Sin(alpha) / g, 2);
double S = Math.Round(v * v * Math.Sin(2 * alpha) / g, 2);
double H = Math.Round(v * v * Math.Sin(alpha) * Math.Sin(alpha) / (2 * g), 2);
label5.Text = "Максимальная высота H max =" + Convert.ToString(H);
label4.Text = "Максимальное расстояние L max= " + Convert.ToString(S);
label6.Text = "Максимальная время полета T max =" + Convert.ToString(T);
double a = -50, b = 150, h = 50, x, y;
this.chart1.Series[0].Points.Clear();
x = a;
while(x<=b)
{
S = Math.Round(v * v * Math.Sin(2 * alpha) / g, 2);
y = S;
this.chart1.Series[0].Points.AddXY(x, y);
x += h;
}
}
AlexP
(Alex P.)
10.Октябрь.2021 08:39:12
#8
Так смотрите какие значения получаются в Y.
Ну и 4 точки наверно мало.