Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
Eclipse
Статья по теме: 

Кривая Коха является типичным геометрическим фракталом. Процесс её построения выглядит следующим образом: берём единичный отрезок, разделяем на три равные части и заменяем средний интервал равносторонним треугольником без этого сегмента. В результате образуется ломаная, состоящая из четырех звеньев длины 1/3. На следующем шаге повторяем операцию для каждого из четырёх получившихся звеньев и т. д.

Код программы: 

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
 * Класс, отвечающий за прорисовку кривой Коха. 
 */
public class Snowflake extends Canvas {
 
 
    private static final long serialVersionUID = 546343032002044481L;
 
    /**
     * Формирует цвета и масштаб, рекурсивно вызывает метод
     * 
     *
     */
    public void paint(Graphics g) {
        setBackground(Color.black);
        g.setColor(Color.blue);
 
        Point a = new Point(0, 10);
        Point b = new Point(this.getWidth(), 10);
 
        drawKochLine(g, a, b, 0, 10);
    }
 
    /**
     * Рисует рекурсивно линию Коха. При этом отрезок (a; b) делится на 3 равных
     * части. Средняя из них заменяется равносторонним треугольником со стороной
     * равной данной и без данной стороны (рисуется только две, не принадлежащие
     * отрезку стороны треугольника).
     *
     * @param g
     *            the specified Graphics context
     * @param a
     *            начальная точка линии
     * @param b
     *            конечная точка линии
     * @param fi
     *            угол поворота линии
     * @param n
     *            оставшаяся глубина рекурсии
     */
    public void drawKochLine(Graphics g, Point a, Point b, double fi, int n) {
 
        if (n <= 0) {
            // рисуем прямую, если достигнута необходимая глубина рекурсии.
            g.drawLine(a.x, a.y, b.x, b.y);
        } else {
            // находим длину отрезка (a; b).
            double length = Math.pow(Math.pow(b.y - a.y, 2)
                    + Math.pow(b.x - a.x, 2), 0.5);
            // находим длину 1/3 отрезка (a; b)
            double length1of3 = length / 3;
 
            // находим т., делящую отрезок как 1:3.
            Point a1 = new Point(a.x
                    + (int) Math.round((length1of3 * Math.cos(fi))), a.y
                    + (int) Math.round((length1of3 * Math.sin(fi))));
 
            // находим т., делящую отрезок как 2:3.
            Point b1 = new Point(a1.x
                    + (int) Math.round((length1of3 * Math.cos(fi))), a1.y
                    + (int) Math.round((length1of3 * Math.sin(fi))));
 
            // находим т., которая будет вершиной равностороннего
            // треугольника.
            Point c = new Point(a1.x
                    + (int) Math
                            .round((length1of3 * Math.cos(fi + Math.PI / 3))),
                    a1.y
                            + (int) Math.round((length1of3 * Math.sin(fi
                                    + Math.PI / 3))));
 
            n--;
            drawKochLine(g, a1, c, fi + Math.PI / 3, n);
            drawKochLine(g, c, b1, fi - Math.PI / 3, n);
 
            n--;
            drawKochLine(g, a, a1, fi, n);
            drawKochLine(g, b1, b, fi, n);
        }
    }
    public static int width = 800, height = 600;
 
    /**
     * Создаёт, настраивает и выводит фрейм для прорисовки кривой Коха.
     *
     * @param args аргумент командной строки.
     */
    public static void main(String[] args) {
        final Frame fr = new Frame("Кривая Коха");
        fr.setSize(width, height);
        fr.add(new Snowflake());
        fr.setVisible(true);
        fr.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                fr.dispose();
            }
        });
 
    }
}