Python_Turtle绘制[椭圆柱体]函数(采用二维面叠法绘制三维立体)(turtle实现)
【点动成线】
Python_Turtle绘制心形线(采用函数描点法绘制)(turtle实现)
Python_Turtle绘制一元二次方程(采用函数描点法绘制)(turtle实现)
Python_Turtle绘制正弦函数(采用函数描点法绘制)(turtle实现)
【线动成面】
Python_Turtle绘制余弦函数(采用一维线描法绘制二维平面)(turtle实现)
Python_Turtle绘制[圆]函数(采用一维线描法绘制二维平面)(turtle实现)
Python_Turtle绘制[椭圆]函数(采用一维线描法绘制二维平面)(turtle实现)
【注】本文包含了前面介绍过的描点画线法、描线画面法,以及本次的叠面成体法。
【注1】采用面动成体的原理,使用二维平面去绘制三维立体模型!
【注2】密集的叠加(描)平面图形即可!
【注3】采用斜二测画法(x与y夹角45度),其中在xoy平面上,x值不变,y是直角坐标时Y的一半。
1.FaceToVolume.py
import turtle as tle
import math
def turtleSet():
tle.speed(0)
tle.delay(0)
tle.pensize(2)
tle.pencolor("blue")
#tle.tracer(True)
tle.tracer(False)
def CreateXYZ():
tle.pencolor("black")
tle.penup()
tle.goto(0,0)
tle.seth(0)
tle.pendown()
tle.goto(200,0)
tle.seth(135)
tle.fd(10)
tle.penup()
tle.goto(200,0)
tle.pendown()
tle.seth(-135)
tle.fd(10)
tle.penup()
tle.goto(203,0)
tle.write("x(X)",font=("宋体",16,"normal"))
tle.penup()
tle.goto(0,0)
tle.seth(0)
tle.pendown()
tle.goto(-200,0)
tle.penup()
tle.goto(0,0)
tle.seth(45)
tle.pendown()
tle.fd(210)
tle.penup()
tle.fd(3)
tle.write("y",font=("宋体",16,"normal"))
tle.bk(3)
tle.pendown()
tle.seth(-180)
tle.fd(10)
tle.penup()
tle.bk(10)
tle.pendown()
tle.seth(-90)
tle.fd(10)
tle.penup()
tle.bk(10)
tle.penup()
tle.goto(0,0)
tle.seth(-135)
tle.pendown()
tle.fd(200)
tle.penup()
tle.goto(0,0)
tle.seth(90)
tle.pendown()
tle.fd(200)
tle.penup()
tle.fd(3)
tle.write("z(Y)",font=("宋体",16,"normal"))
tle.pendown()
tle.seth(-135)
tle.fd(10)
tle.penup()
tle.bk(10)
tle.pendown()
tle.seth(-45)
tle.fd(10)
tle.penup()
tle.bk(10)
tle.penup()
tle.goto(0,0)
tle.seth(-90)
tle.pendown()
tle.fd(200)
tle.penup()
def subline(x,coll,z,y=[]):
tle.pencolor(coll)
tle.penup()
for y0 in y:
if math.fabs(y0 - z) <= 0.0001:
#print("OK",x,y0,z)
tle.goto(x,0+z)
tle.pendown()
tle.dot(1)
tle.penup()
else:
tle.goto(x,0+z)
tle.pendown()
tle.seth(45)
tle.fd(y0/2)
tle.bk(y0)
tle.penup()
def subface(z,coll):
k = 0
i = -150
while(i<=150):
if k == 1:
k = 0
y = []
y.append(math.sqrt(2500-i*i*(1/9)))
subline(i,coll,z,y)
i = i + 1
k = k + 1
def CreateV():
z = -50
col = ["blue","green","orange"]
k = 0
while z <= 50:
if k == 3:
k = 0
if z == -50 or z == 50:
subface(z,"green")
else:
subface(z,col[k])
z=z+2
k = k + 1
turtleSet()
CreateXYZ()
CreateV()
CreateXYZ()
tle.done()
2.结果示例
3.动态图展示画法
分类:
Python【杂项练习】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现