猫史档案馆


【Python作品分享】立体图形绘制【作品秀】

用户:Rick_FolishRick_Folish查看:0 回复:0 评论:0 创建时间:2023-02-11T22:05:04


【作品展示】

center_image

 

【作品介绍】

可以自行编辑的立体图形绘制程序,相较于上一个版本优化了透视原理

 

【作品源代码】

from turtle import *
from math import *
import time
tracer(0)
pu()
run = True
hideturtle()
pensize(2)
d = 1500
s = 1/50
data0 = [(-50, -50, -50), (-50, 50, -50), (-50, 50, 50), (-50, -50, 50), (50, -50, -50), (50, 50, -50),
         (50, 50, 50), (50, -50, 50), (0, 0, -100), (0, -100, 0), (0, 0, 100), (0, 100, 0), (100, 0, 0), (-100, 0, 0)]  # (z,x,y)
data1 = data0.copy()
data2 = [(8, 0), (8, 1), (8, 4), (8, 5), (9, 0), (9, 7), (9, 4), (9, 3), (10, 3), (10, 2), (10, 7), (10, 6), (11, 6), (11, 2), (11, 5),
         (11, 1), (12, 7), (12, 6), (12, 5), (12, 4), (13, 3), (13, 2), (13, 1), (13, 0)]
while run == True:
    hr0 = 10
    vr0 = 0
    for j in range(max(hr0, vr0)):
        vr = vr0/(max(hr0, vr0))
        hr = hr0/(max(hr0, vr0))
        for a in range(len(data0)):
            data1[a] = (data1[a][0]*cos(radians(vr))-data1[a][2]*sin(radians(vr)),
                        data1[a][1], data1[a][0]*sin(radians(vr))+data1[a][2]*cos(radians(vr)))
        for a in range(len(data0)):
            data1[a] = (data1[a][1]*sin(radians(hr))+data1[a][0]*cos(radians(hr)),
                        data1[a][1]*cos(radians(hr))-data1[a][0]*sin(radians(hr)), data1[a][2])
        clear()
        for i in range(len(data2)):
            pu()
            goto(data1[data2[i][0]][1]/abs(d-data1[data2[i][0]][0])*d,
                 data1[data2[i][0]][2]/abs(d-data1[data2[i][0]][0])*d)
            pd()
            goto(data1[data2[i][1]][1]/abs(d-data1[data2[i][1]][0])*d,
                 data1[data2[i][1]][2]/abs(d-data1[data2[i][1]][0])*d)
            pu()
        update()
        time.sleep(s)
update()
done()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页