Прикреплённый файл «2013-11-15-graficsin.py»

Загрузка

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 График sin(x) или другой заданной функции
   5 '''
   6 import pygame
   7 from math import *
   8 
   9 def scale(dot,src,dst):
  10     '''Преобразовать координату dot внутри отрезка src
  11     в координату внутри отрезка dst'''
  12     return dst[0]+float(dot-src[0])*(dst[1]-dst[0])/(src[1]-src[0])
  13 
  14 pygame.init()
  15 W,H=780,590
  16 Ndots=200               # Количество вершин ломаной-графика
  17 
  18 def apply(f,x):
  19     '''Функция, нужная только чтобы два раза не вычислять выражение x,
  20     а также для иллюстрации того, что функции — это обычные объекты'''
  21     return x,f(x)
  22 
  23 def e2(x): return 2.**x
  24 #function,A,B=e2,-5,4
  25 function,A,B=sin,-5,4
  26 # Список из Ndots точек (x,f(x)) на отрезке [A,B]
  27 Dots=[apply(function,A+float(i)*(B-A)/(Ndots-1)) for i in xrange(Ndots)]
  28 # Минимальное и максимальное значение функции на этих точках
  29 Farea=min([y for x,y in Dots]),max([y for x,y in Dots])
  30 # Вершины графика функции (не забыть перевернуть по Y)
  31 Graph=[(scale(x,(A,B),(0,W-1)),H-scale(y,Farea,(1,H))) for x,y in Dots]
  32 
  33 scr=pygame.display.set_mode((W,H))
  34 pygame.draw.lines(scr, pygame.Color("tan"), False, Graph)
  35 
  36 while pygame.event.wait().type != pygame.QUIT:
  37     pygame.display.flip()

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

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