|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。8 r! ?8 ?7 _2 S. k
程序分析:无。) ]$ O2 X$ ]" s$ Q, @8 C
- import math
" @2 @9 `6 F- I - from tkinter import *
% o4 W& x$ l+ ^' {; i' H T& o/ T - 3 a; c' e6 V* k3 r5 z+ d
- class PTS:5 ?1 H- H: h0 s
- def __init__(self):
- @5 i. A9 D! v+ B - self.x = 0
; Q8 T5 p7 _* Z: Z0 l7 A - self.y = 0
/ d& n9 }7 }1 {' T H - points = []
3 @- K8 A* \% z2 T; Y; `, J - , c' S3 ~* E6 Z0 v8 t
- def LineToDemo():
, ^( T$ r- |6 c# f2 a - screenx = 400# |) b3 |8 J$ `% ~
- screeny = 400% `: s# O8 T8 J. G$ e
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')
( E2 v n3 w" L8 U1 J- f0 |! o* {! | - # m; ?! n0 L3 y0 u% Q @
- AspectRatio = 0.85# ?% s+ T* |) J# d: Y2 r9 G
- MAXPTS = 15. _. ]; P/ ^, ^" [! \
- h = screeny6 L. O& q. z9 R N7 D
- w = screenx4 J9 m6 i! O4 U' H8 |" c) u% g- j* R
- xcenter = w / 2
* R, ]/ I( v# X; y' e - ycenter = h / 2
h; M- f5 s) Z - radius = (h - 30) / (AspectRatio * 2) - 20
+ O; o$ u: w7 t3 j+ S/ w$ b0 ^6 l - step = 360 / MAXPTS/ P, i5 O8 E5 A* o
- angle = 0.07 y! J8 u! H$ z
- for i in range(MAXPTS):2 o! u0 F8 f4 P2 g! Z2 p) [
- rads = angle * math.pi / 180.0
; V" U3 h1 L" a5 \! { l - p = PTS()( q/ C. y1 Q: d
- p.x = xcenter + int(math.cos(rads) * radius)
9 ~- R" T! i% X - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
/ T4 i% R5 z D& ]. z/ u - angle += step9 f: p/ Z6 e0 J" x
- points.append(p)
' L5 k' | |0 J @ - canvas.create_oval(xcenter - radius,ycenter - radius,; i9 I; H: m1 D" D9 m8 j, d7 H
- xcenter + radius,ycenter + radius)4 i& x5 t" M5 {+ l. F2 x; I
- for i in range(MAXPTS):+ W! b1 a9 `& q+ f: k
- for j in range(i,MAXPTS):
# s: _- g/ c! W7 L# l - canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)6 ~. ?( U9 ~. O1 V
* W$ n% E$ H- G, H7 W- canvas.pack()
) J- ]) O! L9 M# i- G - mainloop()
/ W5 B6 X8 X3 A2 N. e. r" d - if __name__ == '__main__':; d9 f0 i0 T0 M! T- _1 d, e
- LineToDemo()
复制代码 |
|