马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。- c4 r! l# |9 r; N9 S: K: Q8 P
程序分析:无。( w8 ^0 ~! U) `- {( V- C
- import math1 q( V+ \9 U% p- V: K
- from tkinter import *; r0 j+ N6 G$ V/ I; Z
! t3 n% r+ O/ m0 w. F6 W- {- class PTS:4 w0 a0 w* K4 N% u, B' N, m* U
- def __init__(self):: L% D5 W' ]: F1 w+ C
- self.x = 0% Q/ G, I( |. j* K
- self.y = 0
{, @% W& w6 F; k - points = [] ^3 s( o$ E* K- {: S+ Y5 [2 J
3 x% B. I# ~$ W, L2 A/ C- def LineToDemo():
1 Q8 K& g& {: |4 I u* l - screenx = 400
: \5 x5 y. k9 j. E$ d - screeny = 400
+ N( R3 W2 z) m5 w' u - canvas = Canvas(width = screenx,height = screeny,bg = 'white')9 T9 X2 O) y7 p1 @
2 V: x2 v* w5 ?/ L- AspectRatio = 0.85+ C& d* m3 `3 X+ J4 ^
- MAXPTS = 15$ k! ~7 q7 ]8 ^4 X2 F! r( E
- h = screeny
3 I4 X: H' V9 [5 } - w = screenx4 U' W) V: q r G0 P: W& G
- xcenter = w / 27 c7 u* ]" |; v. N% I
- ycenter = h / 2
7 k! e0 t& B: u6 l - radius = (h - 30) / (AspectRatio * 2) - 20% S: Y c# I) h. ^( r" ?- P
- step = 360 / MAXPTS# D! Q e* Y8 \6 {
- angle = 0.0
) k+ K! L6 N& _# s7 S6 a! Z: m - for i in range(MAXPTS):
: D9 I5 }8 H! ?" g - rads = angle * math.pi / 180.0 P+ U! a& z6 u7 K8 h) L. ~. ~& q
- p = PTS()
9 Q- Y) f) S9 G. e - p.x = xcenter + int(math.cos(rads) * radius)" j( r3 t) a0 S% D+ V$ f" s; c
- p.y = ycenter - int(math.sin(rads) * radius * AspectRatio) H" X; d! v1 g# {! R% s
- angle += step. w: G+ [& v* }/ L$ G
- points.append(p)
; _9 A, E4 N- P+ k/ S - canvas.create_oval(xcenter - radius,ycenter - radius,6 O n* p1 l& H2 P; R3 d& o
- xcenter + radius,ycenter + radius)
( k" D; Q( _' S' } C8 W - for i in range(MAXPTS): P( p( C2 A& W) [- [% H' ]2 Y2 F; U
- for j in range(i,MAXPTS):
, G+ c, X4 o: o% h - canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
3 e, [6 q! j( u
, v& | K! V- U2 [+ M6 i- _- canvas.pack()
+ H$ x) E7 s5 C8 Z - mainloop()# O, B0 i% K7 }
- if __name__ == '__main__':$ [, A: [) l: @: t4 ?% b
- LineToDemo()
复制代码 |