|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。
8 h) G+ q3 l0 F5 e$ k6 i程序分析:无。
! [5 Q+ }. l3 L6 A, c1 f: m) j# Q- import math
3 w) e: {2 O8 h2 i5 O - from tkinter import *
1 }( A Z( e; c: W
& Q" x/ H$ T2 @* }& Z L5 n- class PTS:
. V7 D& \6 f! X+ ` - def __init__(self):! J% I8 T! R2 s$ ^- D! c
- self.x = 0
2 U* I/ U; q; [3 l - self.y = 0
- E+ g, s' @# p X% w$ A - points = []
+ h6 m, n' x% |! y6 j$ e; a
8 u- k: }! T9 R _( e- def LineToDemo():% E& a' X; F5 |7 ?
- screenx = 400
3 Q% o3 _- c# t* v- M% q - screeny = 400+ n3 I g9 ^! m9 w* u
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')7 x& V" o, T8 T! n5 f
0 K7 X" _3 D' a7 m9 z% z* o- AspectRatio = 0.85
" M6 U$ h0 A6 e% R( _ - MAXPTS = 15! x' L) \. o' z9 s2 ^
- h = screeny
( [5 \" k I. v3 C - w = screenx+ b2 w; f% \+ Z6 u5 {2 @
- xcenter = w / 29 P" h% M- X% c' P
- ycenter = h / 2
% m( c( J, O; a. j7 g. I a - radius = (h - 30) / (AspectRatio * 2) - 20
, V9 H% A+ M7 R5 r. P5 O - step = 360 / MAXPTS9 k' m U# |% n8 @7 ]
- angle = 0.0
& o( m( }! k e, D) T) U - for i in range(MAXPTS):# M. o/ R( y5 N1 b: F0 o# Q
- rads = angle * math.pi / 180.0
. s$ f. J4 L& k- V - p = PTS()
9 D' M( W* F$ k+ r y3 W - p.x = xcenter + int(math.cos(rads) * radius)
& Y o: [" z% F8 w6 A% r. I4 Z# p - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
5 z3 {4 O0 q9 `; C, [ - angle += step! ]5 o4 [: l4 I7 @- w: R
- points.append(p)
2 T6 v* Z5 q6 J - canvas.create_oval(xcenter - radius,ycenter - radius," s* h. z4 _$ l. x
- xcenter + radius,ycenter + radius)
6 ~! _* P$ l' F. V5 c8 U1 X - for i in range(MAXPTS):5 O( T$ F' Z2 |8 K
- for j in range(i,MAXPTS):: j" K$ c' y2 h% l& P E5 |5 I
- canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)3 l- V G. [3 X: a
I2 k' S8 O) O. k- canvas.pack()6 h0 D+ D" N1 g$ V; T
- mainloop(), {; b) J2 |0 f% E1 q) [8 Z0 V
- if __name__ == '__main__':1 p. F' L8 V1 |, c
- LineToDemo()
复制代码 |
|