|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。
. n$ j. Y5 m4 T) {9 w8 n# R程序分析:无。
5 m6 |! J' G2 n4 {/ p0 T- import math3 h9 V- C% Q! ?9 k
- from tkinter import *0 k6 X7 }( ?* R# w
, C8 K: z: ], O& r% ^0 `- class PTS:
0 ~9 q8 J( R2 r7 K - def __init__(self):! M; Z# u) l# h) M
- self.x = 0
2 b/ p5 U4 N& G- s - self.y = 09 `3 J/ |1 e+ q$ `" H
- points = []6 S( h G% c( v/ I6 v6 W* i
+ {# D `1 H8 o F' B: G- def LineToDemo():
+ C0 O6 [- B D% j - screenx = 4003 ~# @* Y! T- ^* T
- screeny = 4003 T* g2 R# o3 b4 W+ E& l
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')3 k7 r! w/ X2 D M0 w
- + g7 e; I& z" s p3 {5 t- f V
- AspectRatio = 0.858 V8 ^9 l2 f( w4 P! s7 m5 Z
- MAXPTS = 154 H5 r' ]0 ~1 j n4 w2 R8 T! D* y
- h = screeny
: j! r% T k$ } - w = screenx
9 v- \0 L, a4 o - xcenter = w / 2, {; f& x! ?' W+ f, R; T! O# g
- ycenter = h / 24 @8 T# w+ r+ Y( S" }6 v1 X
- radius = (h - 30) / (AspectRatio * 2) - 20
3 d7 x# Y# K+ q6 I - step = 360 / MAXPTS
6 U: s3 B$ W7 f( P$ u9 f9 X( ? - angle = 0.0' C7 e( s1 o- k. Y/ P+ |
- for i in range(MAXPTS):8 P: j1 g- L- \3 ]# C* q. I
- rads = angle * math.pi / 180.0# U& q1 \. ^5 d- s
- p = PTS(); c C. w$ u: l' b- Z( s
- p.x = xcenter + int(math.cos(rads) * radius) G7 x# \" l& q# z2 `5 q) R7 v$ o
- p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
2 `# V' l) j* Z2 c" F - angle += step! `9 M) R3 e0 H- k4 U5 y2 W
- points.append(p)# l8 J2 ^6 W2 t" w8 K
- canvas.create_oval(xcenter - radius,ycenter - radius,+ r9 g! r& N8 f" y# r8 r# Q0 g
- xcenter + radius,ycenter + radius)
O$ [( N+ u' J& Z( n - for i in range(MAXPTS):
" d% |6 f6 s/ t n0 C - for j in range(i,MAXPTS):1 N4 K: Y2 M( w5 w7 u3 J6 Y; u
- canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)7 f0 Z2 s: O" J# H* {" M- L8 {
- ; ^; Q; w* X; D. X. Y
- canvas.pack()2 O1 C6 V7 p# \5 n
- mainloop()
. ?/ k+ ?9 _; ^5 C, F - if __name__ == '__main__':
8 a+ v8 U. U0 L1 u5 p - LineToDemo()
复制代码 |
|