求问大佬们
vb吧
全部回复
仅看楼主
level 11
这是我作业的一道题,旋转公式那是对的,为什么结果图形没有旋转呢[泪],请赐教,万分感谢!
Private Sub Form_Load()
Me.Scale (-500, 500)-(500, -500)
Line (-500, 0)-(500, 0)
Line (0, 500)-(0, -500)
DrawWidth = 5
Me.Circle (0, 0), 0, vbRed
CurrentX = 0: CurrentY = 0: Print "(0,0)"
Dim x1 As Double
Dim y1 As Double
Dim x2 As Double
Dim y2 As Double
Dim x3 As Double
Dim y3 As Double
x1 = InputBox("输入x1")
y1 = InputBox("输入y1")
x2 = InputBox("输入x2")
y2 = InputBox("输入y2")
x3 = InputBox("输入x3")
y3 = InputBox("输入y3")
Line (x1, y1)-(x2, y2), RGB(0, 0, 255)
Line (x2, y2)-(x3, y3), RGB(0, 0, 255)
Line (x3, y3)-(x1, y1), RGB(0, 0, 255)
Dim q As Double
Dim l As Double
Dim m As Double
Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
Dim x4 As Double
Dim y4 As Double
Dim x5 As Double
Dim y5 As Double
Dim x6 As Double
Dim y6 As Double
q = InputBox("输入角度")
l = InputBox("输入X方向平移因子")
m = InputBox("输入Y方向平移因子")
a = InputBox("输入放大系数a")
b = InputBox("输入放大系数b")
c = InputBox("输入放大系数c")
d = InputBox("输入放大系数d")
q = q * PI / 180
x4 = x1 * Cos(q) - y1 * Sin(q)
y4 = x1 * Sin(q) + y1 * Cos(q)
x5 = x2 * Cos(q) - y2 * Sin(q)
y5 = x2 * Sin(q) + y2 * Cos(q)
x6 = x3 * Cos(q) - y3 * Sin(q)
y6 = x3 * Sin(q) + y3 * Cos(q)
x4 = x4 + l
y4 = y4 + m
x5 = x5 + l
y5 = y5 + m
x6 = x6 + l
y6 = y6 + m
x4 = a * x4 + c * y4
y4 = b * x4 + d * y4
x5 = a * x5 + c * y5
y5 = b * x5 + d * y5
x6 = a * x6 + c * y6
y6 = b * x6 + d * y6
Line (x4, y4)-(x5, y5), RGB(0, 255, 0)
Line (x5, y5)-(x6, y6), RGB(0, 255, 0)
Line (x6, y6)-(x4, y4), RGB(0, 255, 0)
End Sub
2020年04月28日 06点04分 1
level 11
然后最终图形坐标和我手算的结果对不上。。不知道哪出错了。。
2020年04月28日 06点04分 2
level 15
我不知道公式,所以没法看出来你哪里错了;不过如果你把公式发出来,我或许可以给你转换成正确的程序代码
2020年04月28日 06点04分 3
好的,谢谢 在楼下
2020年04月28日 07点04分
level 11
顺序是先旋转再平移最后放大
2020年04月28日 07点04分 4
level 15
看你发的公式,x*=ax+cy,y*=bx+dy这一组应该是所有的变换通用的公式吧,不应该用它,也就是说你没必要输入a,b,c,d四个数,放大系数应该是一个数(就是把x和y都乘以同一个数);实际上,题目里也说了,放大系数a=d=2,确实是一个数
旋转和平移的部分应该是对的,就是最后的放大有问题
2020年04月28日 07点04分 5
好的,我试试,非常感谢
2020年04月28日 07点04分
或者,比例变换的公式是x*=ax,y*=dy,a和d可以是不同的两个数,你可以分别输入横向放大系数a和纵向放大系数d,但是b和c确实是不必要的
2020年04月28日 07点04分
我试了试感觉还是旋转那没用[泪] 把放大那部分代码删掉后 他还是不旋转。。
2020年04月28日 07点04分
bc那我只要输入0就行了吧 应该不影响吧 还是他不旋转的问题。。[泪]
2020年04月28日 07点04分
1