|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。
3 U( ]6 n* U6 y" J( }: D$ R' I程序分析:无。
0 A0 ]$ Q5 \8 ?! G& W8 V9 C- import math
& }+ f9 N( e# h( Z! v - from tkinter import *; D' W0 x, u* c0 \ M- y) H
; I( Y% N3 ]2 l9 \% g- class PTS:0 s1 s' X" D( ~6 R" |8 r, @% n4 e* b
- def __init__(self):
) o$ v+ K M+ I+ S7 Z( L - self.x = 0$ S0 n- [$ A( K- ~
- self.y = 07 o. b- Z' S1 {6 W
- points = []
4 u: f' R' X8 r8 D - 8 k" l9 o: Y- w
- def LineToDemo():
; f+ N) Y0 z- b: A6 p - screenx = 400
! J8 j& H. i0 E4 j# b - screeny = 400) ]7 g, k+ J! n9 y% d2 w c
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')
# p! G& I5 _" ^. i, C: e$ h
7 J& f: ~0 j/ l2 g0 E- AspectRatio = 0.852 p1 {) K, A- z7 I( J( a
- MAXPTS = 15
! x6 Y' L2 d: t2 ~: g7 F2 q! r- V3 D - h = screeny0 B3 @* v, W8 p4 Y
- w = screenx5 Z- c- j& {8 f* O) O7 j& p2 s
- xcenter = w / 2
' B" M* ^ j$ u' X ~ - ycenter = h / 2
# |9 X# e+ Z& f7 p7 |9 l - radius = (h - 30) / (AspectRatio * 2) - 20
" s3 W. y" G! ?$ j8 b" ^7 l - step = 360 / MAXPTS
5 k9 X2 `8 x5 v" u s8 Q" F - angle = 0.0
8 I. B# j/ K b - for i in range(MAXPTS):# a! a/ o0 J) D% Y9 j
- rads = angle * math.pi / 180.0
: F6 r7 `7 c5 u: |* r, ~8 l$ ?" q - p = PTS()
& q; A' k, [8 s) P6 c - p.x = xcenter + int(math.cos(rads) * radius)
- _& `4 M! [" p% g9 T3 N( `" n/ F; J - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
]7 s; i3 `* m, q2 y. Q3 F5 j - angle += step% h3 ?* O4 w( c+ N# O- ~
- points.append(p)
" x. K# y$ R `- Z0 E2 U - canvas.create_oval(xcenter - radius,ycenter - radius,0 K V0 U; Q& O( \
- xcenter + radius,ycenter + radius)
# N; J( H" W6 `! ?7 Y) d: E; s - for i in range(MAXPTS):% @7 h9 f0 i/ o* w7 L
- for j in range(i,MAXPTS):+ e4 r5 \8 T; v
- canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
d" l8 ?: T6 [8 { - ! \7 n8 i4 z+ F
- canvas.pack()" m) U! O a: ~! J2 e8 m s3 N, P" w
- mainloop()
1 ] v% a4 P& T. P1 Z7 o' B$ V - if __name__ == '__main__':
2 f$ ~1 _" ^. |4 P1 v* p - LineToDemo()
复制代码 |
|