Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2006
pattyka pattyka is offline
Miembro
 
Registrado: jun 2006
Posts: 26
Poder: 0
pattyka Va por buen camino
Wink

Sorry :S:S ... necesito dibujar en un paintbox un triangulo de 45 grados usando los eventos del mouse (soy primeriza en esto :S:S)...
Responder Con Cita
  #2  
Antiguo 19-07-2006
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Pues, a ver, me parece que sí te voy a pegar el rollo de la trigonometría:

Un triángulo se define por la longitud de sus tres lados (normalmente se nombrean como a, b y c) y los grados de sus tres ángulos (nombrados como A, B y C). El lado a es el opuesto al ángulo A, y así sucesivamente

Para dibujar un triángulo necesitas saber tres de estos 6 datos, y lo que me ha despistado es que sólos sabemos uno: El ángulo de 45 grados.

Vamos a poner un ejemplo: Supongamos que sabes este ángulo: A= 45º, y también sabemos dos lados a y b.

Para calcular los otros tres datos tenemos los teoremas del seno y del coseno:

Teorema del seno:

a / sin (A) = b / sin(B) = c / sin(C)


Teorema del coseno:

a^2 = b^2 + c^2 - 2 * b * c * cos(A)
b^2 = a^2 + c^2 - 2 * a * c * cos(B)
c^2 = a^2 + b^2 - 2 * a * b * cos(B)

Vale, pues con estas fórmulas podemos encontrar los datos que nos faltan.


Una vez tenemos esto, el problema está en dibujar las líneas en las coordenadas correctas. Para ello vamos a partir de una posición fija (p.e. la coordenada 100, 100) que va a ser uno de los treas puntos del triángulo.

Para obtener el segundo punto vamos a sumar la lado 'a' a la coordenada x, por tanto el segundo punto va a estar en (100+a, 100)

Jugando un poco con la trigo, podemos encontrar que la coordenada x del punto que nos falta es:

100 - c * sin(90 - A)

y la coordenada y de este punto es

100 - c * sin(A)

Por lo tanto, tendrías que dibujar las líneas entre los siguientes puntos:


(100, 100)

(100 + a, 100)

( 100 - c * sin (90 - A) , 100 - c * sin(A) )


Donde todos los valores 100 corresponden al punto de inicio del triángulo.

Uf! Espero que te sirva!

Edu
Responder Con Cita
  #3  
Antiguo 19-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Una respuesta muy elegante epuigdef.

Yo como simple que soy, me hubiese ayudado de un cuadrado con el mismo lado que el triángulo, despues hallo el punto medio de un lado y desde ahí lanzo dos líneas al lado opuesto. Sin darle muchas vueltas al asunto, creo que quedaría un Triángulo como el que se pide:
Código:
    |------|
    |  /\  |
    | /  \ |
    |/    \|
    |------|
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 19-07-2006
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!

El problema que tiene tu solución es que no se ha hablado de las longitudes de los lados. En tu caso estás suponiendo que contruyes un triángulo isósceles, con dos lados de 45º y dos lados iguales /los que "suben en diagonal".

El problema pude ser más complejo, porque imagina que mantienes el primer ángulo a 45ª, y el lado inferior a la longitud dada.

Ahora dibuja el segundo lado a una longitud diferente, y une los dos extremos que te quedan libres. Ahí tienes un triángulo con un ángulo de 45ª que no está inscrito en un cuadrado...

Un saludo

Edu
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trabajar con angulos (grados, minutos, segundos) onlytk Varios 6 15-11-2005 23:49:33
Como rotar x grados un bitmap ( o grafico en general ) manoley23 Gráficos 2 28-07-2003 17:23:38


La franja horaria es GMT +2. Ahora son las 12:26:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi