from math import *;from tkinter import *;import random as rnd;
# 算法设计 项道德 daode1212,daode3056 2021-09-26
# 使用tkinter绘图:
root Tk()
canvas Canvas(width 1200, height 800, bg #000 )
canvas.pack()
x0 600;y0 400;xa yb y0
#绘制背景圆
canvas.create_oval(x0-225, y0-225, x0 225, y0 225,
tag p_ str(0), width 1, fill #006 )
s 0.0
while s 3600: #总时间控制
s s 0.01 #旋转速度
for t in range(0, 3600, 5): # 总循环多少次
g s t/2400;R 225
#生成球面曲线点
xc R*cos(g*15)*cos(g*6)
yc R*sin(g*15)*cos(g*6)
zc R*sin(g*6)
#绕Z轴旋转空间点
x1 xc*cos(s/2)-yc*sin(s/2)
y1 xc*sin(s/2) yc*cos(s/2)
z1 zc
#绕Y轴旋转空间点
x2 x1*cos(s*3)-z1*sin(s*3)
y2 y1
z2 x1*sin(s*3) z1*cos(s*3)
#绕X轴旋转空间点
x3 x2
y3 y2*cos(s/4)-z2*sin(s/4)
z3 y2*sin(s/4) z2*cos(s/4)
#处理远近 以不同的粗细与颜色呈现 再以线段集方式绘制曲线:
rgb # str(hex(0xD00000 t%0x2FFFFF))[2:] # 生成颜色
if z3 0:
rgb #004 #背面曲线颜色
if t 0:
canvas.create_line(x0 xa,y0 yb,x0 x3,y0 y3,
tag L_ str(t), width (z3/20 if z3 0 else 0) , fill rgb)
xa yb y3 #替换线段起点
#画布更新:
canvas.update()
# 重绘前删除已经绘制图像:
for t in range(0, 3600, 5):
canvas.delete( L_ str(t))
root.mainloop()
旋转球截图如下



