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

Вход на сайт

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

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

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

Всем у кого не работает. файл 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...
Не получается, емаё
огромное спасибо за подробное объяснение про 3д графику на питоне, в интернете очень мало подобной информации
dobryj den, popytalas otkryt prikreplionnyj fail ctoby posmotret kak rabotaet, no mne ego ne pokazyvaet vydajet osibku. Pochemu?
Очень интересно! ии сайт крутой жалко что умирает(

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

Рейтинг@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 кб