初学者的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函数有什么作用?-LMLPHP

关于python - turtle.setworldcoordinates函数有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37154189/

10-12 07:31