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

Вход на сайт

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

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

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

Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)
как исправить это , сделал все по инструкции
Timer1 - выдает ошибку. Использовал IdleTimer1, работает! unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, OpenGLContext, GL, GLU; type { TForm1 } TForm1 =...
в коде присутствуют ошибки! // Считываем координаты procedure TForm1.getCoords(Sender: TObject); var j1:longint; begin n:= StrToInt(Edit2.Text); //число точек s1:=Edit1.Text; s2:=''; i := 1; j:=1; k:=0...

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

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

Задача: Нарисовать кривую Леви.
Алгоритм: Метод drawLevy принимает координаты начального отрезка и количество итераций n. Затем высчитываются точки излома и для них вызывается drawLevy с декрементом n и т.д.(пока n != 0). Если n == 0, то рисуется линия по текущими координатам (x1, y1, x2, y2).

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

package com.company.tests;
 
import javax.swing.*;
import java.awt.*;
 
public class LevyView extends JPanel {
 
    public void paintComponent(Graphics g) {
        super.paintComponents(g);
        g.setColor(Color.BLUE);
        drawLevy(150, 350, 450, 350, 20, g);//20-количество итераций
    }
    private void drawLevy(int x1, int y1, int x2, int y2, int n, Graphics g ) {//Основная рекурсивная функция
        if (n == 0) g.drawLine(x1, y1, x2, y2);
        else {
            int xx = (x1 + x2) / 2 + (y2 - y1) / 2;//Находим точки для дальнейшего разбиения и поворота(точки излома)
            int yy = (y1 + y2) / 2 - (x2 - x1) / 2;
            drawLevy(x1, y1, xx, yy, n - 1, g);
            drawLevy(xx, yy, x2, y2, n - 1, g);
        }
    }
}

Прикрепленный файлРазмер
Levy.zip10.59 кб