|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。
& ^6 W7 d3 X/ f l' e程序分析:无。( @3 [+ N7 D0 |7 a( y
- import math7 w ]9 n! z+ F5 O0 J) i8 ^' ?
- from tkinter import *
6 G2 N8 d4 T% ?% F c; i
& q& }. H g- H. ^4 d- class PTS:
& j- J# {$ }" F' A2 u/ n - def __init__(self):
9 Z# s; f q& y* H! c7 M* X5 j2 H - self.x = 0: O( D, D& @4 X3 H
- self.y = 0
' S4 ?" I: U1 ^& s; m1 R - points = []
8 {# ~3 C- f! O& v8 W1 A( W
7 Z4 K: O; W( O/ q9 {- def LineToDemo():% I+ B# B A* E, I7 s
- screenx = 400
1 G( f8 G3 c/ i2 X. p1 h( p: t - screeny = 4006 A7 [) J2 h5 Z% X$ Y K- @
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')
! S! ^2 B K3 c8 r$ o% R
. ?; k: b) r+ h' i- AspectRatio = 0.85
0 k+ {2 a* C2 ^: B0 j! l/ m0 f - MAXPTS = 15$ l( L/ t1 Z& r7 `5 {7 ~8 @+ }
- h = screeny# M4 N$ Q" U/ u+ Q3 s
- w = screenx0 @% _& R4 z9 D) H
- xcenter = w / 2
6 `3 O5 U" F( r9 G- ? - ycenter = h / 2 ~$ r) ]* E9 I3 `9 Q+ x
- radius = (h - 30) / (AspectRatio * 2) - 20
9 m: V3 V% P0 n) \ U. d* e- U9 ` - step = 360 / MAXPTS
/ l0 G; y9 N* L$ K0 L, g2 u8 ? - angle = 0.0
# g4 i. C& q$ Q7 G# B - for i in range(MAXPTS):4 a& _; n+ ~ V$ _9 s9 i' n) t
- rads = angle * math.pi / 180.0
/ r9 V/ s# s8 ]9 P9 A3 m - p = PTS()# e' K) o7 U1 p' g. {- Y
- p.x = xcenter + int(math.cos(rads) * radius)
' J" X% z: U* A1 }8 [1 q8 P - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)- Y1 ]7 j& C0 H) T9 i
- angle += step
6 k, `6 E9 s; ?+ e! {* y9 I, ~0 j - points.append(p)- B! `$ u0 z E( Z m
- canvas.create_oval(xcenter - radius,ycenter - radius,8 [5 ]) R7 y6 S1 D' L% n
- xcenter + radius,ycenter + radius)
r" {% W1 ]" l! d# ?8 C6 K, q4 v - for i in range(MAXPTS):: ?( k: P# d8 M
- for j in range(i,MAXPTS):* r6 A. w$ a% B6 K! q3 l
- canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
& B; J; r) r [ S! d - + T% }: H9 \; g2 I
- canvas.pack()4 c1 b4 H& x8 ]
- mainloop()" {+ c: ^3 C2 y) E
- if __name__ == '__main__':/ M( Z" }0 F( D( L
- LineToDemo()
复制代码 |
|