Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2020, 14:52   #1
VeryStupidPerson
Пользователь
 
Аватар для VeryStupidPerson
 
Регистрация: 20.07.2020
Сообщений: 69
По умолчанию создание анимации движения луны и земли вокруг солнца

Я пытался написать анимацию движения луны вокруг земли и земли вокруг солнца, но абсолютно не понимаю, как заставить луну выписывать окружность относительно изменяющихся координат земли.
Пытался я сделать так:
Код:
import pygame, sys, time
from pygame.locals import *
import math
pygame.init()
FPS=100
fpsClock=pygame.time.Clock()
width=1500
height=700
x, y = 150, 320
xl, yl = 50, 320
mainSurface=pygame.display.set_mode((width,height),0,32)
pygame.display.set_caption('Keyb moves')
background=pygame.image.load('bg1.jpg')
zemla=pygame.image.load('pict2.gif')
solnze=pygame.image.load('pict1.gif')
luna=pygame.image.load('pict3.gif')
# game loop
a = 8
b = 4
deg = 0
while True:
    fpsClock.tick(FPS) # frame rate
    mainSurface.blit(background,(0,0))
    
    # get all events from the queue
    for event in pygame.event.get():
        # loop events queue
        if event.type == QUIT:
            # window close X pressed
            pygame.quit()
            sys.exit()
    mainSurface.blit(solnze, (650, 280))
    mainSurface.blit(zemla, (x, y))
    mainSurface.blit(luna, (xl, yl))
    rad = math.radians(deg)
    x = a * math.sin(rad)  + x
    y = -b * math.cos(rad) + y
    xl =  2*math.sin(rad) + x + xl # в принципе, вопрос только про эту
    yl = 2* math.cos(rad) + y + xl # и эту строки. (Ну, может быть, ещё про 2 предыдущие.)
    pygame.display.update()
    if deg < 361:
        deg += 1
    else:
        deg = 0
Но луна сразу улетает в неизвестном направлении.
Посоветуйте, пожалуйста, какими формулами описать движение луны относительно осей х и у. (я подозреваю, что это, собственно, не совсем относится к программированию, но на счёт этих формул в физике я информации не нашёл)
---------------------------------------------------
Нич-чего не понимаю!
Или что-то случилось, или… одно из двух!
VeryStupidPerson вне форума Ответить с цитированием
Старый 20.07.2020, 15:58   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Я старый солдат, и Питоном не владею. Поэтому скажу чисто математически.
Сразу скажу, что точное, честное движение Луны - вещь сложная, теория Брауна содержит неск. тысяч слагаемых в формуле. Но вам наверное не это надо, а упрощенное движение. То есть 2 движения по окружности с периодами 365.25 и 27.5 дней ( https://ru.wikipedia.org/wiki/Сидерический_период )
Все просто - сначала считаем гелиоцентрические координаты Земли - R*cos ... , R*sin ..
Потом - геоцентрические координаты Луны - R*cos ... , R*sin .. Конечно, другие R и другой период.
И наконец - складывая их, получаем гелиоцентрические координаты Луны.
Вот и все.
Только не ожидайте, что у вас получатся какие-то завитульки, если все сделать в правильном масштабе то получится вот что - https://youtu.be/SefK_RSrnfM?t=1200
С момента 20.00

Последний раз редактировалось type_Oleg; 20.07.2020 в 16:03.
type_Oleg вне форума Ответить с цитированием
Старый 20.07.2020, 16:22   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Если надо - вот файл Excel, разбирайтесь. Можете поэкспериментировать , поменять период и радиус лунной орбиты. Тогда могут получиться завитульки.
Вложения
Тип файла: xls MoveMoon.xls (127.0 Кб, 10 просмотров)
type_Oleg вне форума Ответить с цитированием
Старый 20.07.2020, 19:32   #4
VeryStupidPerson
Пользователь
 
Аватар для VeryStupidPerson
 
Регистрация: 20.07.2020
Сообщений: 69
По умолчанию

Спасибо. Всё заработало. Просто я очень затупил с программой. К формуле земли надо было прибавлять координаты солнца, а я прибавлял предыдущие координаты земли.
---------------------------------------------------
Нич-чего не понимаю!
Или что-то случилось, или… одно из двух!
VeryStupidPerson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение Луны вокруг Земли. Delphi vic7or Помощь студентам 7 09.05.2015 21:06
Создание GIF анимации kvitaliy Общие вопросы Delphi 7 06.12.2013 09:35
Не работает программа анимации (движения) картинок afterik Общие вопросы Delphi 9 09.04.2013 14:39
Поворот изображения вокруг своей оси во время движения по кругу вокруг центра AsaDorius Помощь студентам 1 15.12.2010 21:57
Вращение луны вокруг Земли [LOL] Помощь студентам 4 19.06.2007 21:14