|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。: j+ A. q# a1 [: g
程序分析:无。% G' T! G7 k/ q7 u* p, h
- import math9 y1 M; H A; j1 \& R2 j, \
- from tkinter import *
7 V" y3 t1 M8 Y4 [: { t7 R8 i - . t# H7 P7 W8 F
- class PTS:
2 A2 ^1 Q8 s( g& e) L# B6 C- O - def __init__(self):& u' y. @4 i+ ?0 q/ l3 v& N! V$ m& r
- self.x = 0. C& _4 @! U4 ]) R' p9 a: u8 `" y
- self.y = 0
# B; e, k5 {5 |/ A - points = [] ?1 T1 E6 A& @/ Z& A- x% n6 Z
. L+ w( F) X5 p- def LineToDemo():
$ r. k* g2 E) A/ b9 [2 } - screenx = 400
+ L+ s m2 m. Q% f% @+ u - screeny = 400" S' \4 c4 A% E0 y9 e9 B
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')$ t4 a# Y4 M$ M4 D: {/ H0 [) K
- D6 x9 X, |, T4 H7 F9 |
- AspectRatio = 0.85
8 ~2 J* B. P4 U7 D( Q7 [! c - MAXPTS = 15
: K" u5 Y2 r9 K4 X% ]! g - h = screeny- I0 l6 A5 Y1 B& P* m& J
- w = screenx
7 r u7 s. B( F) q0 G - xcenter = w / 2
* ~1 d i4 B$ R4 Y) F2 d - ycenter = h / 2/ }* g* M! K% {7 l0 i. r
- radius = (h - 30) / (AspectRatio * 2) - 20; d, A5 U1 [( A% C4 f! A
- step = 360 / MAXPTS
y; N' k+ s, Q) l' ~& Q - angle = 0.0
) N2 c: Z" O: u8 t* S* J3 u7 M - for i in range(MAXPTS):
& {$ o7 u! ?1 Z" _, i* E! R - rads = angle * math.pi / 180.0% g) `3 z2 [ P# v5 b5 L" H
- p = PTS()% y2 n6 M& f; P( d1 y5 g1 Z1 D
- p.x = xcenter + int(math.cos(rads) * radius)
% G4 z& g# _7 k \- R- y - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)' J8 P/ v/ w& {- S4 Q6 z5 j! I
- angle += step% i; v2 u* y1 Y' X7 I2 Q
- points.append(p)4 Q; H6 o1 {" v# H5 P
- canvas.create_oval(xcenter - radius,ycenter - radius,
* O- H5 }' W9 r. e& @9 g - xcenter + radius,ycenter + radius)0 C/ `3 M$ x, m0 v; l
- for i in range(MAXPTS):% `' [9 ?* a4 h- f+ O4 f
- for j in range(i,MAXPTS):1 L5 r+ Y" k6 A( Z
- canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
& g3 G1 b2 t7 F# v9 ~7 C
& Q1 f8 I0 X: j9 O- canvas.pack()
o. M( g1 x4 G* P. f4 B - mainloop()8 `* P! R% z, b8 B% v, G( z' y3 m3 s. U
- if __name__ == '__main__':
+ g; f) M# w; @+ |. r - LineToDemo()
复制代码 |
|