CSPromex
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


Programadores dedicados a C sharp .Net, eres nuevo, experto o quieres aprender a programar en C Sharp, aquí encontraras todo lo que necesitas.
 
ÍndiceBuscarÚltimas imágenesChatRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Últimos temas
» Sockets Conexion,Envio y recepcion de datos (mini-chat Cliente-Servidor)
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeSáb Sep 30, 2023 6:24 pm por EurekaMartin

» Graficos: Grafica circular
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeMar Mar 05, 2019 4:58 pm por Luis Garcia

» Calendario hecho Manualmente
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeMar Mar 05, 2019 3:52 pm por Luis Garcia

» Activar el protector de pantalla.
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeMar Mar 05, 2019 3:12 pm por Luis Garcia

» Hacer backup de MySql desde C#
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeMar Abr 18, 2017 10:04 pm por maurifl

» Sockets programa para Ciber Cafe (Cliente-Servidor)
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeLun Ago 10, 2015 5:45 pm por artes

» Ayuda crear emoticones en un chat
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeDom Jul 12, 2015 9:00 pm por yeco96

» Necesito ayuda para pasar datos a un Datagridview
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeDom Jun 07, 2015 4:33 pm por rafaelfa

» Reproductor de música->Lista de reproducción (Guardar-Cargar)
Crear figura geometrica a partir de 2 puntos. I_icon_minitimeLun Jun 01, 2015 3:00 pm por kevin22

Buscar
 
 

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

 

 Crear figura geometrica a partir de 2 puntos.

Ir abajo 
AutorMensaje
Luis Garcia
STAFF TEAM
STAFF TEAM
Luis Garcia


Mensajes : 64
Puntos : 112

Crear figura geometrica a partir de 2 puntos. Empty
MensajeTema: Crear figura geometrica a partir de 2 puntos.   Crear figura geometrica a partir de 2 puntos. I_icon_minitimeLun 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
 
Crear figura geometrica a partir de 2 puntos.
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Sistema de puntos y Rangos
» Crear un archivo XML
» Crear carpeta
» Crear y guardar archivos
» Crear un DataSet en base al esquema de un XML.

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