今天像品如姐一样卓越了吗 2019-06-19 13:16 采纳率: 0%
浏览 440

求大佬解释python的代码,期末作业太难了,主要是辅助函数那里都看不懂

import turtle as tur

from math import sin, cos, pi

DRAW_SPEED = 3

PEN_SIZE = 6
WIDTH = 600
HEIGHT = 600

"""
辅助函数
"""
def linear_interp(p1, p2, t):
return p1 * (1 - t) + p2 * t

def bezier1(p1, p2, t):
return (
linear_interp(p1[0], p2[0], t),
linear_interp(p1[1], p2[1], t)
)

def bezier2(p1, p2, p3, t):
return bezier1(
bezier1(p1, p2, t),
bezier1(p2, p3, t),
t
)

def bezier3(p1, p2, p3, p4, t):
return bezier1(
bezier2(p1, p2, p3, t),
bezier2(p2, p3, p4, t),
t
)

def bezier_3(p1, p2, p3, p4):
for t in [x / 15 for x in range(0, 15 + 1)]:
x, y = bezier3(p1, p2, p3, p4, t)
tur.goto(x, y)

def p(c):

return complex(
+ c.real - WIDTH / 2,
- c.imag + HEIGHT / 2
)

def M(c):
tur.goto(p(c).real, p(c).imag)

def L(start, end):
M(start)
M(end)

def C(start, control1, control2, end):
M(start)
bezier_3(
(p(start).real, p(start).imag),
(p(control1).real, p(control1).imag),
(p(control2).real, p(control2).imag),
(p(end).real, p(end).imag))

def f(sp=0j, rgb='red'):
tur.fillcolor(rgb)
M(sp)
tur.begin_fill()

nf = tur.end_fill

def pd(sp, rgb="#E4007F", bold=PEN_SIZE):
tur.color(rgb)
tur.pensize(bold)
M(sp)
tur.pendown()

def pu():
tur.penup()
tur.pensize(PEN_SIZE)
tur.color("black")

def E(
cx, cy,
a, b,
matrix=(1, 0, 0, 1, 0, 0)):
cp = complex(cx, cy)
sp = cp + a

tur.penup()
M(transform(sp, matrix))
tur.color("#FB8D8C")
tur.pensize(0.1)
tur.fillcolor("#FB8D8C")
tur.begin_fill()
tur.pendown()
for i in range(0, 360 + 1):
x = a * sin(i * 2 * pi / 360 + pi / 2) + cx
y = b * cos(i * 2 * pi / 360 + pi / 2) + cy
p = complex(x, y)
M(transform(p, matrix))
nf()
pu()

def transform(p, matrix=(1, 0, 0, 1, 0, 0)):
a, b, c = matrix[0], matrix[1], matrix[2],
d, e, f = matrix[3], matrix[4], matrix[5],
return complex(
a * p.real + c * p.imag + e,
b * p.real + d * p.imag + f
)

def Mv(c):
tur.penup()
tur.goto(p(c).real, p(c).imag)
tur.pendown()

"""
绘图代码
"""
screen = tur.Screen()
screen.bgcolor("white")

tur.tracer(2)
tur.pensize(PEN_SIZE)
tur.speed(DRAW_SPEED)
tur.penup()

右眼

pd(252.7+228.84j, rgb="#29ABE2", bold=6) # 右眼-pd
f(252.7+228.84j, "#29ABE2")
C(252.7+228.84j, 261.37+225.51j, 270.03+222.17j, 278.7+218.84j)
C(278.7+218.84j, 284.05+216.78j, 281.73+208.08j, 276.31+210.16j)
C(276.31+210.16j, 267.64+213.49j, 258.98+216.83j, 250.31+220.16j)
C(250.31+220.16j, 244.95+222.22j, 247.28+230.92j, 252.7+228.84j)
L(252.7+228.84j, 252.7+228.84j)
nf()

  • 写回答

1条回答 默认 最新

  • New_boy25 2019-06-25 16:39
    关注

    代码有点乱,建议用插入代码片的方式展示

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?