Проект "Рисование графика"

Замечания

  1. Данные с клавиатуры можно каждый раз не вводить, а воспользоваться для этого свойством командной строки linux, набрав в терминале:

    •   { echo "sin(x)/x"; echo "-14,14,80,20"; } | python grap_4.py
  2. Вывод графика в виде текста можно перенаправить на другой текстовый экран. В этом случае набирать и модифицировать команду можно в терминале с нормальным большим шрифтом, а для терминала с графиком можно установить очень маленький шрифт и, соответственно, очень большую ширину и высоту. Как это сделать.

Общая формулировка задачи

Построить и отобразить график функции

  1. Нулевой этап
    1. grap_0.py Построение графика sin(x) в диапазоне от -4 до 4 на текстовом экране 80x25

    2. grap_1.py Построение графика sin(x) в произвольно диапазоне на текстовом экране произвольных размеров

      1. grap_1-1.py Построение (неправильное) графика произвольной функции в произвольно диапазоне на текстовом экране произвольных размеров

    3. grap_2.py Построение графика произвольной функции в произвольном диапазоне на текстовом экране произвольных размеров

    4. grap_3.py Построение графика произвольной функции в произвольном диапазоне на текстовом экране произвольных размеров; горизонтальная ориентация картинки

    5. grap_4.py Построение графика произвольной функции в произвольном диапазоне на текстовом экране произвольных размеров; горизонтальная ориентация картинки; для каждой соседней пары точек строится вертикальный отрезок

  2. Первый этап: переформулировка задачи: три измерения: границы X и F(X), размер экрана и количество точек в ломаной); простейшие экранные примитивы (точка и линия)

    1. grap_5.py Решение задачи grap_4 в новой формулировке

      1. Подзадача: нарисовать (по точкам) линию из точки (x1,y1) в (x2,y2).
      2. Алгоритмы проведения отрезка: http://algolist.ru/graphics/painting/line.php

    2. grap_5-1.py Дополнительно к grap_5 нарисовать оси координат

  3. Использование PyGame (подпроект "Графический редактор")

    1. pygame_0.py Программа, которая просто что-то рисует и не заканчивается, пока её не убьют

    2. pygame_1.py Простейшая обработка событий (кнопка мыши, закрытие окна, нажатие на клавишу)

    3. pygame_1-1.py "Резиновая" линия

    4. "Резиновая" линия -- двухуровневый редизайн
      1. pygame_2-0.py упрощённая версия

      2. Диаграммы состояний:
      3. Текстовый ввод с графического экрана: диаграмма состояний и pygame_2-1-0.py пример программы

      4. Подтема: рисование овалов и эллипсов:
        • Построение овала

        • Построение овала в KSseg: Oval.seg

        • Построение эллипса
          • Алгоритм Брезенхема для произвольной кривой второго порядка -- http://research.microsoft.com/en-us/um/people/awf/graphics/bres-ellipse.html (какой-то он жуткий, нет ли чего повразумительнее, например, посредством рисования двух графиков функций? -- FrBrGeorge 2009-05-12 11:21:41)

          • /!\ Построение эллипса в программе Grap второго этапа: grap_7.py (хорошо бы сделать отдельный пример с комментариями)

        Финальная программа: pygame_2-1.py

  4. Второй этап: построение графика с использованием PyGame

    1. grap_6-0.py grap_5 с использованием PyGame

    2. grap_6.py grap_5-1 с использованием PyGame

    3. grap_7.py Совмещение "Графического редактора" и "Рисования произвольной функции"

LecturesVMSH/FunctionGraphic (последним исправлял пользователь FrBrGeorge 2009-05-12 11:21:41)