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

Вход на сайт

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

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

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

Не работает, выводит это: Process terminated with status 4258096 (0 minute(s), 2 second(s)) при этом открывается консоль с тем же числом
А как можно добавить сюда глубину рекурсии, то есть сложность линии?
ошибка : пишет не удается открыть источник файл "SDL.h" Из за этой ошибки не удается запустить программу хотя я все сделал правильно , в результате код не работает : //подключим SDL и stdio #include #include //Некоторые константы нашего окна const...
Чет не работает, помогите, надо очень сильно
добрый день! при попытке компиляции выдает Source.obj : error LNK2001: неразрешенный внешний символ "__imp_glPointSize" 1>Source.obj : error LNK2001: неразрешенный внешний символ "__imp_glPopMatrix" 1>Source.obj : error LNK2001: неразрешенный...

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

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

import java.awt.*;
import javax.swing.*;
 
public class Window extends JFrame{
 
	/*  Инициализация окна*/
    public Window(int x, int y, boolean b) {		  
        setSize(x, y);
        setDefaultCloseOperation(3);
        Canvas canvas=new Canvas();
	add(canvas);
	setVisible(b);
    }
 
    public static void main(String[] args) {
         new Window(1000,700,true);
    }
}
 
@SuppressWarnings("serial")
class Canvas extends JComponent{
// переменная для хранения текущего состояния прорисовки
    int cycle=0;
 
    // Переменная, задающая количество линий в одном круге
    double delta=6.28/20;
 
    // Переменная, задающая расстояние между кругами
    double deltaDist=15;
 
    // Переменная, хранящая момент анимации
    double mom=0.01;
 
    // Функция, рисующая анимируемое изображение
    void draw(int c, double moment, Graphics2D g2){
	for(double distance=deltaDist,step=1;distance<200;distance+=deltaDist){
            for(double d=0 ;d<6.28;d+=delta){	
 
                // Для удобства обращения создаётся массив точек, вокруг текущей (той, что будет рисоваться)
        	Point p[]={
		 new Point((int)(distance*Math.cos(d)),(int)( distance*Math.sin(d))),
		 new Point((int)(distance*Math.cos(d+step*delta)),(int)( distance*Math.sin(d+step*delta))),
		 new Point((int)((distance+deltaDist)*Math.cos(d+step*delta)),(int)( (distance+deltaDist)*Math.sin(d+step*delta))),
		 new Point((int)((distance+deltaDist)*Math.cos(d)),(int)( (distance+deltaDist)*Math.sin(d))),
		 new Point((int)((distance+deltaDist)*Math.cos(d-step*delta)),(int)( (distance+deltaDist)*Math.sin(d-step*delta))),
		 new Point((int)(distance*Math.cos(d-step*delta)),(int)(distance*Math.sin(d-step*delta))),
		};
 
		 // Вычисление второй координаты, в зависимости от момента анимации
		int X=(int)(p[c+1].x+(-p[c+1].x+p[c+2].x)*mom),
		Y=(int)(p[c+1].y+(-p[c+1].y+p[c+2].y)*mom);
 
		// Рисование линии по уже вычисленным ранее координатам	
		g2.drawLine(p[0].x,p[0].y, X,Y);
 
            }
	step*=-1;
	}
    repaint();	
    }
 
    public void paintComponent(Graphics g){
        Graphics2D g2=(Graphics2D)g;
 
	// Тип линии, которой будет рисоваться: Толщина 3, закруглённые концы
	g2.setStroke(new BasicStroke(3.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND)); 
 
	// Цвет рисования - синий
	g2.setPaint(new Color(33,55,243));
 
	// Перенос центра координат в центр окна
	g2.translate(getWidth()/2, getHeight()/2);
 
	// Вызов функции рисования
	draw(cycle, mom,g2);
 
	// Приращение момента анимации
	if(mom<1)mom+=0.01;
	else { 
	    mom=0.01;
            cycle+=1;
            cycle%=4;			 
	}		 
    }
}

Прикрепленный файлРазмер
okyo_circle_lines.rar3.35 кб