Programadores dedicados a C sharp .Net, eres nuevo, experto o quieres aprender a programar en C Sharp, aquí encontraras todo lo que necesitas.
 
ÍndiceCalendarioFAQBuscarMiembrosGrupos de UsuariosChatRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Últimos temas
Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Síguenos:
Crear foro Crear foro Crear foro

Comparte | 
 

 Crear figura geometrica a partir de 2 puntos.

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Luis Garcia
STAFF TEAM
STAFF TEAM


Mensajes : 61
Puntos : 109

MensajeTema: Crear figura geometrica a partir de 2 puntos.   Lun Mar 21, 2011 6:01 pm

En este apartado veremos como crear una figura geométrica a partir de dos puntos, como lo muestra en la imagen:

[Tienes que estar registrado y conectado para ver esa imagen]

Para crear un polígono de n lados en la computadora vamos a necesitar el "using" para poder graficar los puntos.

System.drawing;

Tendremos una variable de tipo PointF que se va a llamar puntos:
PointF[] puntos; // lo ponemos antes del constructor

Necesitamos un control de tipo panel en el que dibujaremos el polígono, también agregamos un botón para ejecutar el código y un textbox para insertar el numero de lados de nuestra figura.

En el evento paint del "control panel" insertamos este código:

Código:

if (puntos != null && puntos.Count() > 0) // con esto verificamos si hay algún punto
{
PointF Centro = new PointF(panel1.Width / 2, panel1.Height / 2);
//localizamos el punto medio del control
for (int i = 0; i < puntos.Count(); i++)
// con esto colocaremos los puntos a partir del centro de nuestra figura
{
puntos[i] = new PointF(puntos[i].X + Centro.X, puntos[i].Y + Centro.Y);
}

e.Graphics.DrawPolygon(Pens.Black, puntos);
/*Graficamos los puntos con la función drawpoligon utilizando los argumentos del evento *paint
*/
}


En el evento click del botón insertamos:

Código:

puntos = null;
// Nos aseguramos que no halla puntos
PointF PInicial = new PointF(-100, -100); //Punto inicial superior izquierdo
PointF Pfinal = new PointF(100, 100); //Punto Final inferior derecho
int nLados = int.Parse(textBox1.Text); // El numero de lados de nuestro polígono
puntos = new PointF[nLados];
/*El numero de lados de nuestra figura también será el numero de puntos que esta figura tendrá*/
float PX = 0, PY = 0; //Punto X, Punto Y
float MX = 0, MnX = 0, MY = 0, MnY = 0;
/*MX=MaximoX, MnX=Menor X , MY= Mayor Y, Mny=Menor Y*/
/*Calculamos el menor y el mayor de todos los puntos
para tener graficamente esto:
__________________________
|*(Mnx, Mny) *(MX,Mny|
| |
|*(Mnx,MY)________*(MX,MY)|
Representando un cuadrado imaginario que contendrá nuestra figura
*/
if (PInicial.X > Pfinal.X) { MX = PInicial.X; MnX = Pfinal.X; } else { MX = Pfinal.X; MnX = PInicial.X; }

if (PInicial.Y > Pfinal.Y) { MY = PInicial.Y; MnY = Pfinal.Y; } else { MY = Pfinal.Y; MnY = PInicial.Y; }

PointF PCentro = new PointF((MX + MnX) / 2, (MY + MnY) / 2);
//Sacamos el punto medio del cuadrado imaginario
/*
¿Para que hacer todo esto?
La respuesta es que para poder obtener los puntos de una figura usaremos la función de rotación sobre un eje para un punto.

[Tienes que estar registrado y conectado para ver este vínculo]

Código:

for (int i = 0; i < nLados; i++)
{
if (i == 0) //Si es el primer punto
{
puntos[i]=new PointF(MnX, MnY);
/* Nuestro primer punto será en el punto X menor y el punto Y menor de nuestro cuadrado imaginario */
}
else
{
/*Teniendo nuestro punto central y tomando como referencia a nuestro primer punto, podremos dibujar nuestra figura.

A partir del punto central de nuestro cuadrado imaginario rotaremos nuestro punto inicial(MnX,Mny), los grados que se rotará nuestro punto es el resultado de el numero de lados de nuestra figura entre 360, utilizando trigonometria nos dice que "el numero de ángulos interiores de una figura por vértice siempre es igual a 360°" osea que un cuadrado tendrá por cada vértice un angulo de 360/4=90° por vértice.

Con esto podemos sacar una formula para calcular los grados que se rotará nuestro punto, Angulo= numeroLados/360.

Se crea un punto por cada rotación así obtendremos cada uno de los vértices de la figura y al final son unidos por la funcion drawpoligon, veamos: */
/*Función para punto X= PCentroX+ (PanteriorX-PcentroX) * cos(360/lados) - (PanteriorY-PcentroY)*sen(360/lados)
*/
PX = PCentro.X + (( (puntos[i - 1].X - PCentro.X) * float.Parse(Math.Cos((360 / nLados) * Math.PI / 180).ToString())) - ((puntos[i - 1].Y - PCentro.Y) * float.Parse(Math.Sin((360 / nLados) * Math.PI / 180).ToString())));

/*Función para punto Y= PCentroY+ (PanteriorX-PcentroY) * sen(360/lados) - (PanteriorY-PcentroY)*cos(360/lados)
*/
PY = PCentro.Y + (((puntos[i - 1].X - PCentro.Y) * float.Parse(Math.Sin((360 / nLados) * Math.PI / 180).ToString())) + ((puntos[i - 1].Y - PCentro.Y) * float.Parse(Math.Cos((360 / nLados) * Math.PI / 180).ToString())));

puntos[i]=new PointF(PX, PY);
/*Guardamos el punto rotado el numero de grados calculado como un punto de tipo flotante*/
}
}

panel1.Refresh();

//Refrescamos el control panel para que se ejecute el método paint del control panel1
Ejecutamos y ponemos el numero de lados para nuestra figura y visualizaremos la figura.

Código fuente:
[Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario
 
Crear figura geometrica a partir de 2 puntos.
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» Crear imagen jpg a partir de un rango de celdas
» como crear un sistema de intercambio de puntos
» A partir de datos de excel llenar plantilla de word
» Crear vhd personalizado
» Error al crear documentos

Permisos de este foro:No puedes responder a temas en este foro.
CSPromex :: PROGRAMACIÓN EN C# :: Código abierto-
Cambiar a: