初学者的Python书趋向于中间页越来越陡峭,几乎没有任何解释。因此,在我因无法阅读文档而感到无能为力之后,我很难辨别turtle.setworldcoordinates函数的功能,这对文档无济于事,并且不能凭经验从文档中推断出一些想法。谁能指出这个功能在海龟图形中起什么作用?
最佳答案
由于turtle.py是Python附带的,并且是用Python编写的,因此您可以查看源代码以查看函数的功能(我发现我对turtle.py做了很多工作),请参见下文。
我相信setworldcoordinates()
允许您选择一个更方便解决问题的坐标系。例如,假设您不希望(0,0)位于屏幕中央。如果不适合使用偏移量,则可以使用setworldcoordinates()
将其移动到角落,而不是合并偏移量。您还可以设置在水平和垂直方向上具有不同缩放比例的坐标系。
例如,参见my answer to this question,其中定义了一个例程,该例程使用setworldcoordinates()
缩放所绘制的任何内容,而无需将任何缩放因子合并到自己的绘制代码中。
或者,您可以设置一个坐标系统,其角在(0,0),(1,0),(0,1)和(1,1)处,以完全在单位正方形内工作。
棘手的一点是,它将坐标系映射到现有的窗口形状上-因此,您必须将坐标调整到窗口,或者重新调整窗口的形状以匹配坐标系。否则,您可能会发现自己的长宽比不理想。
def setworldcoordinates(self, llx, lly, urx, ury):
"""Set up a user defined coordinate-system.
Arguments:
llx -- a number, x-coordinate of lower left corner of canvas
lly -- a number, y-coordinate of lower left corner of canvas
urx -- a number, x-coordinate of upper right corner of canvas
ury -- a number, y-coordinate of upper right corner of canvas
Set up user coodinat-system and switch to mode 'world' if necessary.
This performs a screen.reset. If mode 'world' is already active,
all drawings are redrawn according to the new coordinates.
But ATTENTION: in user-defined coordinatesystems angles may appear
distorted. (see Screen.mode())
Example (for a TurtleScreen instance named screen):
>>> screen.setworldcoordinates(-10,-0.5,50,1.5)
>>> for _ in range(36):
... left(10)
... forward(0.5)
"""
if self.mode() != "world":
self.mode("world")
xspan = float(urx - llx)
yspan = float(ury - lly)
wx, wy = self._window_size()
self.screensize(wx-20, wy-20)
oldxscale, oldyscale = self.xscale, self.yscale
self.xscale = self.canvwidth / xspan
self.yscale = self.canvheight / yspan
srx1 = llx * self.xscale
sry1 = -ury * self.yscale
srx2 = self.canvwidth + srx1
sry2 = self.canvheight + sry1
self._setscrollregion(srx1, sry1, srx2, sry2)
self._rescale(self.xscale/oldxscale, self.yscale/oldyscale)
self.update()
我的书给出了一个奇怪的例子,例如:setworldcoordinates(-10,0.5,
1、2),你能告诉我这个操作到底是做什么的吗?
这些
setworldcoordinates()
怪异的例子比比皆是,但解释不多,例如,请参见@TessellatingHeckler的幻灯片。它们只是表明您可以使用坐标进行极端操作。但是要回答您的后续问题,如果我们有一个100 x 100的窗口,这就是该特定调用将对我们的坐标系执行的操作:关于python - turtle.setworldcoordinates函数有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37154189/