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

Вход на сайт

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

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

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

torrvic, возможно, Вам нужно добавить -lGLU
Извините за тупой вопрос. У меня при сборке Вашего примера выходит ошибка: "undefined reference to gluLookAt". Не могу найти в какой библиотеке находится эта функция. У меня задано: -lGL -lglut ... Искал в /usr/lib таким образом: nm lib*so* | grep...
Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...

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

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

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

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

public static int drawMinkovskyCurve(Graphics g, int x1, int y1, int x2,
			int y2, int iter) { // (x1,y1) and (x2,y2) are the points, iter -
								// iteration number
		if (iter == 0) {
			g.drawLine(x1, y1, x2, y2);
			return 0;
		}
		int x[] = new int[9];
		int y[] = new int[9];
		x[0] = x1;
		y[0] = y1;
		x[8] = x2;
		y[8] = y2;
 
		int d;
 
		if (y1 == y2) { // draw horizontal curve
			d = (x2 - x1) / 4;
			x[1] = x[2] = x[0] + d;
			x[3] = x[4] = x[5] = x[2] + d;
			x[6] = x[7] = x[3] + d;
			y[1] = y[4] = y[7] = y[0];
			y[2] = y[3] = y[0] - d;
			y[5] = y[6] = y[0] + d;
		} else { // draw vertical curve
			d = (y2 - y1) / 4;
			y[1] = y[2] = y[0] + d;
			y[3] = y[4] = y[5] = y[2] + d;
			y[6] = y[7] = y[3] + d;
			x[1] = x[4] = x[7] = x[0];
			x[2] = x[3] = x[0] - d;
			x[5] = x[6] = x[0] + d;
		}
 
		for (int i = 0; i < 8; i++) { // recursive calls of drawing a curve
			drawMinkovskyCurve(g, x[i], y[i], x[i + 1], y[i + 1], iter - 1);
		}
		return 0;
 
	}

Прикрепленный файлРазмер
DrawMinkovskyCurve.zip6.02 кб