- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我的类(class)提出了一个问题,要求我使用眼睛、嘴巴和头部的锯齿状函数创建一个笑脸。在那之后,他们希望我们将它绘制 10 次,相互稍微重叠,并让它在每次重复时向左倾斜 10 度。我知道如何进行 for 循环,我遇到的问题是倾斜。下面是我目前所拥有的。你能为我指明倾斜的正确方向吗?
import turtle
s=turtle.Screen()
p=turtle.Turtle()
def happymouth(p,x,y):
p.setheading(-60)
jump(p,x-60.62,y+65)
p.circle(70,120)
def eyes(p,x,y):
jump(p,x+35,y+120)
p.dot(25)
jump(p,x-35,y+120)
p.dot(25)
def jump(p,x,y):
p.up()
p.goto(x,y)
p.down()
def emoticon(p,x,y):
p=turtle.Turtle()
s=turtle.Screen()
p.pensize(3)
p.setheading(0)
jump(p,x,y)
p.circle(100)
eyes(p,x,y)
happymouth(p,x,y)
jump(p,x,y)
最佳答案
你可以做到这一点,但它需要你重新考虑你的绘图逻辑。为了让表情符号在 10 度旋转下保持稳定,绘制表情符号时 turtle 的位置必须是相对的,而不是绝对的。没有 turtle.goto()
,没有 jump(turtle, x, y)
。然后为了在页面上适合你的十个表情符号,你也需要使大小相对,而不是绝对。这是执行此操作的返工:
from turtle import Turtle, Screen
def jump(turtle, x, y):
turtle.up()
turtle.goto(x, y)
turtle.down()
def head(turtle, size):
# to draw circle with current position as center, have to adjust the y position
turtle.up()
turtle.right(90)
turtle.forward(size)
turtle.left(90)
turtle.color("black", "yellow")
turtle.down()
turtle.begin_fill()
turtle.circle(size)
turtle.end_fill()
# return to the center of the circle
turtle.up()
turtle.color("black")
turtle.left(90)
turtle.forward(size)
turtle.right(90)
turtle.down()
def eyes(turtle, size):
turtle.up()
turtle.forward(0.35 * size)
turtle.left(90)
turtle.forward(0.2 * size)
turtle.right(90)
turtle.down()
turtle.dot(0.25 * size)
turtle.up()
turtle.backward(0.7 * size)
turtle.down()
turtle.dot(0.25 * size)
turtle.up()
turtle.forward(0.35 * size)
turtle.right(90)
turtle.forward(0.2 * size)
turtle.left(90)
turtle.down()
def happymouth(turtle, size):
turtle.up()
turtle.left(180)
turtle.forward(0.6 * size)
turtle.left(90)
turtle.forward(0.35 * size)
turtle.left(90)
turtle.down()
turtle.right(60)
turtle.circle(0.7 * size, 120)
turtle.up()
turtle.circle(0.7 * size, 240)
turtle.left(60)
turtle.forward(0.6 * size)
turtle.left(90)
turtle.forward(0.35 * size)
turtle.right(90)
turtle.down()
def emoticon(turtle, size):
turtle.pensize(0.03 * size)
head(turtle, size)
eyes(turtle, size)
happymouth(turtle, size)
screen = Screen()
yertle = Turtle()
width, height = screen.window_width(), screen.window_height()
yertle.setheading(-50)
for xy in range(-5, 5):
jump(yertle, xy * width / 10, xy * height / 10)
emoticon(yertle, 60)
yertle.setheading(yertle.heading() + 10)
screen.exitonclick()
上面的代码在绘制方面没有优化——它总是返回到中心以确保每个组件都是相对于它绘制的。但它基本上有效:
有一种完全不同的方法可以解决这个问题,它允许我们使用绝对 turtle.goto()
但它有自己的困难。我们可以将 turtle 本身设置为表情符号,并在页面上标记它。这也允许我们忽略相对大小,因为 turtle 游标有自己的大小调整能力:
from turtle import Turtle, Screen, Shape
def jump(turtle, x, y):
turtle.up()
turtle.goto(x, y)
turtle.down()
def head(turtle, shape, x, y):
jump(turtle, x, y - 100)
turtle.begin_poly()
turtle.circle(100)
turtle.end_poly()
shape.addcomponent(turtle.get_poly(), "yellow", "black")
def happymouth(turtle, shape, x, y):
turtle.setheading(-60)
jump(turtle, x - 60, y - 35)
turtle.begin_poly()
turtle.circle(70, 120)
turtle.end_poly()
shape.addcomponent(turtle.get_poly(), "black")
turtle.setheading(90)
def eyes(turtle, shape, x, y):
jump(turtle, x + 35, y + 20)
turtle.begin_poly()
turtle.circle(13)
turtle.end_poly()
shape.addcomponent(turtle.get_poly(), "black")
jump(turtle, x - 35, y + 20)
turtle.begin_poly()
turtle.circle(13)
turtle.end_poly()
shape.addcomponent(turtle.get_poly(), "black")
def emoticon(turtle, x, y):
shape = Shape("compound")
head(turtle, shape, x, y)
eyes(turtle, shape, x, y)
happymouth(turtle, shape, x, y)
screen.register_shape("emoticon", shape)
screen = Screen()
yertle = Turtle(visible="False")
emoticon(yertle, 0, 0)
yertle.shape("emoticon")
yertle.clear()
yertle.shapesize(0.6, 0.6)
width, height = screen.window_width(), screen.window_height()
yertle.setheading(50)
for xy in range(-5, 5):
jump(yertle, xy * width / 10, xy * height / 10)
yertle.stamp()
yertle.setheading(yertle.heading() + 10)
screen.exitonclick()
不幸的是,使用 turtle.*_poly()
完成的邮票只能由封闭的多边形组成,这意味着表情符号的微笑会有所变化:
玩得开心!
关于python - turtle 和倾斜物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19354431/
大家好,本文实现了相机碰撞检测,使相机不穿墙壁、物体,并给出了思路和代码,感谢大家~ 关键词:数字孪生、three.js、Web3D、WebGL、相机碰撞、游戏相机 我正在承接Web3D数字孪生项
我有一个大小为 12*30 的字符串的图像。我想创建一个动画,让它给人一种拉伸(stretch)字符串的感觉。我通过缩放图像来做到这一点,但我面临的问题是缩放图像没有发生碰撞。它仅出现在原始图像大小的
我的对象列表是如此初始化: $( function() { var $container = $('div.hikashop_products'); $container.isotop
我听说 swing 默认情况下是双缓冲的。我不想让 Swing 双缓冲。我正在使用双缓冲,我想添加一些 Swing 对象(现在只是添加到 JPanel 中的 JButton,然后再添加到 JFrame
几天来我一直在思考最好的解决方案,但似乎无法找到正确的想法。 我有一 block (物体),我想将它们放入尽可能小的空间中。我最终寻找的是这样的东西 http://i.stack.imgur.com/
我的纹理不仅仅是一个盒子或圆形,我的 body 需要与这个形状相同,所以我想结合多个 body 来达到我想要的形状,这甚至可能吗?或者有更好的方法吗?我正在使用带有 libgdx 框架的 java。
我遇到的情况是,我有很多计算机并且需要有唯一的 ID。 他们会通过 API 请求发送其 uniqueId。该对象看起来像 class ID { long timestamp; int id; }
我正在尝试检测一张卡片,但问题是有时图像不好并且有多个背景,如下所示: 没有很好地定义边缘 ![没有很好地定义边缘][1] 示例背景 ![示例背景][2] 我这样做了: gray = cv2.cvtC
我正在尝试从仅包含一辆车和简单背景的图像中分割汽车,如 但是我从我的实现中得到的是这个 和 分别 但它非常容易处理几乎已经分割的图像,例如。 给出类似 的结果 我使用的代码是 import cv2 i
我正在开发一个项目,在该项目中我从另一个对象/函数中引用一个变量。然而我总是返回 false。我不确定我是否正确调用它。 这是验证函数: app.validation = function(){
数组只是伪装的对象吗?为什么/为什么不呢?他们以什么方式(这样/不是)? 我一直认为 JS 中的数组和对象本质上是相同的,主要是因为访问它们是相同的。 var obj = {'I': 'me'}; v
我正在使用 PlayN 构建一个涉及石头的游戏,用户必须在物理世界中移动(通过重力等)。我希望用户能够使用触摸板直接操纵石头,并通过以下方式给它们一个速度拖拽并扔掷它们。 现在我有一个实现,其中每个石
http://jsfiddle.net/goldrunt/jGL84/42/这是来自这个 JS fiddle 的第 84 行。通过取消注释第 141-146 行,可以对球应用 3 种不同的效果。 'b
我学习Linux平台下的OpenGL。最近,我尝试使用 glutBitmapCharacter() 创建的文本作为 glu 或 glut 提供的一些二次对象的纹理。但是,glutBitmapChara
我正在使用 AndEngine 创建一个带有 box2d 扩展名的游戏。我想实现一个条件,当两个物体碰撞时,它们应该被移除或重生。最初我尝试使用 if(sprite1.collidesWith(spr
我制作了一个小型 3d 引擎。 但我在旋转功能方面遇到了一些问题。它们使物体不时拉伸(stretch)。这是数学: this.rotateX = function(angle) { var c
我在 Canvas 上制作了一个矩形 mask ,我需要 mask 外的任何东西都具有 0.8 的不透明度,因此 mask 外的所有对象都被视为不透明请看一下 fiddle 。 http://jsfi
我是 Direct3D 的新手,我在一个项目中从网络摄像头拍照并在它前面绘制一些 3D 对象。 我能够使用正交投影将网络摄像头图像渲染为背景。 //init matrix D3DXMatri
我是一名优秀的程序员,十分优秀!