python⼏何计算_计算⼏何python
简介编辑Python科学计算Python科学计算VPython是⼀套简单易⽤的三维图形库,使⽤它可以快速创建三维场景和动画。和TVTK相⽐,它更适合于创建交互式的三维场景,⽽TVTK则更适合于对数据进⾏三维可视化。本章将通过⼏个实例介绍如何使⽤VPython制作实时、交互式的三维动画演⽰程序。 [1] 制作动画演⽰编辑⽤VPython制作动画的简单之处在于:只要在⼀个循环体中不断地修改场景中的各个模型以及照相机的各种属性,即可实现动画效果。与场景交互编辑为了和场景中的物体进⾏交互,VPython提供了如下⽅便实⽤的功能:键盘和⿏标事件的处理。控件窗⼝和4种控件(按钮、滚动条、开关及菜单),⽤于制作简单的⽤户界⾯。绘图窗⼝,⽤于绘制⼆维坐标图。由于篇幅受限,本书只介绍键盘和⿏标事件的处理,请读者参考VPython的⽂档和演⽰程序来⾃学其他部分的内容。响应键盘事件通过场景窗⼝对象的kb属性可以获得按键信息。kb.keys是窗⼝中等待处理的键盘事件的个数,调⽤kb.getkey()可以从键盘事件队列中获取⼀个待处理的事件。如果队列为空,getkey()将⼀直等待,直到产⽣键盘事件为⽌。getkey()的返回值是⼀个描述按键的字符串。下⾯是⼀个简单的键盘事件测试程序,可以⽤它查看各个按键的名称。响应⿏标事件⿏标射线和⿏标各个坐标属性之间的关系⿏标射线和⿏标各个坐标属性之间的关系⿏标事件和键盘事件类似,通过场景窗⼝对象的mouse属性进⾏⿏标事件的处理。⿏标的坐标是⼆维视图平⾯上的⼀个点,在三维空间中有⼀条直线上的点都将投影到这个位置,我们称此直线为⿏标射线。use是⼀个mouse_object对象,下⾯列出它的属性和⽅法。为了便于理解,右图显⽰了⿏标射线和pos、pickpos等
属性之间的关系。pos:⿏标在三维空间中的坐标,此坐标是⿏标射线与经过点且平⾏于屏幕的平⾯的交点。button:描述⿏标按键的字符串,值可以为None、'left'、'right'、'wheel'。此属性只有在产⽣事件时才不为None。pick:⽤⿏标选中的物体对象,与⿏标射线相交的第⼀个物体。pickpos:⿏标射线与pick物体的表⾯的交点坐标。camera:当前照相机的位置坐标,旋转或缩放场景时会发⽣变化。ray:从camera到pos的单位⽅向⽮量,也就是⿏标射线的⽅向,它正好和窗⼝视图垂直。⿏标射线在三维空间中的参数⽅程为camera+t*ray,其中t是⼀个⼤于0的任意参数。alt、ctrl、shift:Alt、Ctrl、Shift三个按键的状态。project():计算⿏标射线与任意平⾯的交点,平⾯由表⽰法线⽅向的normal参数和表⽰平⾯上某点坐标的point参数指定。因为与屏幕平⾏的⾯的法线⽅向为scene. forward,所以下⾯语句的计算结果与use.pos相同:
python获取数组长度是很⽅便。本节介绍如何使⽤TraitsUI制作⼀个能控制VPython场景的界⾯。VPython 和TraitsUI各有⾃⼰的独⽴窗⼝,TraitsUI界⾯有⾃⼰的消息循环,⽽Visual窗⼝有⾃⼰的动画控制和消息处理循环。因此我们需要使⽤多线程或多进程⽅式,让这两个循环互不影响。下⾯是使⽤多线程实现TraitsUI控制场景的完整程序。创建复杂模型编辑VPython只提供了⼀些简单的⽴体⼏何形状,如果要创建复杂的物体,就需要⽤户⾃⼰编写程序,计算物体的多边形⽹格模型数据,并使⽤faces()将数据转换为模型进⾏显⽰。任何⼀个三维模型都可以⽤许多三⾓形的⾯来表⽰,对于每个三⾓形的每个顶点,我们需要计算如下数据:顶点的坐标:三个浮点数表⽰的三维坐标。顶点的法线⽅向:三个浮点数表⽰的三维⽅向⽮量。顶点的颜⾊:三个浮点数表⽰的红、绿、蓝颜⾊分量。将保存上述数据的三个数组传递给faces()即可创建三维模型。对于⼀个有N个三⾓形的模型,每个数组的长度都是33N,也可以传递⼀个形状为(3*N,3)的⼆维数组。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论