Академический Документы
Профессиональный Документы
Культура Документы
Algoritmo básico
y = mx + b
Si la recta se dibuja desde el punto (x0, y0) hasta el punto (x1, y1), el algoritmo
varia x desde x0 hasta x1 en incrementos de una unidad. El siguiente es el
código en Java.
publicvoidrectaSimple(int x0, int y0, int x1, int y1, Graphics g){
int dx = x1 - x0;
intdy = y1 - y0;
Este método permite dibujar una línea, entre los puntos (xi,yi) y (xf,yf),
utilizando la ecuación y = mx + b generando a continuación la secuencia (xi+1 =
xi + Δx, round (yi+ 1)).
Con este cálculo se obtiene el píxel más cercano o sea aquel cuya distancia a
la recta es menor.
Este método no es tan eficiente debido a que en cada iteración se requiere una
multiplicación y una suma en punto flotante, más la invocación del método de
truncamiento.
Como todos saben Open GL es una herramienta que nos facilita mucho la
generación de gráficos por computadora. Aqui aplicamos conocimientos
matemáticos, usando Open GL para generar rectas, corcunferencias, elipses,
etc.
El Algoritmo DDA es un algoritmo de línea de conversión de rastreo que se
basa en el cálculo ya sea en el incremento de X o en el incremento de Y. La
finalidad de este algoritmo es determinar los valores enteros correspondientes
más próximos a la trayectoria de la línea para la otra coordenada.
Código:
f circunferencia (x , y)= x2 + y2 - r2
/*
* Algoritmo de dibujo de un Círculo basado en la ecuación Canónica
*/
voiddibujarCirculoCanonica(int r, int xc, intyc) {
int x = 0;
int y = r;
while (x <= y) {
this.dibujarPunto(x + xc, y + yc);
x++;
double yd = Math.sqrt(r * r - x * x);
y = (int) Math.round(yd);
}
}
/*
* Algoritmo para el dibujo de círculo basado en la ecuación
parámetrica
* polar de la circunferencia.
*/
/*
* Algoritmo para el dibujo de Círculo con el algoritmo de
* punto medio
*/
publicvoiddibujarCirculoPuntoMedio(int r, int xc, intyc) {
// Punto inicial del círculo
int x = 0;
int y = r;
// Cálcular el parámetro inicial de decisión
intpk = 1-r;
/*
* Dibujar un punto
*/
protectedvoiddibujarPunto(int x, int y) {
gl.glPointSize(2);
gl.glBegin(GL.GL_POINTS);
gl.glVertex2i(x, y);
gl.glEnd();
}
}
Resultado de la aplicación:
El siguiente applet permite seguir paso a paso el agoritmo de punto medio para
elipses. Haga clic sobre el área cuadriculada para establecer el centro de la
elipse. A continuación vuelva a hacer clic para definir los radios en x y y. El
radio en x es la distancia en x entre el primer clic y el segundo y el radio en y es
la distancia en y entre el primer clic y el segundo.
intx,y,d;
int p2, p4;
p2 = 2*p;
p4 = 2*p2;
x = 0;
y = 0;
d = 1 - p;
//region 1
g.drawLine(xc+x,yc+y,xc+x,yc+y);
g.drawLine(xc+x,yc-y,xc+x,yc-y);
x++;
d = d - p2;
y++;
d = d + 2*y +1;
if(d == 1) d = 1 - p4;
else d = 1 - p2;
//region 2
while(x<=bound){
g.drawLine(xc+x,yc+y,xc+x,yc+y);
g.drawLine(xc+x,yc-y,xc+x,yc-y);
y++;
d = d + 4*y;
x++;
d = d - p4;
Quedará en la mitad del eje positivo del plano (x, ). Las longitudes de las
líneas no se verán afectadas por la transformación.
Las transformaciones entre sistemas de coordenadas cartesianos se llevan a
cabo con una secuencia de transformaciones traslación. Rotación que hacen
que los dos sistemas coincidan. Especificamos el origen de coordenadas y
vectores de eje para un marco de referencia respecto al marco de referencia
original. En un sistema bidimensional, un vector define completamente las
direcciones del eje de coordenadas; pero en un sistema tridimensional, hay que
especificar dos de las tres direcciones de los ejes. Las transformaciones
geométricas son transformaciones afines. Esto es, pueden expresarse como
una función lineal de posiciones de coordenadas. Traslación, rotación y
escalación son transformaciones afines. Transforman líneas paralelas en líneas
paralelas y posiciones de coordenadas finitas en posiciones finitas.
Con un paquete gráfico que sólo ofrezca una función de rotación para girar
objetos con respecto del origen de las coordenadas, podemos generar casi
cualquier punto pivote seleccionado (xr, yr) al realizar la siguiente secuencia
de operaciones de traslación-rotación-traslación:
x ´ = xcos + ysen
y´ = - xsen + ycos
x = x ´ cos - y ´ sen
y = x ´ sen + ycos
Por lo tanto,
x = x ´ (21/2/2) - y ´ (21/2/2)
y = x ´ (21/2/2) + y ´ (21/2/2)
y´=1
Una vez realizadas las seis proyecciones ortogonales sobre las caras del
cubo, y manteniendo fija, la cara de la proyección del alzado (A), se procede a
obtener el desarrollo del cubo, que como puede apreciarse en las figuras, es
diferente según el sistema utilizado.
Tipos de planos
a) Planos de diseño.
b) Planos de conjunto o ensamblaje
c) Planos de subconjuntos
d) Planos de fabricación y ensamblaje
e) Planos de detalle
f) Planos de perspectiva explosiva.
g) Planos para catálogos.
De esta forma, tendremos que “romper” la esctrutura de los tres planos (PH, PV
y PP) por la línea de intersección entre los planos horizontal y de perfil, y girar
los planos horizontal y de perfil, hasta hacerlos coincidir con el Plano Vertical
(PV).
Se considera que los planos de proyección son infinitos, por lo que no se deben
dibujar los limites de los planos PV, PH y PP.
Según lo visto en el apartado anterior, podemos ver que las proyecciones están
en verdadera magnitud en el plano de proyección con el que son paralelos.
A. Conociendo el radio.
3, 6, 12 LADOS. Fig.51
Polígonos regulares de 3, 6, y 12 lados, conociendo el radio de la
circunferencia.
4, 8, 16 LADOS. Fig.52
5, 10 LADOS. Fig.53
B. Conociendo el lado.
5 LADOS. Figs.54 A y B
Polígonos regulares de 5 lados, conociendo el lado.
3, 6, 12 LADOS. Figs.55 A, B y C.
4, 8, 16 LADOS. Fig.56 A, B y C