Вращение линии за произвольную точку - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Привет. Как повернуть на определенный угол линию? Центр вращения - произвольная точка на этой линии.

Решение задачи: «Вращение линии за произвольную точку»

textual
Листинг программы
  1. Public Class Form4
  2.     Private blackPen As Pen
  3.     Private colorPen As Pen
  4.     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  5.         Dim ln As New myLine(New PointF(10, 10), New PointF(100, 100))
  6.         Dim ln2 As myLine = ln.RotateAtPoint(New PointF(50, 50), CDbl(TextBox1.Text))
  7.         blackPen = New Pen(Color.Black, 2)
  8.         colorPen = New Pen(Brushes.Red, 2)
  9.         Dim gg As Graphics = Panel1.CreateGraphics
  10.         gg.Clear(Panel1.BackColor)
  11.         gg.DrawLine(blackPen, ln.P1, ln.P2)
  12.         gg.DrawLine(colorPen, ln2.P1, ln2.P2)
  13.     End Sub
  14. End Class
  15. Public Class myLine
  16.     Public Sub New(ByVal pp1 As PointF, ByVal pp2 As PointF)
  17.         _P1 = pp1
  18.         _P2 = pp2
  19.     End Sub
  20.     Public Property P1 As PointF
  21.     Public Property P2 As PointF
  22.     Public Function RotateAtPoint(ByVal pp As PointF, ByVal ang As Double) As myLine
  23.         'ang в градусах, положительное вращение против час. стрелки
  24.         Dim angR As Double = ang * Math.PI / 180
  25.         Dim sn As Double = Math.Sin(angR)
  26.         Dim cs As Double = Math.Cos(angR)
  27.         Dim ppn1 As New PointF, ppn2 As New PointF
  28.         ppn1.X = pp.X + (P1.X * cs + P1.Y * sn) - (pp.X * cs + pp.Y * sn)
  29.         ppn1.Y = pp.Y + (-P1.X * sn + P1.Y * cs) - (-pp.X * sn + pp.Y * cs)
  30.         ppn2.X = pp.X + (P2.X * cs + P2.Y * sn) - (pp.X * cs + pp.Y * sn)
  31.         ppn2.Y = pp.Y + (-P2.X * sn + P2.Y * cs) - (-pp.X * sn + pp.Y * cs)
  32.         Return New myLine(ppn1, ppn2)
  33.     End Function
  34. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы