如何用Python turtle绘制3D多色三角形并正确设置边长参数
问题修正与实现方案
现有代码问题梳理
- 函数参数逻辑混淆:
draw_art_cube接收的是点击的坐标值,你错误地把边长数值当做坐标传给了draw_triangle - API调用错误:
turtle.left()方法需要传入的是角度值,你传入边长width属于参数类型用错 - 缺少必要依赖导入:代码用到的
math、random库没有提前导入
尺寸对应逻辑说明
你提到的参数组合完全符合等腰直角三角形的边长规则:
- 两条直角边长度相等,均为你定义的
width - 斜边长度满足勾股定理:$\sqrt{width^2 + width^2} = width * \sqrt{2}$,和你给出的参数完全匹配
修正后完整代码
import turtle import math import random turtle.setup(575,575) pen = turtle.Turtle() pen.speed(0) pen.pensize(2) pen.hideturtle() width = random.randint(25,100) def draw_art_cube(x,y): # 传入点击坐标作为绘制起点,同时传入边长参数 draw_triangle(x, y, width) def draw_triangle(start_x, start_y, side_width): pen.up() pen.setpos(start_x, start_y) pen.down() pen.setheading(0) # 第一条直角边,长度为side_width pen.forward(side_width) # 转向斜边方向 pen.left(135) # 斜边,长度为side_width * math.sqrt(2) pen.forward(side_width * math.sqrt(2)) # 转向第二条直角边方向 pen.left(135) # 第二条直角边,长度为side_width,绘制后自动闭合 pen.forward(side_width) turtle.onscreenclick(draw_art_cube) turtle.done()
如果需要调整三角形的朝向,只需要修改setheading的初始角度和转向的角度数值即可,边长的比例关系不需要改动。
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

