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

Вход на сайт

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

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

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

Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...
Пример, к которому вы оставили комментарий строит именно то самое изображение на языке с#, которое вам необходимо. Отличается только цветовая палитра.

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

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

Задача: Построить окружность, используя алгоритм Брезенхема.
Алгоритм: Строим четверть окружности, и достраиваем остальные симметрично. На каждой итерации цикла выбираем одну из трёх возможных точек(сравниваем расстояние от центра до выбранной точки с радиусом окружности).

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

import javax.swing.*;
import java.awt.*;
 
public class Brez extends JPanel {
    public void paintComponent(Graphics g){
        super.paintComponents(g);
        g.setColor(Color.BLACK);
        Dr_Circle(150, 170, 110, g); //координаты центра и радиус
    }
 
    private void Dr_Circle(int center_x, int center_y, int radius, Graphics g){
        int x = 0, y = radius, sigma = 0, delta = 2 - 2 * radius;
        while (y >= 0){
            //считаем для одной четверти, и симметрично заполняем остальные
            g.drawLine(center_x + x, center_y - y, center_x + x, center_y - y);     // 1 четверть
            g.drawLine(center_x - x, center_y - y, center_x - x, center_y - y);     // 2 четверть
            g.drawLine(center_x - x, center_y + y, center_x - x, center_y + y);     // 3 четверть
            g.drawLine(center_x + x, center_y + y, center_x + x, center_y + y);     // 4 четверть
            sigma = 2 * (delta + y) - 1;
            if (delta < 0 && sigma <= 0) {          //перемещение по горизонтали
                x++;
                delta += x + 1;
            } else if (delta > 0 && sigma > 0) {    //перемещение по вертикали
                y--;
                delta -= y + 1;
            } else {                                //перемещение по диагонали
                x++;
                delta += x - y;
                y--;
            }
        }
    }
}

Прикрепленный файлРазмер
Brez.zip10.34 кб