|
|

楼主 |
发表于 2006-1-7 01:58:00
|
显示全部楼层
Re: 寻高手来实现.
Type Point
Dim X As Double
Dim Y As Double
End Type
Private Function Transform(A As Point, O As Point, theta As Double) As Point
Dim B As Point, r As Double, Arg As Double
r = Sqrt((A.X - O.X) ^ 2 + (A.Y - O.Y) ^ 2)
If (A.X - O.X = 0) Then
Arg = IIf(A.X - O.X > 0, pi/2, -pi/2)
Else
Arg = Atn((A.Y - O.Y) / (A.X - O.X))
If (A.Y - O.Y < 0) Then Arg = pi + Arg
End If
End If
Arg = Arg + theta 'Rotate the point
B.X = CLng(O.X + r * cos(Arg))
B.Y = CLng(O.Y + r * sin(Arg))
Transform =B
End Function
我朋友为实现第一个问题所写的代码 .
不过没有通过.
然后声明一个Point数组Points,渲染部分如下:
Private Sub Render()
Line1.X1 = CLng(Points(0).X)
Line1.Y1 = CLng(Points(0).Y)
Line1.X2 = CLng(Points(1).X)
Line1.Y2 = CLng(Points(1).Y)
Line2.X1 = CLng(Points(1).X)
Line2.Y1 = CLng(Points(1).Y)
Line2.X2 = CLng(Points(2).X)
Line2.Y2 = CLng(Points(2).Y)
Line3.X1 = CLng(Points(2).X)
Line3.Y1 = CLng(Points(2).Y)
Line3.X2 = CLng(Points(0).X)
Line3.Y2 = CLng(Points(0).Y)
End Sub
Private Sub Rotate()
Dim Count As Integer
For Count = 0 To Points.Length - 1
Points(Count) = Transform(Points(Count))
Next
End Sub
|
|