Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2007
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
Circunferencia y orbita

Hola.

Estoy haciendo un pequeño juego. Y me gustaría representar un planeta en torno a su sol. (en movimiento)

El problema es que hace tiempo hice una unidad de trigonometría, pero no recuerdo como se hacia para representar esa órbita.
(también se puede usar para representar un reloj analógico).

Imagino que en función del radio y la velocidad, se hacia la representación. Pero no recuerdo.

¿ alguien puede orientarme al respecto ?
__________________
Saludos Cordiales.
------------------

Responder Con Cita
  #2  
Antiguo 06-09-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Para encontrar el punto donde debes colocar el planeta usas:
Código Delphi [-]
Point.x := Centro.X + Round (Radio * Cos (Angulo));
Point.y := Centro.Y + Round (Radio * Sin (Angulo));
Luego para darle movimiento y velocidad creas un Timer que vaya aumentando el Angulo.
Saludos.
Responder Con Cita
  #3  
Antiguo 06-09-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por paldave Ver Mensaje
Para encontrar el punto donde debes colocar el planeta usas:
Código Delphi [-]Point.x := Centro.X + Round (Radio * Cos (Angulo));
Point.y := Centro.Y + Round (Radio * Sin (Angulo));

Luego para darle movimiento y velocidad creas un Timer que vaya aumentando el Angulo.
Saludos.
Bueno, no es por hechar leña al fuego, pero para el caso de que la órbita sea una circunsferencia esta bien. El problema está en el hecho de que las órbitas son elípticas.

Creo que se podría obviar el hecho "real" y trabajar con una órbita circular.

Todo dependerá de lo que considera paldave.

Cita:
Empezado por Cecilio Ver Mensaje
Hola.

Estoy haciendo un pequeño juego. Y me gustaría representar un planeta en torno a su sol. (en movimiento)

El problema es que hace tiempo hice una unidad de trigonometría, pero no recuerdo como se hacia para representar esa órbita.
(también se puede usar para representar un reloj analógico).

Imagino que en función del radio y la velocidad, se hacia la representación. Pero no recuerdo.

¿ alguien puede orientarme al respecto ?
Cecilio, no se como decirte sin que lo tomes a mal, pero... si quieres usar la libreria que hiciste, poco y nada podemos ayudarte en ello si desconocemos como funciona y/o está escrita dicha unidad.

Si puedes ser más explícito y darnos mejores detalles te podemos ser de ayuda.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 06-09-2007 a las 21:07:10. Razón: Correción del nombre a quien citar
Responder Con Cita
  #4  
Antiguo 06-09-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Y bueno, llendo a la realidad, tenemos que considerar:

1. Leyes de Kepler
2. Ley de Gravitación Universal, que se desprende de las leyes de kepler.

Si se desea un modelo lo más exacto a la realidad... Habrá que repasar lo visto en Física en la secundaria.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 06-09-2007 a las 20:47:35. Razón: Corrección del enlace
Responder Con Cita
  #5  
Antiguo 06-09-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Tal vez te interese este artículo, que aunque está en inglés y los ejemplos son en C los conceptos matemáticos sirven igual.

Por cierto, ¿estás utilizando Allegro.pas? Lo digo porque dentro de poco (un par de semanas o así) se va a publicar la cuarta beta con mogollón de correcciones y se necesitarán probadores.

[edit]

Por cierto, que para hacer una órbita elíptica basta con utilizar dos radios:
Código Delphi [-]
Point.x := Centro.X + Round (Radio.X * Cos (Angulo));
Point.y := Centro.Y + Round (Radio.Y * Sin (Angulo));
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 06-09-2007 a las 21:00:55. Razón: Cómo hacer una órbita elíptica.
Responder Con Cita
  #6  
Antiguo 06-09-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Delphius: no sé que quisiste decirme con:
Cita:
Paldave, no se como decirte sin que lo tomes a mal, pero... si quieres usar la libreria que hiciste, poco y nada podemos ayudarte en ello si desconocemos como funciona y/o está escrita dicha unidad.

