Прикреплённый файл «grap_5-0.py»
Загрузка 1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 '''
4 Проект "Построение графика", версия 5 (эпоха 2)
5 Подзадача: построение растрового отрезка (x1,x2)-(y1,y2)
6 '''
7
8 from math import *
9
10 def round(x):
11 'Округлить x до ближайшего целого'
12 return int(floor(x+0.5))
13
14 def sign(x): return x > 0 and 1 or x < 0 and -1 or 0
15
16 def dot(scr, x, y, char="*"):
17 'Поставить точку (по умолчанию "*") на виртуальный экран scr'
18 scr[round(y)][round(x)]=char
19
20 def printscreen(scr):
21 'Выводит виртуальный экран scr на текстовый экран'
22 print ""
23 for l in range(len(scr)-1,-1,-1):
24 print "".join(scr[l])
25
26 def line(scr, M1, M2, char="*"):
27 '''Нарисовать отрезок от точки M1 до M2 на экране scr'''
28 x1,y1,x2,y2=int(M1[0]),int(M1[1]),int(M2[0]),int(M2[1])
29 w,h=x2-x1,y2-y1
30 dx1, dy1 = sign(w),sign(h) # приращение по диагонали
31 if fabs(w)>fabs(h):
32 dx2, dy2 = dx1, 0 # приращение по горизонтали
33 else:
34 dx2, dy2 = 0, dy1 # приращение по вертикали
35 x,y=x1,y1
36 dot(scr,x,y,char)
37 while x != x2 or y != y2:
38 # добавляем приращение, с которым точка ближе к идеальной прямой
39 if fabs(h*(x2-(x+dx1))-w*(y2-(y+dy1))) < fabs(h*(x2-(x+dx2))-w*(y2-(y+dy2))):
40 x,y = x + dx1, y + dy1
41 else:
42 x,y = x + dx2, y + dy2
43 dot(scr,x,y,char)
44
45 W,H=80,25
46 screen=[[" "]*(W+1) for i in range(H+1)] # "виртуальный экран WxH"
47 # Восемь точек
48 D=((W/8,0),(7*W/8,0),(W,H/3),(W,2*H/3),(7*W/8,H),(W/8,H),(0,2*H/3),(0,H/3))
49 for i in range(len(D)): # Соединяем точки через одну линиями
50 j=(i+2)%len(D)
51 line(screen,D[i],D[j],str(i))
52 line(screen,(W/2,0),(W/2,H),"|")
53 line(screen,(0,H/2),(W,H/2),"-")
54 dot(screen,W/2,H/2,"+")
55 printscreen(screen)
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:27, 1.6 KB) [[attachment:Oval.seg]]
- [получить | показать] (2011-09-26 11:35:27, 2.4 KB) [[attachment:PyGameState_Editor.dia]]
- [получить | показать] (2011-09-26 11:35:27, 2.8 KB) [[attachment:PyGameState_Ellipse.dia]]
- [получить | показать] (2011-09-26 11:35:27, 2.8 KB) [[attachment:PyGameState_Figure.dia]]
- [получить | показать] (2011-09-26 11:35:27, 1.5 KB) [[attachment:PyGameState_Input.dia]]
- [получить | показать] (2011-09-26 11:35:27, 0.4 KB) [[attachment:grap_0.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.4 KB) [[attachment:grap_1-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.1 KB) [[attachment:grap_1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.8 KB) [[attachment:grap_2.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.4 KB) [[attachment:grap_3.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.6 KB) [[attachment:grap_4.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.0 KB) [[attachment:grap_5-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 4.8 KB) [[attachment:grap_5-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 3.6 KB) [[attachment:grap_5.py]]
- [получить | показать] (2011-09-26 11:35:27, 3.5 KB) [[attachment:grap_6-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 4.7 KB) [[attachment:grap_6.py]]
- [получить | показать] (2011-09-26 11:35:27, 9.7 KB) [[attachment:grap_7.py]]
- [получить | показать] (2011-09-26 11:35:27, 0.8 KB) [[attachment:pygame_0.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.2 KB) [[attachment:pygame_1-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.9 KB) [[attachment:pygame_1.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.5 KB) [[attachment:pygame_2-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.3 KB) [[attachment:pygame_2-1-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 5.6 KB) [[attachment:pygame_2-1.py]]
Вам нельзя прикреплять файлы к этой странице.