You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python Turtle垂直对齐三角形绘制的位置校准问题

解决Turtle绘制垂直对齐三角形的位置偏移问题

我明白你遇到的问题了——前两个三角形看起来对齐了,但后面的就跑偏了,核心问题出在画完三角形后的位置移动逻辑上。你的代码现在是沿着当前三角形的侧边移动,这完全没对准上一个三角形基线的中点,只是前两个碰巧看起来对而已。

先拆解需求:每个三角形的顶部顶点必须恰好落在上一个三角形底边(基线)的中点,而且要垂直排列。要实现这个,我们得先搞清楚等边三角形的关键参数:边长为a的等边三角形,高是(√3/2)*a,这个高正好是从顶部顶点到底边中点的垂直距离,这就是我们移动的核心依据。

修正后的代码

from turtle import *

NUMBER_OF_SHAPES = 4

# 初始定位:第一个三角形的顶部顶点在画布中心上方
penup()
goto(0, 0)
pendown()

for shape in range(1, NUMBER_OF_SHAPES + 1):
    side_length = 20 * shape
    # 计算当前等边三角形的高
    triangle_height = (3**0.5 / 2) * side_length
    
    # 从顶部顶点开始画等边三角形:左下→右→左上回到顶点
    left(120)
    forward(side_length)
    left(120)
    forward(side_length)
    left(120)
    forward(side_length)
    
    # 移动到当前三角形底边的中点(也就是下一个三角形的顶部顶点)
    penup()
    setheading(270)  # 切换方向为垂直向下
    forward(triangle_height)
    pendown()

done()

关键修正点解释

  1. 初始定位调整:我把第一个三角形的起点设为它的顶部顶点(画布原点),这样后续的移动逻辑更直观,完全围绕“顶部顶点→下一个顶部顶点”的垂直关系展开。
  2. 三角形绘制顺序:从顶部顶点出发画三条边,画完后会自动回到顶部顶点,不需要额外调整位置来复位。
  3. 精准移动逻辑:画完一个三角形后,直接垂直向下移动当前三角形的高的距离——这个距离正好是从顶部顶点到底边中点的垂直长度,完美满足“下一个三角形顶点在上一个基线中点”的要求。

原代码的问题所在

你原来的left(120) → forward(20*shape) → right(120)移动方式是沿着当前三角形的侧边斜着走,完全没有对准底边中点。前两个三角形看起来对齐只是巧合,但随着边长增大,偏移量会越来越明显,这就是后两个三角形不对齐的原因。

内容的提问来源于stack exchange,提问作者Aaliyah Amira

火山引擎 最新活动