yo no soy el que está planteando la duda, solo me limité a decirle al compañero Cecilio como encontrar un punto de la órbita circular conociendo el centro y el radio de dicha órbita. Me parece innecesario aclarar más como funciona esto, ya que el parámetro Angulo se autodefine, Centro y Point son del tipo TPoint, Radio es del tipo Integer.

Última edición por paldave fecha: 06-09-2007 a las 21:03:25.
Responder Con Cita
  #7  
Antiguo 06-09-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por paldave Ver Mensaje
Delphius: no sé que quisiste decirme con:

yo no soy el que está planteando la duda, solo me limité a decirle al compañero Cecilio como encontrar un punto de la órbita circular conociendo el centro y el radio de dicha órbita. Me parece innecesario aclarar más como funciona esto, ya que el parámetro Angulo se autodefine, Centro y Point son del tipo TPoint, Radio es del tipo Integer.
Perdón. Mil disculpas. Quise poner Cecilio pero se me pasó el Copy/Paste.
Mil... mil disculpas. Ya lo edito.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 06-09-2007
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
Ante todo Gracias por las respuestas.

Delphius Por ahora voy a crear las órbitas circulares, porque aún no le tengo cogido el truquillo. Al no usar Ascención y declinación, los planetas colisionarían en órbitas elípticas pequeñas, mientras que al ser circulares no hay ese problema. De todos modos, el eje de este pequeño juego no es hacer una representación muy fiel de los sistemas planetarios. Curiosamente, esta semana descargué para recordar las 3 leyes de Kepler.

ñuño hestoy viendo la librería que me has recomendado, no tenia ni idea de que existiera. Voy ponerme en contacto para probarla. Y gracias por la forma de representar las orbitas elípticas. Las usaré en la siguiente fase.

paldave Muchas gracias, voy a usar tu código para esta primera versión.

Tampoco estoy muy puesto en delphi, así que preguntaré.
__________________
Saludos Cordiales.
------------------

Responder Con Cita
  #9  
Antiguo 06-09-2007
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
Porcierto como se usa Point ?

Yo estoy usanto Tshape, porque no tengo practica aún con los dibujos de gráficos.
__________________
Saludos Cordiales.
------------------


Última edición por Cecilio fecha: 06-09-2007 a las 21:58:21.
Responder Con Cita
  #10  
Antiguo 06-09-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Nos olvidamos avisarte que Angulo está expresado en Radianes.
Para convertirlo desde grados utiliza
Código Delphi [-]
Angulo:=DegToRad(Grados)
DegToRad se encuentra en Math.pas, así que no olvides incluirla en uses

Última edición por paldave fecha: 06-09-2007 a las 22:00:31.
Responder Con Cita
  #11  
Antiguo 06-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Cecilio Ver Mensaje
Yo estoy usanto Tshape, pero da unos saltos grandiiiisimos.
El ángulo lo debes expresar en radianes y no en grados.

Y por si no te acuerdas : 180º = pi radianes
Responder Con Cita
  #12  
Antiguo 06-09-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Point es una variable del tipo TPoint que se utiliza así:
Código Delphi [-]
procedure Form1.Button1Click;
var Point:TPoint;
begin
  Point.x:=...
  Point.y:=...
  Form1.Canvas.Pixels[Point.x,Point.y]:=clBlue;
end;
o
Código Delphi [-]
procedure Form1.Button1Click;
var x,y:Integer;
begin
  x:=...
  y:=...
  Form1.Canvas.Pixels[x,y]:=clBlue;
end;
El objeto Shape no es el más adecuado porque no tiene un canvas. Utiliza otro. En el ejemplo dibujé directamente sobre el Form.
Responder Con Cita
  #13  
Antiguo 06-09-2007
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
Ahora va Genial.

Viendo los saltos que daba, miré el artículo que me recomendó ñuño y vi el ejemplo en c, así que pude resolverlo, pero sin caer en que eran radianes.

Ahora he incorporado los grados, con la función que me recomendais.

Va perfecto. (aunque los puntos no se dibujan, aunque no me preocupa mucho, ya que usaré Shape o un bitmap.)

sois mis ídolos. Gracias por la ayuda.
__________________
Saludos Cordiales.
------------------

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


La franja horaria es GMT +2. Ahora son las 03:01:45.


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