You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Turtle绘制以(200,-200)为半分界点的短半径椭圆?

Python Turtle 椭圆绘制问题解决

问题描述

绘制椭圆时需满足:

  • 椭圆的底部端点准确位于(200, -200)
  • 竖直轴线需严格平分椭圆
  • 仅允许输入短半径r、字体大小、字体/轴线颜色、椭圆颜色,禁止使用额外库

原代码问题分析

  1. 椭圆绘制的起点和初始角度错误,导致椭圆位置偏离预期点
  2. 轴线的起点与长度计算错误,无法对齐椭圆对称轴

修正方案及代码

import turtle

fontsize = int(input())  # 字体大小(示例:60)
maincol = input()        # 文字和轴线颜色(示例:MidnightBlue)
r = int(input())         # 椭圆短半径(示例:120)
ovalcol = input()        # 椭圆颜色(示例:LawnGreen)

st = turtle.Turtle()
st.speed(0)  # 加快绘制速度

# 绘制公式文本
st.penup()
st.goto(-300, 150)
st.color(maincol)
formula = f"\N{GREEK SMALL LETTER THETA} = \N{GREEK SMALL LETTER OMEGA}t + \N{VULGAR FRACTION ONE HALF}\N{GREEK SMALL LETTER EPSILON}t\N{SUPERSCRIPT TWO}"
st.write(formula, move=False, align='left', font=('Times New Roman', fontsize, 'normal'))

# 计算椭圆关键位置:底部端点在(200, -200),长半径为2r
oval_bottom = (200, -200)
oval_center = (200, oval_bottom[1] + 2*r)
oval_left = (oval_center[0] - r, oval_center[1])

# 绘制椭圆
st.penup()
st.goto(oval_left)
st.color(ovalcol)
st.pendown()
st.begin_fill()
st.setheading(270)  # 初始方向向下,确保椭圆竖直对齐
for _ in range(2):
    st.circle(2*r, 90)  # 绘制长半径圆弧(竖直方向)
    st.circle(r, 90)     # 绘制短半径圆弧(水平方向)
st.end_fill()

# 绘制平分轴线
st.penup()
st.goto(oval_bottom)
st.color(maincol)
st.pendown()
st.setheading(90)  # 方向向上
st.forward(4*r)    # 轴线长度等于椭圆长轴

st.hideturtle()
turtle.done()

关键修正点

  • 位置校准:通过计算明确椭圆中心与端点位置,确保底部端点严格落在(200, -200)
  • 椭圆绘制逻辑:调整初始绘制角度为270度,交替绘制长、短半径圆弧,生成对称的竖直椭圆
  • 轴线对齐:轴线起点设为椭圆底部,长度匹配椭圆长轴,实现完美平分

内容的提问来源于stack exchange,提问作者Денис Кузьмичев

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:45:15