¿Como se grafica un circulo y una elipse?
Debido a que la elipse y la circunferencia son figuras simétricas el
algoritmo genera los vértices del primer cuadrante solamente. Los vértices del
segundo cuadrante se crean aplicando simetría
axial respecto a los vértices del primer cuadrante, los vértices del tercer
cuadrante con respecto a los del segundo y los vértices del cuarto cuadrante
con respecto a los del tercero.
Las
ecuaciones utilizadas son las paramétricas polares
Este
algoritmo consiste en dividir la elipse en cuatro partes iguales y a cada una
agregarle la cantidad de vértices (pasos) que se indiquen. El punto de partida
es crear cuatro vértices los cuales están situado en los ejes del plano XY a la
distancia del radio correspondiente al eje, partiendo siempre del origen de
coordenadas, por lo que la elipse siempre se crea en el origen de coordenadas y
en el plano XY. Si se desea desplazar del origen de coordenadas entonces hay
que aplicarle una transformación a cada vértice[1].
En la
figura 1 se muestra una elipse con cero pasos.
Fig 1.
El cuadrado amarillo formado por los cuatro vértices es la elipse formada
cuando la cantidad de pasos es cero. La elipse rosada es otra que tiene el
mismo radio pero usando un método adaptativo, esta se muestra como referencia
solamente.
|
Si la cantidad de pasos es uno
entonces se divide 90º / 2 y este va a ser el ángulo del vértice agregado en el
primer cuadrante. Una vez obtenido el ángulo se evalúan las ecuaciones para ese
ángulo y la posición obtenida es la del vértice nuevo. En el resto de los
cuadrantes se calcula la posición del vértice a través de simetría para evitar
los cálculos. Este caso puede observarse en la figura 2.
Pseudocódigo
Entradas
float radioX
float radioY
byte s // Cantidad de pasos
Salidas
La lista de vértices y las
coordenadas de textura de cada vértice
A continuación aparece el
pseudocódigo utilizado por el algoritmo:
Crear una lista de vértices
(vacía)
Agregar a la lista el vértice
para el ángulo cero que está situado en la coordenada (radioX, 0, 0)
Si la cantidad de pasos es cero Entonces
Agregar los tres vértices
restantes (ver fig 1):
o (0, radioY, 0)
o (-radioX, 0, 0)
o (0, -radioY, 0)
Si no Entonces
Crear una constante
Crear una variable aa que
indica el valor del ángulo de rotación actual
Mientras aa sea menor que
90º
Calcular la posición del nuevo
vértice usando como ángulo aa
Agregar el nuevo vértice a la
lista de vértices
Fin mientras
// En este momento ya se han
calculado todos los vértices del primer cuadrante.
Agregar el vértice que está
situado en el eje Y positivo (0, radioY, 0)
Agregar los vértices del segundo
cuadrante utilizando simetría axial.
Agregar el vértice que está
situado en el eje X negativo (-radioX, 0, 0)
Agregar los vértices del tercer
cuadrante utilizando simetría axial.
Agregar el vértice que está
situado en el eje Y negativo (0, -radioY, 0)
Agregar los vértices del tercer
cuadrante utilizando simetría axial.
Fin si
Generar las coordenadas de
textura (ver código fuente de ejemplo)
Nota: La cantidad de pasos oscila en el rango 0..255,
pero en la práctica con 100 es suficiente. GMax y 3DS MAX usan 6 pasos por
defecto.
No hay comentarios:
Publicar un comentario