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

Вход на сайт

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

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

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

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

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

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

Построение описанного фрактала. Выполняется при запуске.

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

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Toolkit;
 
import javax.swing.JPanel;
 
public class MyPanel extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	static int iter = 7;//кол-во итераций
 
	public static int drawMCT(Graphics g, Point A, Point B,Point C, int iter) {
		//в качестве параметров точки А В С и кол-во итераций
		//g - экземпляр библиотечного класса, ответственного за отрисовку
		if(iter==0) //если итераций 0, выход
			return 0;
		Point D=new Point(); //точка центра масс
		Point v1 =new Point();//вектор AB
		Point v2=new Point();//вектор AC
		v1.x=B.x-A.x;
		v1.y=B.y-A.y;
		v2.x=C.x-A.x;
		v2.y=C.y-A.y;
		D.x=A.x+(v1.x+v2.x)/3; //к точке А прибавим сумму векторов AВ и AC, деленную на 3
		D.y=A.y+(v1.y+v2.y)/3; //и получим координаты центра масс
 
		g.drawLine(A.x,A.y,D.x,D.y);//рисуем отрезки от вершин к центру масс
		g.drawLine(B.x,B.y,D.x,D.y);
		g.drawLine(C.x,C.y,D.x,D.y);
 
		drawMCT(g,A,B,D,iter-1);//вызываем рекурсивно процендуру для полученных 
		drawMCT(g,B,C,D,iter-1);//треугольников, с итерацией, меньшей на 1
		drawMCT(g,A,C,D,iter-1);
 
 
 
		return 0;
 
	}
 
	@Override
	protected void paintComponent(Graphics g) {
		// TODO Auto-generated method stub
		super.paintComponent(g);
		this.setBackground(Color.BLACK);
		g.setColor(Color.GREEN);
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension size = kit.getScreenSize();//получим размеры экрана
		int h=size.height;
		int w=size.width;
		Point A=new Point(w*3/4,h*3/4);//выберем начальные точки, чтоб красиво смотрелись
		Point B=new Point(w/4,h*3/4);
		Point C=new Point(w/2,h/4);
		g.drawLine(A.x, A.y, B.x, B.y);//рисуем изначальный треугольник
		g.drawLine(B.x, B.y, C.x, C.y);
		g.drawLine(A.x, A.y, C.x, C.y);
 
 
		drawMCT(g, A,B,C, iter);//вызываем отрисовку фрактала
		repaint();
 
	}
 
}

Прикрепленный файлРазмер
Larionov_MCTriangle.zip5.95 кб