Всем привет. Почему то, когда пытаюсь вставить самый верхний синий график (f(x) = x^5+(x+10)^1/3) ось Ox съезжает вправо. Из чего это происходит?
Обработчик событий:
double Xmin, Xmax, Ymin, Ymax, Hx, Hy, h;
bool check = false;
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
Xmin = -9.1; Xmax = 5.8; Ymin = -3; Ymax = 5;
Hx = 1; Hy = 0.5; //or Math::PI
h = 0.14; // Установка шага расчета таблицы
// Вывод данных в окна однострочных редакторов
textBox1->Text = Convert::ToString(Xmin);
textBox2->Text = Convert::ToString(Xmax);
textBox3->Text = Convert::ToString(Ymin);
textBox4->Text = Convert::ToString(Ymax);
textBox5->Text = Convert::ToString(Hx);
textBox6->Text = Convert::ToString(Hy);
textBox7->Text = Convert::ToString(h);
this->chart1->ChartAreas[0]->AxisX->IsLabelAutoFit = false;
// Установка левой границы нижней оси
this->chart1->ChartAreas[0]->AxisX->Minimum = Xmin;
//Установка правой границы нижней оси
this->chart1->ChartAreas[0]->AxisX->Maximum = Xmax;
this->chart1->ChartAreas[0]->AxisY->IsLabelAutoFit = false;
// Установка нижней границы левой оси
this->chart1->ChartAreas[0]->AxisY->Minimum = Ymin;
// Установка верхней границы левой оси
this->chart1->ChartAreas[0]->AxisY->Maximum = Ymax;
// Установка шага разметки по нижней оси
this->chart1->ChartAreas[0]->AxisX->Interval = Hx;
// Установка шага разметки по левой оси
this->chart1->ChartAreas[0]->AxisY->Interval = Hy;
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
bool flag = true;
try {
Xmin = Convert::ToDouble(textBox1->Text);
Xmax = Convert::ToDouble(textBox2->Text);
Ymin = Convert::ToDouble(textBox3->Text);
Ymax = Convert::ToDouble(textBox4->Text);
Hx = Convert::ToDouble(textBox5->Text);
Hy = Convert::ToDouble(textBox6->Text);
h = Convert::ToDouble(textBox7->Text);
}
catch(Exception^ ex){
flag = false;
MessageBox::Show("Данные не являются числами!", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Warning);
}
if (flag) {
this->chart1->ChartAreas[0]->AxisX->IsLabelAutoFit = false;
// Установка левой границы нижней оси
this->chart1->ChartAreas[0]->AxisX->Minimum = Xmin;
//Установка правой границы нижней оси
this->chart1->ChartAreas[0]->AxisX->Maximum = Xmax;
this->chart1->ChartAreas[0]->AxisY->IsLabelAutoFit = false;
// Установка нижней границы левой оси
this->chart1->ChartAreas[0]->AxisY->Minimum = Ymin;
// Установка верхней границы левой оси
this->chart1->ChartAreas[0]->AxisY->Maximum = Ymax;
// Установка шага разметки по нижней оси
this->chart1->ChartAreas[0]->AxisX->Interval = Hx;
// Установка шага разметки по левой оси
this->chart1->ChartAreas[0]->AxisY->Interval = Hy;
}
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
this->chart1->Series[0]->Points->Clear();//очистка графиков
this->chart1->Series[1]->Points->Clear();//очистка графиков
this->chart1->Series[2]->Points->Clear();//очистка графиков
double x, y1, y2, y3;
check = true;
x = Xmin; //начальное значение по Х
while (x <= Xmax)
{
if (checkBox1->Checked == true) {
y1 = pow(x, 5) + pow(x + 10, 1.0 / 3.0);//расчет функции
this->chart1->Series[0]->Points->AddXY(x, y1);//вывод точки на график
}
if (checkBox2->Checked == true) {
y2 = 1.3 * pow(4 + x * x, 1.0 / 2.0);//расчет функции
this->chart1->Series[1]->Points->AddXY(x, y2);//вывод точки на график
}
if (checkBox3->Checked == true) {
y3 = pow(fabs(x + 1), x);//расчет функции
this->chart1->Series[2]->Points->AddXY(x, y3);//вывод точки на график
}
x += h;//увеличение значения Х на величину шага
}
}