Primitivas

Páginas: 24 (5791 palabras) Publicado: 11 de abril de 2015
PRIMITIVAS DE SALIDA
Curso de graficación I

Contenido









Dibujo de puntos
Algoritmos comunes de trazo de rectas
Algoritmos comunes de trazo de círculos
Otras primitivas
Bibliotecas gráficas en C y Java
Uso de primitivas de biblioteca
Principios de animación
Mejora de la animación

La pantalla gráfica
0

Máxima x – 1

x = 0, y = 0
0

Máxima y – 1
x = Máxima x – 1
y = Máxima y – 1 Dibujo de puntos en C y Java
C
La función putpixel(int x, int y, int color) dibuja un
punto en la coordenada x,y con el color especificado.
Ejemplo: putpixel(50,25,7) dibuja un punto color gris en la
coordenada 50,25.

Java
En Java se dibuja en un objeto de la clase Graphics. No tiene una función
para dibujar puntos pero puede usarse:
Graphics g;
g.drawLine(50,25,50,25);

Ejemplo 1
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
int i;
initwindow(400, 300);
for(i = 0; i< 1000; i++){
putpixel(rand()%400,rand()%300,rand()%15+1);
}
system("PAUSE");
closegraph();
return EXIT_SUCCESS;
}

Trazo de líneas rectas paralelas a
los ejes
La línea recta es la más fácil de dibujar
Las líneas rectas paralelas a los ejes se pueden trazar un un
simplelazo for.
El siguiente código traza un línea horizontal desde x a x+ancho.
for(i = x; i < x+ancho; i++)
putpixel(i,y,color);
De forma similar se traza un línea vertical

Ejemplo
#include
#include
using namespace std;
void lineaH(int x1, int x2,int y, int color){
int dx;
dx = x2>x1?x2-x1:x1-x2;
for(int i=0;i putpixel(x1+i,y,color);
}
int main(int argc, char *argv[]){
int i;
initwindow(400, 300);
for(i = 0; i< 1000; i++){
lineaH(rand()%100,rand()%300,rand()%300,rand()%15+1);
}
getch();
closegraph();
return EXIT_SUCCESS;
}

Tarea
Escriba funciones en C para dibujar a) una línea vertical y b)
una línea diagonal a 45 grados, utilizando la primitiva para
dibujar un punto.
Ponga los parámetros adecuados en cada caso.

Dibujo de Líneas Rectas
Una línea recta debedibujarse como una sucesión de píxeles.

Efecto de escalera que se produce cuando se genera una línea
como una serie de píxeles.

Algoritmos para trazo de líneas
rectas
•Algoritmo DDA, algoritmo incremental básico
con aritmética de punto flotante.
•Algoritmo de Bresenham, algoritmo
incremental complejo con sólo aritmética
entera.

Algoritmo DDA
Ecuación básica de la recta

y m x  b
m es lapendiente y b la intersección con el eje y

y2  y1
m
x2  x1

b  y1  m x1

Para cualquier intervalo x de x a lo largo de la recta,
se puede calcular el y correspondiente como:

y m x
Si la pendiente es positiva y menor que 1, se toman
variaciones de x iguales a 1 y se calcula y con:

yi 1  yi  m
Las rectas con pendiente mayor que 1, se invierten
los papeles de x y de y.

voiddda(int x1,int y1,int x2,int y2,int color){
int dx,dy,steps,k;
float x_increment,y_increment,x,y;
dx = x2-x1;
dy = y2-y1;
if(abs(dx)>abs(dy))
steps = abs(dx);
else
steps = abs(dy);
if(steps==0)
steps = 1;
x_increment = (float)dx/steps;
y_increment = (float)dy/steps;
x = x1;
y = y1;
putpixel((int)x,(int)y,color);
for(k = 1;k <=steps ;k++){
x = x+x_increment;
y = y+y_increment;putpixel((int)x,(int)y,color);
}
}

Algoritmo de línea de Bresenham
Sección de una pantalla
de despliegue donde se
desplegará un segmento
rectilíneo, comenzando
desde la posición (10,
10). Las posiciones de los
pixeles se representan por
las áreas rectangulares
numeradas.

Trayectoria de la línea especificada

13
12
11
10
9
10

11

12

13

14

Trayectoria de la línea especificada

Sección de una pantalla de
desplieguedonde se
desplegará un segmento
rectilineo con pendiente
negativa, comenzando desde
la posición (10, 12).

13
12
11
10
9
10

11

12

13

14

El siguiente pixel que se grafique en cada uno de estos
ejemplos será aquel cuyo valor de y esta más próximo a la
posición real de y sobre la recta.

Sección de una retícula de la
pantalla donde se desplegará
una línea que pasará por:

x ,y 
i

i

De aquí...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Primitiva
  • Era Primitiva
  • Primitivas
  • era primitiva
  • Primitivas
  • Era primitiva
  • Primitivo
  • Primitivo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS