Skip to content
View in the app

A better way to browse. Learn more.

Espacio Profundo

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
HERRAMIENTAS DE LA COMUNIDAD Gratuito

Simulá tu equipo y planificá la noche en Tuniverso

Calculá el campo visual (FOV) de tu telescopio y cámara o armá tu lista de objetos para observar hoy.

Programa en C

Featured Replies

Publicado

Hola:

Tengo en mente hacer un programa en C que me calcule las posiciones en coordenadas cartesianas y polares de la órbita de Venus respecto al Sol. La idea sería que el programa fuera sacando las sucesivas posiciones, velocidades y aceleraciones en cartesianas por integración numérica -método de Euler-, con un bucle for, y que el usuario seleccionara el infinitesimal de tiempo para hacer la integración.

No quiero introducir nada de perturbaciones gravitacionales ni ecuaciones diferenciales.

De momento había pensado dividir la órbita en cuatro cuadrantes y ver qué pasa con la aceleración centrípeta, la velocidad y la aceleración en cada uno de ellos, pero no me funciona.De momento éste es el código para el tercer cuadrante:

posiciony = 0, posicionx = -1.082082e11, velocidadx = 0, velocidady =  3.501e4, aceleracionx = 1.133e-2;


/* Las sucesivas posiciones y valores de la velocidad y la aceleración se calculan por la intergración de Euler. El Sol es el centro de coordenadas */
for( i = 0; i <= repeticiones; i++ )
{

	if( posicionx <= 0 && posiciony >= b ) // Condiciones para el 3º cuadrante.
	{
		velocidadx = aceleracionx * diferencial;
		velocidady = aceleraciony * diferencial;
		posicionx += velocidadx * diferencial;
		posiciony -= velocidady * diferencial;
		unitariox = posicionx / ( sqrt( ( pow( posicionx, 2 ) ) + ( pow( posiciony, 2 ) ) ) );
		unitarioy = posiciony / ( sqrt( ( pow( posicionx, 2 ) ) + ( pow( posiciony, 2 ) ) ) );
		aceleracionx = ( G * masasolar / ( sqrt( ( pow( posicionx, 2 ) ) + pow( posiciony, 2 ) ) ) ) * unitariox;
		aceleraciony = ( G * masasolar / ( sqrt( ( pow( posicionx, 2 ) ) + pow( posiciony, 2 ) ) ) ) * unitarioy;
	}
}

Agradezco toda la ayuda que puedan darme.

Saludos.

Publicado
  • Autor

Ya no necesito ayuda, jeje, se me acaba de ocurrir la solucion y funciona a las mil maravillas :mrgreen::D:D .

Saludos!

Publicado

Tuxero, el código que proponés ni siquiera debería complilar, tiene errores de sintaxis y falta la declaración de las variables.

En C todas las variables deben declararse antes de ser utilizadas.

Te recomiendo que utilices algún lenguaje de programación de alto nivel (por ej. Visual Basic) ya que son más fáciles y ágiles de aprender.

Con el tema de los cálculos no sabría ayudarte, sin embargo en el foro hay gente que sabe mucho de matemáticas y podrían darte una mano.

Saludos

Crear una cuenta o conéctate para comentar

Account

Navigation

Buscar

Buscar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.