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

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

Построения
на плоскости (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


Построение множества Мандельброта


Алгоритм построения множества Мандельброта основан на итеративном выражении:
Z[k + 1] = Z[k]*Z[k]+ C,

где Z[k] и C – комплексные переменные, k – номер итерации, k = 1, 2, .;
Z[0]= 0.
Любое комплексное число Z можно представить в виде:
Z = x+ y*i, где x и y это действительные числа, i – мнимая единица. Цвет точки на экране определяется например количеством итераций, за которые точка убегает на бесконечность. Для построения же облака Мандельброта мы не будем определять цвет текущей точки , а будем отмечать её траекторию, то есть последовательность точек z, f(z), f(f(z))..., где f(z)=z2+C

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

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Main {
 
private static final double SX = 0.008;
 
 // Чем больше значение тем больше точки похожи на плоскость 
 
private static final double SY = 0.008;
 
private static final int WIDTH = 640;
 
// размер ширины
 
private static final int HEIGHT = 480;
 
<em>// размер высоты</em>
 
private static final double DX = -350;
 
// для центровки внутри фрейма
 
private static final double DY = -235;
 
// для центровки внутри фрейма
 
private static final int COUNT_ITER = 500;
 
// число итераций, чем больше число - тем больше точек
 
private static final int BAIL_OUT = 16;
 
private static final int STEP_X = 10;
 
private static final int STEP_Y = 10;
 
private static void drawFractals(Graphics g) {
 
g.setColor(Color.BLACK); // устанавливаем цвет черный 
g.fillRect(0, 0, WIDTH, HEIGHT); // рисуем этим цветом весь фрейм
 
for (int i = 0; i < WIDTH; i += STEP_X) {
for (int j = 0; j < HEIGHT; j += STEP_Y) {
double c = SX * (i + DX); // центрируем по X 
double d = SY * (j + DY); // центрируем по Y
double x = c; // ось х
double y = d; // ось y
double t;
int k = 0;
g.setColor(new Color((float)Math.random(), <em>// при каждой итерации цикла получаем новый цвет</em>
(float)Math.random(), (float)Math.random()));
while (x * x + y * y < BAIL_OUT && k < COUNT_ITER) { // алгоритм
t = x * x - y * y + c;
y = 2 * x * y + d;
x = t;
g.drawOval((int) (x / SX - DX), (int) (y / SY - DY), 1, 1);
++k;
}
}
}

Прикрепленный файлРазмер
MClouds.zip158.65 кб