vpython 是python默认的3D模块,和python有一样的风格。与PyOpenGL相比,容易上手。

vpython下载:vpython的官网(www.vpython.org)。顺便说一句,官网强大的模块,一般都强大。

安装好了之后,可以在C:\Python27\Lib\site-packages\visual(视python的安装目录而定)中的doc,examples里查看一些文档和例子。

第一个vpython程序

from visual import *
sphere()

这里要注意,导与vpython模块,不是import vpython,而是import visual。

sphere函数创建一个球,然后就没然后了,连窗体都不用构建,vpython自动帮你生成,当然自己也可设置。

sphere函数的参数有pos(球心的坐标位置)、color(颜色)、radius(半径)、material(材质)等。

类似的我们可以创建其他的一些几何体,如下表

arrow 箭头
box 长方体 
cone 圆锥
convex 凸面体(由点决定)
curve 曲线
cylinder 圆柱
ellipsoid 椭球体
faces 多面体(由面决定)
helix 螺旋线
label 标签
points
pyramid 正四棱锥
ring
text 文字(3d效果)

更多可以在http://www.vpython.org/contents/docs_vp5/visual/index.html中查阅,这里啥都有。

当然对与类似于圆锥来说,还有一个参数axis决定圆锥的指向,当然这个参数也可以决定圆锥的高。

此外,对于参数materials,它的值可以是

materials.wood
materials.rough
materials.marble
materials.plastic
materials.earth
materials.diffuse
materials.emissive (looks like it glows)
materials.unshaded (unaffected by lighting)

在 VPython 5.50中还有

materials.shiny
materials.chrome
materials.blazed
materials.silver
materials.BlueMarbe (earth with clouds)
materials.bricks

————————————————————————————————————————————

gameobjects 的下载地址:https://code.google.com/p/gameobjects/downloads/list

————————————————————————————————————————————

vpython中运动

vpython中的坐标系:

from visual import *
a=sphere()
a.pos.x+=10

直接改变几何体的pos参数,就可实现几何体的平移。若想实现动画

from visual import *
a=sphere()
while True:
rate(100)
a.pos.x+=0.1

这里的rate(100)是设置动画每秒的帧数为100,即延时0.01秒。

除了平移,我们还能用rotate函数实现旋转

from visual import *
a=box(length=5,width=3,height=1)
while True:
rate(100)
a.rotate(axis=(1,0,0),angle=math.pi/400,origin=(0,0,0))

rotate函数中的参数axis确定旋转的方向,其值为旋转面的法向量,angle是转动的角度,而origin则是旋转的圆心。需要说明的是,旋转是几何体的中心对圆心旋转。如果设置origin=a.pos,则是几何体a绕自己的中心旋转;如果设置origin的值为几何体的边缘,则是几何体a绕该边缘旋转。

能够实现平移和旋转,我们可以利用以前物理中学过的运动的合成与分解,实现几何体的很多运动了。

先写到这吧。

print "Good luck!"

Good luck!

最新文章

  1. 解决Jenkins 2.0 初始化界面卡住的问题
  2. RabbitMQ消息机制广播分发
  3. ww
  4. php 基础复习(2)GD库
  5. Python的高级Git库 Gittle
  6. SQL server数据库内置账户SA登录设置
  7. idea快捷方式
  8. GET请求和POST请求
  9. IDEA 13》》》14破解
  10. 使用ecshop电子商务系统的100个小问题
  11. qt tablewidget中单个和批量删除代码如下(部分)截图如下
  12. C++习题 虚函数-计算图形面积
  13. Linux防火墙配置—允许转发
  14. ReentrantLock可重入锁的使用场景
  15. vue---mint-ui组件loadmore(上拉加载,下拉刷新)
  16. ElasticSearch是如何实现分布式的?
  17. eclipse 如何引入本地dtd
  18. Software Engineer’s path to the best annual performance review
  19. C#控制台程序输出彩色文字
  20. 使用Bootstrap后,关于IE与Chrome显示字体的问题

热门文章

  1. Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误
  2. HL7 2.6解析转XML(C#版)
  3. Mac下Call to undefined function imagettftext() 解决方案
  4. openssl大纲
  5. Topcoder几例C++字符串应用
  6. linux学习 联网
  7. 用Docker Compose启动Nginx和Web等多个镜像
  8. scrapy爬虫框架入门实例(一)
  9. express 不是内部命令
  10. Texture Filter中的Bilinear、Trilinear以及Anistropic Filtering