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

Вход на сайт

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

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

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

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

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

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

В данном примере строится многоугольник по количеству сторон n, координатам центра многоугольника и расстоянию R от центра многоугольника до его стороны. Все значения задаются переменными в самом коде программы.

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

import java.awt.*;
 
import javax.swing.*;
import java.lang.Math;
 
public class nygolnic extends JPanel {
	static int n = 4; //кол-во граней
	static int R = 50; //радиус
	static int X = 250, Y = 250;//координаты центра
	static int x[] = new int [n];//координаты точек
	static int y[] = new int [n];//
	static int x1, y1, x2, y2;
	static int j = n;
 
	public nygolnic(){
 
		JFrame jf = new JFrame();
		jf.setSize(500, 500);
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);		
		jf.setLocationRelativeTo(null);
 
		jf.getContentPane().add(this);	
 
		jf.setVisible(true);		
		jf.repaint();
 
	}
	public void paintComponent(Graphics g){
		super.paintComponent(g);	
		double a, b,  z = 0 ;  int i = 0; double angle = 360.0 / n ; 
		//цикл создающий массив из точек
		while(i < n){
			a = Math.cos( z/180*Math.PI);
			b = Math.sin( z/180*Math.PI);
			x[i] = X + (int)(Math.round(a) * R);
			y[i] = Y - (int)(Math.round(b) * R);			
			z = z + angle;
			i++;
		}
		System.out.println();
 
		int x1, x2, y1, y2;
 
		int j = n-1;		//цикл передающий координаты для прорисовки грани
		while(j >= 0){
 
			if(j > 0){
				x1 = x[j]; x2 = x[j-1];
				y1 = y[j]; y2 = y[j-1];
				g.drawLine(x1, y1, x2, y2);			
				j--;
			}
			else{
				x1 = x[j]; x2 = x[n-1];
				y1 = y[j]; y2 = y[n-1];
				g.drawLine(x1, y1, x2, y2);
				j--;
 
			}
 
		}
 
	}
 
	public static void main(String[] args) throws Exception{	
		nygolnic NY = new nygolnic();
			NY.repaint();
			}
 
}