使用 zelle 旋转形状(python)
Rotating shapes with zelle (in python)
我做了一个代码(使用John Zelles的图形模块和python 3.10.0)可以正常工作,但问题是它需要逆时针旋转90度,我不知道不知道该怎么做。我已经发布了一张我得到的最终结果与它应该是什么样子的图片。
左边是我做的,右边是应该的样子。
这是我的代码
win= GraphWin("",100,100)
p1=Point(0,100)
p2=Point(100,0)
for i in range (0,100,10):
x1=int(p1.getX())
y1=int(p1.getY())
x2=int(p2.getX())
y2=int(p2.getY())
s= Rectangle(Point(x1,y1-i), Point(x2-i,y2))
if (i==90 or i==70 or i==50 or i==30 or i==10):
s.setFill("red")
s.draw(win)
s.setOutline("red")
else:
s.setFill("white")
s.draw(win)
s.setOutline("white")
`
不需要旋转,向上翻转即可。您只需要更改 y 轴方向,或使用负 y 轴值。
所以,
...
y1=-int(p1.getY())
x2=int(p2.getX())
y2=-int(p2.getY())
...
应该可以解决问题。不确定您使用的是哪个库,可能有一种方法可以指定 y 轴方向(可能是在调用 GraphWin
时?),或者根据 Reverse Y-Axis in PyPlot.
恢复 y 轴方向
屏幕坐标大部分时间从屏幕的左上角开始,x 向右递增,y 向底部递增。
我做了一个代码(使用John Zelles的图形模块和python 3.10.0)可以正常工作,但问题是它需要逆时针旋转90度,我不知道不知道该怎么做。我已经发布了一张我得到的最终结果与它应该是什么样子的图片。
左边是我做的,右边是应该的样子。
这是我的代码
win= GraphWin("",100,100)
p1=Point(0,100)
p2=Point(100,0)
for i in range (0,100,10):
x1=int(p1.getX())
y1=int(p1.getY())
x2=int(p2.getX())
y2=int(p2.getY())
s= Rectangle(Point(x1,y1-i), Point(x2-i,y2))
if (i==90 or i==70 or i==50 or i==30 or i==10):
s.setFill("red")
s.draw(win)
s.setOutline("red")
else:
s.setFill("white")
s.draw(win)
s.setOutline("white")
`
不需要旋转,向上翻转即可。您只需要更改 y 轴方向,或使用负 y 轴值。
所以,
...
y1=-int(p1.getY())
x2=int(p2.getX())
y2=-int(p2.getY())
...
应该可以解决问题。不确定您使用的是哪个库,可能有一种方法可以指定 y 轴方向(可能是在调用 GraphWin
时?),或者根据 Reverse Y-Axis in PyPlot.
屏幕坐标大部分时间从屏幕的左上角开始,x 向右递增,y 向底部递增。