domingo, 28 de septiembre de 2014

                                   Programación II


   Dibujar figuras en Python


Autor: Felipe Álvarez
Competencia: Desarrollo de Software
Asignatura: Programación


Descripción de la Actividad:

La actividad consiste en aprender a programar en MatplotLib el cual es una librería la cual permite poder dibujar figuras de diferentes tipos, la cual esto puede ser bastante útil en términos de aprender geometría y poder tener la capacidad de uno de dibujar un plano cartesiano "Mental", el permite poder programar las coordinas e ir viendo como esta maravillosa librería interpreta lo que uno desea realizar y lo mejor es que se puede visualizar a través de un JPG el cual mostrara el resultado de la actividad.

Lo que se solicita en la actividad es lo siguiente :

- Generar y dibujar un triangulo equilátero, cuyo lado a debe ser generado aleatoriamente entre 0.5 y 0.7. Poner el punto inferior izquierdo en el origen de los ejes cartesianos.

- Encontrar y dibujar la circunferencia en el cual el triangulo generado anteriormente este inscrito.

- Encontrar y dibujar el cuadrado circunscrito a la circunferencia anterior

- Encontrar y dibujar la circunferencia en la cual el cuadrado generado anteriormente este inscrito.

- Guardar todo los resultado generados en una imagen png o JPG.


Modelo de Solución:

A continuación guiare paso a paso como fue la creación de estas diferentes funciones por parte en el cual se explicaran trozos de código, como se llego a la solución y una explicación previa de cada una de las partes de este código, al final se mostrara el código completo y la imagen generada en este Programa.

Crear Triangulo: En la siguiente función nos solicitan que creemos un triangulo equilátero, el cual como se conoce tiene sus 3 lados iguales, pero esto tiene una particularidad sus lados se tienen que generar no por un lado definido si no por números aleatorios entre 0.5 y 0.7, en el cual lo crearemos en una variable denominada "a", también haremos uso de una de las funciones de matplolib denominada Polygon la cual nos ayuda a definir el polígono que queremos, también hay figuras especificas que se existen como función en matploblib para poder definir esta figura se usa Polygon.

# Creacion de los puntos aleatorios, puntos el cual nos calcula la altura de esta figura que es el triangulo y finalmente se setea los colores.

a=((random.random()*0.2))+0.5
puntos = numpy.array([[0,0],[a,0],[a/2,a/2*numpy.sqrt(3)]])
triangle = mat.Polygon(puntos,color=(1,0,1))

Creación Circunferencia: En la siguiente función nos solicitan crear una circunferencia, pero tiene una gracia que no es solo crear la circunferencia en si, si no crearla donde el triangulo creado anteriormente fuera adentro de la circunferencia esto se denomina Inscrito para eso creamos una función denominada centrox y centroy la cual nos ayuda a dejar las figuras inscritas como es en este caso.

#Creacion de la Circunferencia
centrox = ((0)+(a)+(a/2))/3
centroy = ((0)+(0)+(a/2*numpy.sqrt(3)))/3
r=numpy.sqrt(((centrox-0)**2)+((centroy-0)**2))
circulo1 = mat.Circle((centrox,centroy),radius=r,color=(1,0,0))

Creación del Cuadrado: En la siguiente función se solicita crear un cuadrado pero es parecido a la función anterior simplemente que ahora el cuadrado tiene que estar circunscrito dentro dela circunferencia creada anteriormente para eso hacemos uso de la misma función centrox y centroy, para ello sumamos la posición X con el radio de la circunferencia y así sucesivamente.

#Creacion del Cuadrado Circunscrito

pts = numpy.array([[centrox-r,centroy-r],[centrox+r,centroy-r],[centrox+r,centroy+r],[centrox-r,centroy+r]])

Cuadrado = mat.Polygon(pts,color=(1,1,0))

Creación de la Circunferencia: En la siguiente se solicita crear una circunferencia para ello usamos la misma funcion usada anteriormente pero con la diferencia que usamos los centrox y centrosy para poder posicionar la circunferencia dentro del cuadrado así dejándolo inscrito.

#Creacion de la cirfuncerencia inscrita

r=numpy.sqrt(((centrox-(centrox-r))**2)+((centroy-(centroy-r))**2))

circulo2 = mat.Circle((centrox,centroy),radius=r,color=(0,1,1))


Código Final e Imagen.

import random
import matplotlib.pyplot as mat
import numpy 


a=((random.random()*0.2))+0.5
puntos = numpy.array([[0,0],[a,0],[a/2,a/2*numpy.sqrt(3)]])
triangle = mat.Polygon(puntos,color=(1,0,1))

centrox = ((0)+(a)+(a/2))/3
centroy = ((0)+(0)+(a/2*numpy.sqrt(3)))/3
r=numpy.sqrt(((centrox-0)**2)+((centroy-0)**2))
circulo1 = mat.Circle((centrox,centroy),radius=r,color=(1,0,0)) 

pts = numpy.array([[centrox-r,centroy-r],[centrox+r,centroy-r],[centrox+r,centroy+r],[centrox-r,centroy+r]])
Cuadrado = mat.Polygon(pts,color=(1,1,0))

r=numpy.sqrt(((centrox-(centrox-r))**2)+((centroy-(centroy-r))**2))
circulo2 = mat.Circle((centrox,centroy),radius=r,color=(0,1,1)) 

ax = mat.gca()
ax.add_patch(circulo2)
ax.add_patch(Cuadrado)
ax.add_patch(circulo1)
ax.add_patch(triangle)
ax.set_xlim(-1,5,1.5)
ax.set_ylim(-1.5,1.5) 

mat.savefig('triangulo_'+str(a) +'.png')


















¿En que me ayudo esta actividad?

Esta actividad ayuda bastante a lo que es programar en Python y la base de lo que es matplolib es una actividad bastante divertida la cual se recomienda en un 100% de realizar, la información de como usar esta librería en Internet ayuda bastante a conocer las funciones en si y que se puede hacer con ellas, matplolib es una librería a mi parecer que contiene muchas ventajas tanto como en el área de geometría como para poder generar gráficos de diferentes tipos ayuda bastante a lo que es la programación científica en términos de evidenciar resultados.




No hay comentarios:

Publicar un comentario