0
그래서 극좌표를 사용하여 피자에 페퍼로니를 그리려고하지만 원점을 이동하는 데 문제가 있습니다. 여기에 내 코드입니다 :비주얼 베이직에서 극좌표를 사용하여 그림을 그릴 때 원점 이동
Public Class polarToCartesian
Property X As Double
Property Y As Double
Sub New(Radius As Double, AngleDegree As Double)
Dim AngleRadian As Double = AngleDegree * 2 * Math.PI/360
X = Radius * Math.Cos(AngleRadian)
Y = Radius * Math.Sin(AngleRadian)
End Sub
End Class
Public Class CartesianToPolar
Property Radius As Double
Property AngleRadian As Double
ReadOnly Property AngleDegree As Double
Get
Return AngleRadian * 360/(2 * Math.PI)
End Get
End Property
Sub New(X As Double, Y As Double)
Radius = (X^2 + Y^2)^0.5
AngleRadian = Math.Atan2(Y, X)
End Sub
End Class
그리고 여기가 pepperonis 그리기 해요 방법은 다음과 같습니다 내 결과를 여기에
If pTopping = True Then
Dim counter = 0
Dim imgPic(3) As Image
imgPic(0) = pepperoniOne
imgPic(1) = pepperoniTwo
imgPic(2) = pepperoniThree
Do Until counter > 38
Dim value As Integer = CInt(Int((3 * Rnd()) + 0))
Dim i = imgPic(value)
Dim PTC As New polarAndCartesian(CInt(Int((60 * Rnd()) + 0)), CInt(Int((360 * Rnd()) + 0)))
e.Graphics.DrawImage(i, CInt(PTC.X), CInt(PTC.Y))
counter += 1
Loop
End If
그리고있어 :
나는 지점을 이동하는 방법을 어떤 아이디어 내가 드로잉을 시작하기 전에 극좌표상의 원점? 나는 이걸로 머리를 감싸는 데 어려움을 겪고있다.
중앙으로 토핑을 집재 피하기 위해, 반경이 어두운 R = Math.Sqrt (CDbl에는 '로 선택 될 수있다 :
는 .NET 0과 2 사이의 임의의 정수를 얻으려면 rand.Next())/Integer.MaxValue) * rMax' 여기서'rand = New Random()'과'rMax'는 허용되는 최대 반지름입니다 (아마 rPizza - rPepperoni). 참조 : [원 안의 임의의 점] (http://stackoverflow.com/a/29061071/1115360). –
감사합니다. 나는 마지막 부분 주위에 내 머리를 감쌀 수 없었다. .. 나는 극좌표를 세우는 것이 나의 두뇌를 하루 동안 튀겼다 고 생각한다. – Dunnage