Вращение линии за произвольную точку - Visual Basic .NET
Формулировка задачи:
Привет. Как повернуть на определенный угол линию? Центр вращения - произвольная точка на этой линии.
Решение задачи: «Вращение линии за произвольную точку»
textual
Листинг программы
Public Class Form4 Private blackPen As Pen Private colorPen As Pen Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim ln As New myLine(New PointF(10, 10), New PointF(100, 100)) Dim ln2 As myLine = ln.RotateAtPoint(New PointF(50, 50), CDbl(TextBox1.Text)) blackPen = New Pen(Color.Black, 2) colorPen = New Pen(Brushes.Red, 2) Dim gg As Graphics = Panel1.CreateGraphics gg.Clear(Panel1.BackColor) gg.DrawLine(blackPen, ln.P1, ln.P2) gg.DrawLine(colorPen, ln2.P1, ln2.P2) End Sub End Class Public Class myLine Public Sub New(ByVal pp1 As PointF, ByVal pp2 As PointF) _P1 = pp1 _P2 = pp2 End Sub Public Property P1 As PointF Public Property P2 As PointF Public Function RotateAtPoint(ByVal pp As PointF, ByVal ang As Double) As myLine 'ang в градусах, положительное вращение против час. стрелки Dim angR As Double = ang * Math.PI / 180 Dim sn As Double = Math.Sin(angR) Dim cs As Double = Math.Cos(angR) Dim ppn1 As New PointF, ppn2 As New PointF ppn1.X = pp.X + (P1.X * cs + P1.Y * sn) - (pp.X * cs + pp.Y * sn) ppn1.Y = pp.Y + (-P1.X * sn + P1.Y * cs) - (-pp.X * sn + pp.Y * cs) ppn2.X = pp.X + (P2.X * cs + P2.Y * sn) - (pp.X * cs + pp.Y * sn) ppn2.Y = pp.Y + (-P2.X * sn + P2.Y * cs) - (-pp.X * sn + pp.Y * cs) Return New myLine(ppn1, ppn2) End Function End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д