|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。. t0 V& A2 U6 c! P- T% ]$ a
程序分析:无。% v* T2 X4 h# ]! |+ U
- import math
. K# v; [# e7 y8 [+ c$ \5 e - from tkinter import *6 m8 [4 {# s* V( d; ^# Q0 n% V
- 3 }4 R4 r: w2 O$ ?
- class PTS:% e3 t/ A. A# t! ?
- def __init__(self):" l$ p. C v3 }* V& ^% a
- self.x = 0, H2 X) t. w$ B2 k! R8 Y L
- self.y = 0
8 B1 ?( ]5 {$ L - points = []
' ?- p$ P& t) B3 R" R4 n2 A6 X: N( M - # b( u: ~4 a, D# {
- def LineToDemo():1 }; I9 ^0 K/ ^5 O/ n t
- screenx = 400
" O1 A. ^0 Y& w* `$ C - screeny = 400
6 K- @& n! D! A1 h7 O5 Q% l - canvas = Canvas(width = screenx,height = screeny,bg = 'white')6 h3 e/ s5 T. U }. t1 _
" k4 x l7 G/ k, h8 [3 d# Y1 U- AspectRatio = 0.85" y1 l. B; }& \2 E4 N! c* S8 v
- MAXPTS = 15
, J; u3 X5 ~. Z' T6 a - h = screeny# u H. p1 m8 j
- w = screenx
9 W: o4 R2 J% W2 j+ [, B - xcenter = w / 27 e' c, \7 R- r' |
- ycenter = h / 2) d+ t/ Y. Y* @& m* W) S' {
- radius = (h - 30) / (AspectRatio * 2) - 204 l6 \; d O2 p& q) w2 l, J0 o
- step = 360 / MAXPTS
$ G$ ]6 R7 x+ ^+ c; r+ x - angle = 0.05 e8 t; C+ a9 `
- for i in range(MAXPTS):1 T, p2 Z- a. @2 ?6 v" G% j+ X/ m8 M
- rads = angle * math.pi / 180.0
) h3 d$ | a1 W$ g! _$ k0 Y - p = PTS()
6 K9 A% E: |0 Y. V4 j - p.x = xcenter + int(math.cos(rads) * radius)' K! W; u- n' p x1 N w `9 z
- p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)* K, L1 c. M# t. x9 P+ Y
- angle += step
1 ]8 L+ O/ O' W4 @+ n } - points.append(p)# |- f# _. i& J( q6 I
- canvas.create_oval(xcenter - radius,ycenter - radius,& T5 G a4 S, u; D
- xcenter + radius,ycenter + radius)
! A; E/ `1 b) e' W' ]4 W5 y - for i in range(MAXPTS):
9 d1 N/ v" M0 [. _! T3 b! I - for j in range(i,MAXPTS):
% y2 ?+ V7 Q8 v) z+ D - canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
1 f( a- w+ R/ x+ V8 r0 w
1 x. Y4 n2 X ^3 ^& }- canvas.pack(); h8 D# E* {, w1 O- C0 b: F
- mainloop()' w" y) U+ h4 D! [( V
- if __name__ == '__main__':
6 ]# m% w8 u# L$ p- ^" J - LineToDemo()
复制代码 |
|