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

Вход на сайт

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

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

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

dobryj den, popytalas otkryt prikreplionnyj fail ctoby posmotret kak rabotaet, no mne ego ne pokazyvaet vydajet osibku. Pochemu?
Очень интересно! ии сайт крутой жалко что умирает(
У Вас число превысит максимальное число int. Можно использовать в Вашем случае uint, но лучше все переписать на double.
Добавление к программе строки glutReshapeFunc(changeSize); приводит к тому, что треугольник перестаёт совсем отрисовываться.
Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.

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

Рейтинг@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();
			}
 
}