Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   triangulo de 45 grados (https://www.clubdelphi.com/foros/showthread.php?t=33850)

pattyka 19-07-2006 00:07:55

triangulo de 45 grados
 
Alguien me podria explicar???... Por favor... Necesito dibujar un triangulo con los eventos del mouse (mouse up y down)... porfavor... si alguin sabe ;)

epuigdef 19-07-2006 08:40:07

Buenas!

Lo podrías explicar un poco más? Es que estaba a punto de pegarte un rollo sobre trigonometría, pero no sé si te va a servir. Qué es exactamente lo que necesitas?

Edu

pattyka 19-07-2006 08:42:31

Sorry :S:S ... necesito dibujar en un paintbox un triangulo de 45 grados usando los eventos del mouse (soy primeriza en esto :S:S)... ;)

epuigdef 19-07-2006 09:09:50

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

Lepe 19-07-2006 12:51:24

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

epuigdef 19-07-2006 13:00:44

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

yeison Cristman 19-07-2006 21:09:57

DELPHI SQL y el DBImage1 ayudenme..!!!!
 
Tengo mi aplicacion para un colegio y quiero cargar la foto de cada estudiante tengo en mi tabla de sql llamada estudiante un campo llamado foto pero no se como hacer que se grabe la foto del estudiante. en mi formulario de delphi atraves del Query llame el campo foto y lo coloque en el formulario y le introduje el siguiente codigo. en el evento Onclik.

Código Delphi [-]
 
procedure TF_Estudiantes.DBImageClick(Sender: TObject);
begin
if OpenDialog_Estudiante.Execute then
  begin
    dbImage_Estudiante.Picture.LoadFromFile(OpenDialog_Estudiante.Filename);
    Caption := OpenDialog_Estudiante.Filename;
  end;

yo cargo la foto pero no se graba en la tabla de sql el campo foto es tipo image. donde esta el problema tengo poco tiempo por favor ayudeme alguien de foro.........!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111

Ñuño Martínez 20-07-2006 13:59:20

Yeison Cristman, creo que te has equivocado de hilo.

Lepe 20-07-2006 16:58:51

yeison Cristman ya que te has tomado la molestia de crear 4 o cinco hilos con este mismo mensaje, ahora te invitamos a que los borres todos excepto donde Neftali y delphi.com.ar te han contestado.

Pulsa en Editar Mensaje y despues el botón de borrado del tema.

Como comprenderás este mensaje tuyo no tiene nada que ver con el tema inicial del hilo, y tampoco aporta la solución, sólo "incordia".

Saludos.


La franja horaria es GMT +2. Ahora son las 11:51:12.

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