Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
riyaki_
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 9
1

2D графика в Java

10.03.2014, 22:00. Просмотров 536. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Сразу к сабжу.
Есть интерфейсы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * Represents image canvas
 */
public interface Canvas {
 
    /**
     * Width of the canvas. In other words the number of horizontal pixels.
     * @return width of the canvas
     */
    public int getWidth();
 
    /**
     * Height of the canvas. In other words the number of vertical pixels.
     * @return height of the canvas
     */
    public int getHeight();
 
    /**
     * Sets given color at given coordinates in canvas. The coordinates are
     * in range x in [0; {@link Canvas#getWidth()} - 1] and y in [0; {@link Canvas#getHeight()} - 1].
     * This is similar to the indexing of 2D array.
     * @param x coordinate
     * @param y coordinate
     * @param color desired color of the pixel
     */
    public void setColorAt(int x, int y, Color color);
 
    /**
     * Sets ink for final color transformation of the canvas
     * @param ink to be set
     */
    public void setInk(Ink ink);
 
}
и
Java
1
2
3
4
5
6
7
8
9
public interface Shape {
 
    /**
     * Prints shape into given canvas using {@link cz.cvut.k36.pr2.hw.hw02.Canvas#setColorAt(int, int, Color)} method.
     * @param canvas to be printed to.
     */
    public void printToCanvas(Canvas canvas);
 
}
Задание такое. Реализовать Shape в 2D примитивы Rectangle, Circle и Line.
Реализация.
Пиксели представлены с помощью целочисленных координат х, у. Координаты задают позицию центра пикселя. Из этого следует, что пиксель имеет размеры 1х1.
Для классов Rectangle и Circle действует правило, что пиксель на координатах х,у закрашивается, если центр пикселя лежит в области покрытой данным примитивом. Отрезок на координатах х,у закрашивается, если центр пикселя в отрезке ближе, чем расстояние угла пикселя от его центра.
Конструкторы:
public Rectangle(Color color, double bottomLeftX, double bottomLeftY, double topRightX, double topRightY)

public Line(Color color, double startX, double startY, double endX, double endY)

public Circle(Color color, double centerX, double centerY, double radius)

Пока я написал(а точнее сказать скопипастил с форума) классы Line и Point.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Point {
    final public double x;
    final public double y;
 
    public Point(Point point) {
        x = point.x;
        y = point.y;
    }
 
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Line implements  Shape{
    Color color;
    private final Point begin;
    private final Point end;
    
    public Line(){
        begin = new Point(0.0, 0.0);
        end = new Point(0.0, 0.0);
    }
 
    public Line(Color color, double startX, double startY, double endX, double endY) {
        this.color = color;
        begin = new Point(startX, startY);
        end = new Point(endX, endY);
    }
 
    public Line(Point begin, Point end) {
        this.begin = begin;
        this.end = end;
    }
    public double getLength() {
        return Math.sqrt(getVectorLength(begin.x, end.x) + getVectorLength(begin.y, end.y));
    }
    private double getVectorLength(double begin, double end) {
        return Math.sqrt((begin - end) * (begin - end));
    }
 
    @Override
    public void printToCanvas(Canvas canvas) {
        
    }
    
}
Остальные примитивы будут выглядеть примерно одинаково, я полагаю. Меня интересует последний метод printToCanvas(Canvas canvas). По сути каждую точку между началом и концом он должен закрашивать определенным цветом(классы для цветов есть), и использовать он должен формулы аналитической геометрии, но я не могу понять, как это дело реализовать. Очень прошу помочь, хотя бы натолкнуть меня на мысль с этим классом, остальное буду делать сам. Вообщем, заранее благодарю за помощь

Добавлено через 17 часов 55 минут
И еще. Можно использовать AWT библиотеки.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2014, 22:00
Ответы с готовыми решениями:

Графика в Java
Товарищи, нужна ваша помощь. Есть библиотека (на основе AWT) (папка lib). Она...

3D графика в Java
Подскажите какую библиотеку выбрать для программирования 3D графики на Java....

2d графика и изометрия в java
Доброго времени суток. Какие есть средства в java, для создания изометрической...

Java графика спираль
Приветствую всех, кто не спит) у меня тут задачка,которую нужно срочно...

Графика в Java для Windows
Имеется небольшое приложение Java для Windows XP (на картинке слева) К нему...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2014, 22:00

Java и OpenGL. Java и 3Д графика
Здравствуйте, уважаемые форумчане!:) Хочу создать небольшую 3Д игрушку на...

Графика Java
Здравствуйте прошу помочь литературой или возможно есть видео как написать...

Столько разделов в Java, расскажите разницу между ними. Кроссплатформенная разработка приложений + 3D Графика
Столько разделов в Java, расскажите разницу между ними. Интересует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru