Урок 25. Построение треугольника по координатам его вершин

Урок из серии: «Программирование на языке Visual Basic.NET для школьников»

В предыдущем уроке было показано применение графических методов для создания рисунка на форме или элементах управления. Для построения рисунка мы использовали компьютерную систему координат, начало которой расположено в верхнем левом углу области рисования. Ось X направлена вправо, а ось Y направлена вниз.

При геометрических построениях и построении графиков функций удобнее использовать математическую систему координат, начало которой обычно находится в центре области рисования. Ось X направлена вправо, а ось Y направлена вверх.

В этом уроке мы постоим треугольник в математической системе координат.

Математическая система координат области рисования шириной 300 точек и высотой 200 точек приведена на рисунке.

Математическая система координат

На языке Visual Basic.NET для преобразования компьютерной системы координат в математическую систему координат используется метод масштабирования и поворота осей ScaleTransform() и метод сдвига начала координат TranslateTransform

Поворот по оси Y:

Graf1.ScaleTransform(1,-1)

Сдвиг по оси X на 150 точек вправо и вниз и сдвиг по оси Y на 100 точек вниз:

Graf1.TranslateTransform(150, -100)

Проект «Треугольник»

Задание:  Нарисовать декартовую систему координат с подписями единичных отрезков и построить в ней треугольник по заданным координатам трех его вершин. Вычислить его периметр и площадь.

    1. В среде программирования Visual Basic.NET создайте новый проект под именем «Треугольник».
    2. Разместите на форме:
      • графическое поле PictureBox1, которое будет использоваться в качестве области рисования;
      • три надписи Label1 —  Label3 для вывода вершин треугольника, шесть  текстовых полей Text1-Text6 для ввода координат вершин треугольника;
      • две надписи для  Label4-Label5 для вывода периметра и площади треугольника;
      • четыре командные кнопки Button1-Button4 (Построить, Периметр, Площадь) для вывода треугольника в графическое поле, вычисления периметра и площади.

      Так примерно должна выглядеть форма:

      Построение треугольника по координатам вершин

    3. Откройте окно редактора кода  и найдите строку  «Код, автоматически созданный конструктором форм Windows». Сразу после него введите следующие объявления переменных и процедуру для вывода системы координат:
       
      Dim Graph1 As Graphics
      Dim Pen1 As New Pen(Color.Red, 2)
      Dim Pen2 As New Pen(Color.Blue, 2)
      Dim Pen3 As New Pen(Color.Red, 1)
      Dim drawBrush As New SolidBrush(Color.Black)
      Dim drawFont As New Font("Arial", 7)
      Dim x, y, x1, y1, x2, y2, x3, y3 As Integer
      Dim l1, l2, l3 As Integer
      Dim p, s As Single
      
      'Процедура для построения математической системы координат
      Private Sub M_sk()
        Graph1 = Me.PictureBox1.CreateGraphics()
        Graph1.Clear(Color.White)
        'Печать шкал математической системы координат
        'в компьютерной системе координат
        For x = -100 To 100 Step 50
            Graph1.DrawString(x, drawFont, drawBrush, x + 100, 105)
       Next x
       For y = 0 To 200 Step 50
           Graph1.DrawString(y - 100, drawFont, drawBrush, 80, 200 - y)
       Next y
       'Преобразование компьютерной СК в математическую СК
       'Поворот оси Y
       Graph1.ScaleTransform(1, -1)
       'Сдвиг по осям X и Y
       Graph1.TranslateTransform(100, -100)
       'Рисование осей         'Ось X
       Graph1.DrawLine(Pen1, -150, 0, 150, 0)
       'Ось Y
       Graph1.DrawLine(Pen1, 0, -100, 0, 100)
       'Засечки на оси X
       For x = -100 To 100 Step 10
           Graph1.DrawLine(Pen3, x, -5, x, 5)
       Next x
       'Засечки на оси Y
       For y = -100 To 100 Step 10
           Graph1.DrawLine(Pen3, -5, y, 5, y)
       Next y
      End Sub
  1. В обработчике события кнопки Построить напишите программный код для построения треугольника.
    M_sk() 'Выводим систему координат
    ' Если координаты вершин треугольника введены, строим треугольник
    If TextBox1.Text = "" And TextBox2.Text = "" And TextBox3.Text = "" _
       And TextBox4.Text = "" And TextBox5.Text = "" And TextBox6.Text = "" Then
       MsgBox("Введите координаты")
    Else
       x1 = Val(TextBox1.Text) : y1 = Val(TextBox2.Text)
       x2 = Val(TextBox3.Text) : y2 = Val(TextBox4.Text)
       x3 = Val(TextBox5.Text) : y3 = Val(TextBox6.Text)
       Graph1.DrawEllipse(Pen2, x1 - 2, y1 - 2, 4, 4)
       Graph1.DrawLine(Pen2, x1, y1, x2, y2)
       Graph1.DrawEllipse(Pen2, x2 - 2, y2 - 2, 4, 4)
       Graph1.DrawLine(Pen2, x2, y2, x3, y3)
       Graph1.DrawEllipse(Pen2, x3 - 2, y3 - 2, 4, 4)
       Graph1.DrawLine(Pen2, x1, y1, x3, y3)
    End If
  2. Создайте обработчик события, реализующий вычисление периметра треугольника.
    ' Вычисление длин сторон треугольника
    l1 = Math.Sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
    l2 = Math.Sqrt((x3 - x2) ^ 2 + (y3 - y2) ^ 2)
    l3 = Math.Sqrt((x3 - x2) ^ 2 + (y3 - y2) ^ 2)
    ' вычисление периметра
    p = l1 + l2 + l3
    Label4.Text = Str(p)
  3. Создайте обработчик события, реализующий вычисление площади треугольника.
     
    ' Вычисление площади треугольника по формуле Герона
    p = p / 2
    s = Math.Sqrt((p - l1) * (p - l2) * (p - l3))
    Label5.Text = Str(s)
  4. Создайте обработчик события, реализующий очистку графического поля, текстовых полей с координатами вершин треугольника и надписей с результатами.
    M_sk() 'Выводим систему координат
    TextBox1.Text = "" : TextBox2.Text = ""
    TextBox3.Text = "" : TextBox4.Text = ""
    TextBox5.Text = "" : TextBox6.Text = ""
    Label4.Text = "" : Label5.Text = ""
  5. Запустите проект. Введите координаты вершин треугольника в текстовые поля на форме. С использованием кнопок нарисовать треугольник, вычислить значение периметра и площади.

В этом уроке мы использовали математическую систему координат для построения треугольника.

В следующем уроке будет показано построение графика функции в математической системе координат.

Следующий урок: «Построение графика функции»

До встречи в следующем уроке.

Подписаться
Уведомить о
guest

1 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Елена Жук
Елена Жук
6 лет назад

Хорошая публикация, одно плохо. При вычислении длин сторон она сторона вычисляется дважды, а одна — ни разу: вместо последней команды l3 = Math.Sqrt((x3 — x2) ^ 2 + (y3 — y2) ^ 2) должно быть l3 = Math.Sqrt((x3 — x1) ^ 2 + (y3 — y1) ^ 2)
В формуле Герона ошибка д.б. s = Math.Sqrt(P*(p — l1) * (p — l2) * (p — l3))