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

Вход на сайт

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

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

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

Здравствуйте. Спасибо за полезную инфу про уравнения а не матрицы. Во всём интернете только матрицы. Чем плохи матрицы? Решать матричные уравнения, получая обратную матрицу - слишком долгое занятие, к тому же не видно упрощений и сокращений...
Рекурсия присутствует?
И где эти прикрепленные файлы?
Я код на C++ набрал сам. Строил кривую Безье, но "прилипал" к нулю. То есть я задаю точки далеко от нуля, а он строил из нуля, а потом только обходил предложенные точки. Потом я нашёл Ваш сайт и эту статью. Оказалось, что я забыл возвести t в...
просто я не так понял, здесь мы вращаем точки куба что вращает сам куб. Мне нужно вращать просто 3д объект , данный способ не подходит

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

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