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都不难,重点放在思路上以及实现的细节部分。希望后面难度加大以后也能够坚持下去。

版权声明:

使用python获取实时卫星云图

【转载】http://blog.leniy.org/python-satellite-images.html#coding:utf-8 #加载模块 import urllib2 import date...
  • maizhenying09
  • maizhenying09
  • 2015年07月26日 23:55
  • 502

Python爬虫实战:极客学院

今天我们来爬取一下极客学院的课程,这次我们用requests和xpath,小伙伴们看好了,这真是一对神奇组合,棒棒哒! 爬取前我们先看一下我们的目标: 1.抓取极客学院的课程 2.抓取每一...
  • flyingfishmark
  • flyingfishmark
  • 2016年04月28日 15:19
  • 1939

Python+OpenCV学习(20)---对极几何

利用python学习OpenCV,个人感觉比较方便。函数的形式与C++基本相同,所以切换过来还是比较好的,对于像我这种对python不太熟练的人,使用python的集成开发环境PyCharm进行学习,...
  • FireMicrocosm
  • FireMicrocosm
  • 2015年09月21日 10:32
  • 2560

卫星图像数据下载地址

在资源生态环境方面的应用或研究,数据源可选择Landsat、资源卫星-2A(B)、环境小卫星数据、Modis数据、NOAA的AVHHR、SRTM的地形数据,这些数据基本可以免费获取。 中国资源卫星数据...
  • liuguiyangnwpu
  • liuguiyangnwpu
  • 2015年07月01日 22:28
  • 12889

极路由HC5661a刷潘多拉固件后配置python环境运行脚本登陆dr.com校园网

极路由hc5661a刷openwrt并配置python,本文是网上搜索的方法经过本人亲测可用于hc5651的方法,非原创 提前先说,如果之前没有刷路由器刷openwrt经验的,看教程自己进行配置仍然会...
  • qq_38757012
  • qq_38757012
  • 2017年07月01日 22:51
  • 1001

团、极大团和最大团

对于给定图G=(V,E)。其中,V={1,…,n}是图G的顶点集,E是图G的边集。图G的团就是一个两两之间有边的顶点集合。简单地说,团是G的一个完全子图。如果一个团不被其他任一团所包含,即它不是其他任...
  • fenghuangdesire
  • fenghuangdesire
  • 2014年11月03日 09:26
  • 3311

1.2 你应该了解的轨至轨输入

原文链接:http://e2e.ti.com/blogs_/archives/b/thesignal/archive/2013/04/16/rail-to-rail-inputs-what-you-s...
  • qq_29506411
  • qq_29506411
  • 2017年06月29日 18:57
  • 110

计算机视觉基础4——对极几何(Epipolar Geometry)

先思考一个问题:用两个相机在不同的位置拍摄同一物体,如果两张照片中的景物有重叠的部分,我们有理由相信,这两张照片之间存在一定的对应关系,本节的任务就是如何描述它们之间的对应关系,描述工具是对极几何 ,...
  • lemianli
  • lemianli
  • 2016年07月15日 15:44
  • 1745

安卓自定义组件之------->卫星菜单

直接步入正题:卫星菜单 ArcMenu 相信大家接触安卓,从新手到入门的过渡,就应该会了解到卫星菜单、抽屉、Xutils、Coolmenu、一些大神封装好的一些组件。这些组件在 Gi...
  • l540675759
  • l540675759
  • 2016年03月26日 16:37
  • 1011

未来,Python和C Sharp才是最好的编程语言

本人是一名不太喜欢写代码的运维工程师,平时经常去一些开发者社区溜达,总会看到一些关于最好的编程语言的讨论,有一个很奇特的现象。如果某人说PHP是最好的语言,那么后面就会有说Java才是最好的语言,C才...
  • solaraceboy
  • solaraceboy
  • 2017年12月09日 10:08
  • 325
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python编程之 环绕卫星轨道
举报原因:
原因补充:

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