Computação
Gráfica
Aula 1 - Primitivas
gráficas em duas
dimensões
Alexandre de Barros Barreto - Ms
Objetos Geométricos Básicos

Primitivas Geométricas: representam os conceitos básicos possíveis
de serem representados em um sistema gráfico computacional.

Pontos: Denota posição no plano (x,y).

Linhas: São primitivas geométricas definidas através da junção de
dois pontos.

Curvas: São primitivas geométricas definidas por dois ou mais
pontos de controle.

Polyline: sequência de pontos, onde a próxima linha começa onde
a sua predecessora termina.

Polígono: Polyline onde o último segmento de reta (linha) termina
onde o primeiro inicia.
Propriedades

Overlap (sobreposição): Um polígono não pode se
sobrepor a ele mesmo.
Self-overlaping Polígono

Convexidade: Um polígono é convexo quando quaisquer
dois pontos dentro da área definida pelo polígono
podem ser conectados inteiramente dentro do mesmo.
Polígono Não convexo
Polígono Convexo
Operações Básicas com Polígonos
União
Diferença
Interseção
Diferença Simétrica
(XOR)
Programa Básico em Java 2D
AWT
JAVA 2D
JAVA 2D
SWING
Programa Básico em Java 2D
Programa Básico em Java 2D
O
ponto (0,0) representa o canto esquerdo
superior da janela (window).


No programa anterior a janela possui uma
resolução de 350 x 80 pixels.
O objeto string desenhado é colocado na posição
30 x 50.
 Uma
janela possui margens em seus quatro lados.
A sua margem superior possui um atributo
especial chamado Título (title).
Primitivas em Java 2D

Shape: classe abstrata que permite assim como suas
subclasses representar quaisquer objetos 2D em Java.



Point2D: Classe abstrata usada para definir coordenadas
que serão usadas por outros objetos.




Shape é construído através de uma representação vetorial.
Para que uma Shape seja desenhado em uma janela é
necessário chamar os métodos fill (desenha apenas as
linhas) ou draw (desenha o área de um polígono).
Não é uma subclasse de Shape.
Não pode ser desenhada diretamente.
Suas subclasses são Point2D.Float e Point2D.Double.
Line2D: Classe abstrata que define uma reta (linha).


Suas subclasses são Line2D.Double e Line2D.Float.
Para ser definida usa-se duas coordenadas (x1,y1) e (x2,y2).
Primitivas em Java 2D
 QuadCurve2D:
Define uma curva quadrática, ou
seja, que necessita apenas de dois endpoints e
um ponto de controle (tangente a curva) para
definir sua forma.

QuadCurve2D qc = new QuadCurve2D (x1,y1, ctrx, ctry, x2,y2).
 CubicCurve2D:
Define uma curva cúbica, ou
seja, que necessita de dois endpoints e pelo
menos dois pontos de controle (tangente a
curva) para definir a sua forma.

CubicCurve2D cc = new CubicCurve2D(x1,y1, ctrx1, ctry1,ctx2,
ctrx2,ctry2, x2,y2).
Primitivas em Java 2D
 GeneralPath:
Classe que permite não somente a
construção de polylines, mas sequencias mistas
de
primitivas,
como
polígonos
cúbicos,
quadráticos, etc.
 Usa os métodos lineTo, quadTo, curveTo para
definir o objeto.
General Path
Primitivas em Java 2D
 Rectangle2D:
retângulo.

Rectangle2D.Double
(x,y,largura, alt)
 Ellipse2D:

Classe
=
new
representa
um
Rectangle2D.Double
Classe que representa uma elipse.
Ellipse2D.Double
(x,y,largura, alt)

rt
que
ed
=
new
Ellipse2D.Double
Círculo: new Ellipse2D.Double(x-r,y-r,2*r,2*r)
Primitivas em Java 2D
 Arc2D:
classe que representa
arcos de uma elipse.

Arc2D.Double arc = new
Arc2D.Double(rect2D,start,
extend, type).
especifica o retangulo
que define o arco desejado.
 start: define o ângulo onde o
arco iniciará tendo como
referência o retângulo.
 extend: define até onde o
arco se extenderá.
 type:
ARC2D.OPEN,
ARC2D.PIE, ARC2D.CHORD.
open
C
 rect2D:
pie
chord
Primitivas em Java 2D
 Area:
classe que permite algumas operações
entre primitivas.





Area a = new Area (Shape s)
areaA.add(areaB)
areaA.intersect(areaB)
areaA.subtract(areaB)
areaA.exclusiveOr(areaB)
Lista de Exercício 1
1.
Desenhe um retângulo (ret) e um círculo
(circ) em uma janela.
2.
Com base nas primitivas descritas no
exercício 1, imprima em uma janela o
resultado de:
1.
2.
3.
4.
5.
6.
circ interseção ret
circ + ret
circ – ret
ret – circ
ret dif_sim circ
circ dif_sim ret
Lista de Exercício 1
3.
Desenhe um barco em Java2D.
4.
Desenhe um mastro com uma bandeira
em Java 2D.
Download

Primitivas gráficas em duas dimensões