|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。
) M: H+ C7 r. _- Z3 l5 W程序分析:无。
6 a$ R1 A, ~0 u8 k- import math
3 R) U& Y2 c5 s7 M# Y5 t c* r - from tkinter import *1 B" e! N8 N& h" L; s/ u0 Z g0 m
- - y% h: O/ f" H% a5 d- W5 C
- class PTS:
* G7 l4 X6 W6 U; N5 L7 R, A - def __init__(self):% D2 y8 F3 ] X
- self.x = 0
2 k7 Q* q, w H0 c - self.y = 08 e6 A0 Q3 V& l8 Q( s
- points = []
: e9 ?% i7 J \$ Q
1 } b! G5 K6 l. O! K* e- def LineToDemo():/ F4 D& Z8 t! O2 ^: s: Y& C
- screenx = 4009 W; U; \! p, n* ]1 G6 v
- screeny = 400
; H& V& V! Q- X/ Z - canvas = Canvas(width = screenx,height = screeny,bg = 'white')
7 J: y/ v8 t* A+ p! a) `
+ m8 E) b: p7 O5 c' A% J3 E- AspectRatio = 0.85
" c5 A) v& W& F4 Z& H - MAXPTS = 150 Y; D+ I# P& z, W' `
- h = screeny% @1 M% {; e; j& n( [' \
- w = screenx
' s- h. H$ Y& @, O# U' [ - xcenter = w / 2" V' i' |& ^4 [' Y
- ycenter = h / 2
# R" J2 l# ~3 l% ^% { - radius = (h - 30) / (AspectRatio * 2) - 20 g; a p+ x+ h! C/ V9 t* b2 g
- step = 360 / MAXPTS+ ^' D% d8 m2 J
- angle = 0.0
# \8 p& u) V' ^6 t7 X6 q' X" M! W - for i in range(MAXPTS):
7 T5 Z1 F# q* L6 E5 S - rads = angle * math.pi / 180.0% ?1 C S# K* g( l1 t) I" e$ X
- p = PTS()' ]% }& ^# F( K0 S
- p.x = xcenter + int(math.cos(rads) * radius)
7 H! w1 O$ V* i; r8 n7 G8 Q. b6 ~ - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
4 I( b9 w d3 E - angle += step/ [) Q R! Q s% U% S3 g
- points.append(p)
{# D1 [5 P z1 G# p7 J" O, W/ g$ x! e - canvas.create_oval(xcenter - radius,ycenter - radius,
2 E: O3 j+ s2 x5 @' Z - xcenter + radius,ycenter + radius)# q) U4 Q% x( J3 F/ [( b
- for i in range(MAXPTS):
( i* z- M; z$ ]; B3 Y+ Y - for j in range(i,MAXPTS):0 j" ?& \4 [ `7 H
- canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)8 p6 Y8 ~4 f6 R3 }' w7 T+ t
( n5 h- J' K8 ^- canvas.pack()
1 P' q8 @# E6 S' w" F0 J ` - mainloop()) |! X7 }9 _: u4 `
- if __name__ == '__main__':
! q& }( G2 @0 e - LineToDemo()
复制代码 |
|