python编程之 环绕卫星轨道

原创 2015年07月08日 22:51:22

教材的第六章主要讲了下如何加载图片以及缩放,旋转等基本操作。用一个环绕卫星demo作为例子。

因为没有找到素材,在实现的过程中飞船的环绕的中心点并不是画面中央,我觉得可能是素材的因素,如果有错误欢迎指出。

没有按照书上的方法写飞船旋转的代码,而是基础的数学知识,根据当前位于圆心可以计算的角度。草图如下,对很简单。。


实际进行编写的时候会根据你写的三角函数,位置会做一些调整,思路就是这样。


源代码:

# -*- coding: utf-8 -*-
"""
Created on Wed Jul  8 21:24:03 2015

@author: liuchang
"""

import random,math,pygame
from pygame.locals import *

#定义 坐标类

def wrap_angle(angle):
    return angle%360


def print_text(font,x,y,text,color=(255,255,255)):
    imgText=font.render(text,True,color)
    screen.blit(imgText,(x,y))
    

class Point(object):
    def __init__(self,x,y):
        self.__x = x
        self.__y = y
    def getx(self):
        return self.__x
    def setx(self,x):
        self.__x = x

    x = property(getx,setx)     
    def gety(self):
        return self.__y
    def sety(self,y):
        self.__y = y
    y = property(gety,sety)
    
    def __str__(self):
        return "{X:"+"{:.0f}".format(self.x)+ \
        ",Y:"+"{:.0f}".format(self.y)+"}"


pygame.init()
screen = pygame.display.set_mode((1000,700))
pygame.display.set_caption("orbit demo")
font = pygame.font.Font(None,60)
space = pygame.image.load("backnew.jpg").convert()
planet = pygame.image.load("glazed.png").convert_alpha()
ship = pygame.image.load("ship.png").convert_alpha()
s_width,s_height = ship.get_size()
width,height = planet.get_size()
ship = pygame.transform.smoothscale(ship,(s_width//10,s_height//10))

pos = Point(0,0)
old_pos = Point(0,0)
angle = 0.0
#angle = wrap_angle(angle -0.1)
radius = 250

while True:

   
    for event in pygame.event.get():
        if event.type== QUIT:
            sys.exit()
        keys = pygame.key.get_pressed()
        if keys[K_ESCAPE]:
            sys.exit()
    #background        
    screen.blit(space,(0,0))
    #palnet
    screen.blit(planet,(500-width/2,350-height/2))
    #ship
    angle = wrap_angle(angle +0.1)#转动
    pos.x = math.cos(math.radians(angle))*radius
    pos.y = math.sin(math.radians(angle))*radius
    
    r_angle = -angle+180
    r_ship = pygame.transform.rotate(ship,r_angle)
    screen.blit(r_ship,(720+pos.x-width/2,550+pos.y-height/2))
    
    #screen.blit(ship,(50,50))
    print_text(font,0,20,"rotation:"+"{:.2f}".format(angle))
    print_text(font,400,20,"rotation angle:"+"{:.2f}".format(r_angle))
    pygame.display.update()



截图:

前期做的这些小demo都不难,重点放在思路上以及实现的细节部分。希望后面难度加大以后也能够坚持下去。

版权声明:

相关文章推荐

STK对卫星轨道摄动的处理

STK对轨道的摄动考虑得比较全面,在STK的HPOP(高精度轨道预报)中,使用一整套高保真力学模型: △JGM2 一 提供目前已知的最高精度的力学模型; △月球/太阳点质量重力影响一使用美国海军天...

MATLAB & STK构建卫星轨道姿态控制仿真演示系统

MATLAB & STK构建卫星轨道姿态控制仿真演示系统 杜耀珂 郑科宇 摘要:通过在MATLAB中建立卫星的轨道运动和姿态动力学仿真模型就可以分析在不同的控制作用下,卫星的轨道和姿态的变化情...

OPNET如何导入STK的卫星轨道文件

环境:OPNET 14.5、STK 9、虚拟机Windows XP 32bit 未来的半年需要做低轨移动星座系统路由与交换技术研究,目前我的任务是让最终的仿真系统支持给定网络场景的演示,也就是说...

基于SGP4模型的卫星轨道计算

中国有望成为世界第一个发射量子轨道卫星的国家

原文地址:中国有望成为世界第一个发射量子轨道卫星的国家 中国有望成为世界第一个发射量子轨道卫星的国家 qiuyin966@yeah.net     什么是量子轨道卫星?量子轨道卫...

zz 卫星轨道

摘要: 从我做找到的资料来看,目前世界上常用的遥感卫星主要有,Spot系列卫星,LandSat系列卫星 ,IKONOS系列卫星,CBERS-1卫星,ERS系列 卫星,JERS卫星,IRS卫星, Orb...
  • zkyd41
  • zkyd41
  • 2011-11-22 19:23
  • 1719

卫星或变身收集太阳能轨道发电站(图)

利用卫星在太空中收集太阳能传送到地球上的模拟图 巨大的太阳能板  据新华网报道: 面对日益严峻的能源形势,我们的地球如何发掘新的能源,这是人类目前面临的一个重大课题。一个国际科研小组近日提出了...
  • ifeon
  • ifeon
  • 2011-11-18 13:27
  • 715

卫星轨道计算

一. GPS观测量 接收机在观测相位和伪距数据的同时,还将广播星历和预报星历记录下来。接收GPS信号还能获取纳秒级精度的时间基准信号。     由于接收机的型号很多,厂商设计的数据格式各不相同,国...

卫星轨道计算

  • 2012-03-11 11:17
  • 394KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)