Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.