我试图制作一个用户输入字符串长度的钟摆。我被困在如何保持"常数"字符串长度,问题是,当字符串以一个角度放置时,字符串保持相同的长度,但由于它处于一个角度缩短,我试图用这个代码来解决这个问题:
If Angle > 0 Then
If Angle < 50 Then
x = Asin(Angle) * (LengthOfString + (Angle * 70))
y = Acos(Angle) * (LengthOfString + (Angle * 70))
e.Graphics.DrawLine(Pens.Black, 270, 0, (270 + x), (0 + y))
Else
x = Asin(Angle) * (LengthOfString + ((100 - Angle) * 70))
y = Acos(Angle) * (LengthOfString + ((100 - Angle) * 70))
e.Graphics.DrawLine(Pens.Black, 270, 0, (270 + x), (0 + y))
End If
Else
Angle = Angle ^ 2
Angle = Sqrt(Angle)
If Angle < 50 Then
x = Asin(Angle) * (LengthOfString + (Angle * 70))
y = Acos(Angle) * (LengthOfString + (Angle * 70))
e.Graphics.DrawLine(Pens.Black, 270, 0, (270 - x), (0 + y))
Else
x = Asin(Angle) * (LengthOfString + ((100 - Angle) * 70))
y = Acos(Angle) * (LengthOfString + ((100 - Angle) * 70))
e.Graphics.DrawLine(Pens.Black, 270, 0, (270 - x), (0 + y))
End If
End If
使用(Angle * 70)
是一个完全的侥幸,我首先尝试做LengthOfString + Angle
希望它的长度能解决它,这适用于字符串长度为100但是当我将其扩展为150它最终看起来像钟形曲线。
我不知道如何解决这个问题,因为对于不同的长度尺寸,它必须有所不同。
答案 0 :(得分:2)
正确的公式是
x = Sin(Angle) * LengthOfString
y = Cos(Angle) * LengthOfString
0 <= Angle&lt; = 2 * pi