Архив Тэгов: Java

Программирование

Java программа для рисования кривых Коха

Летом 2010-го я немного углубился в тему фракталов и решил поэкспериментировать с ними в среде Java. В итоге получилась небольшая программа, основной функцией которой является рисование кривой Коха на основе заданных координат исходного отрезка в 2D плоскости и количества итераций. На какие-то научные достижения я не претендую, просто делал это для эстетического удовольствия.

В программе предусмотрены два разных алгоритма рисования кривой Коха:

  1. Алгоритм с циклом и массивом для хранения линий следующего итерационного цикла (функция drawCurveKoch, исходный код java ниже). Этот алгоритм мне пришел в голову сразу, еще до вникания в более грамотные с математической точки зрения, алгоритмы. В этом алгоритме я применил простейшие правила геометрии. Алгоритм заключается в том, что в каждом цикле к каждой текущей прямой дорисовывается треугольник по середине, а также, все 4 новые получившиеся линии сохраняются в массив. В каждой следующей итерации, то же самое происходит со всеми отрезками из массива. Цикл повторяется заданное количество раз. В итоге получается, по сути, не совсем правильная кривая Коха, а её «черновой» аналог, с «не затертой» линией середины каждого отрезка. Результат получается такой:
    Кривая Коха нарисованая алгоритмом с циклом и записью в массив
  2. Рекурсивный алгоритм (функция drawCurveKochRecur, исходный код java ниже) — рисует уже действительно только кривую, без черновых линий. Этот алгоритм использует те же математические расчеты, но его преимущество в том, что, за счет рекурсии, можно прорисовывать лишь те линии, которые представляют именно кривую. Вот результат этого алгоритма:
    Кривая Коха нарисованая рекурсивным алгоритмом

При желании и тот и другой алгоритм можно настроить на выдачу одинаковых результатов — с линиями оснований треугольников или без них.

Функции рисования кривых Коха позволяют формировать любые фигуры на основе этих кривых, какие вам только позволит фантазия. Вот несколько рисунков, исходный код каждого из которых представлен в примерах в самой программе ниже (examples):

читать далее »

Интернет Программирование

Говнокод социализирует

Если вы любите посмаковать ошибки или, что бывает чаще, наитупейшую захламленность кода программ — то вам понравится проект «Говнокод.ру» под девизом «По колено в коде».

Даже не пытайтесь ничего там понять, если вы не программируете сами. Там представлены различные языки — от PHP, C++ и Java до менее распространенных. И на этих самых языках там пишут посты, обычно не содержащие ни единого сопроводительного слова на русском. А самым частым комментарием является вопрос типа «И что здесь не так? Вроде всё OK!».

Такой вот юмор для избранных! Чтобы понять, нужно сначала поднапрячь мозг. Лично мне нравится! Кроме того, неплохое пособие для самообучения: выбирайте нужный язык программирования и учитесь на ошибках других. Проекту нужно стремиться, чтобы предлагался и публиковался оптимальный код — некий итог дискуссии. Тогда он будет вдвойне полезным.