编程星座判断(星座信息,python3D编程进阶:几何体)

星座信息,python3D编程进阶:几多体

假如星空上能加一些提示,我们会更容易识别出星座们。这就触及到构建几乎是最简便的几多形体——线段(唯一比它更简便的几多体是点),固然它的利用实践上可不那么简便。想在三维天下中创设一个几多体,必需了解它的构建端正。

几多体表现

在熊猫引擎中,直接布局三维几多体,必需起首了解三维几多体的表现办法。

起首,几多体触及很多的极点,好比我们想加上星座连线,每条线都必需有两个极点。比线更简便的几多体是点,作为一个几多体的点固然只须一个极点。比线更繁复的几多体是三角形,必需设置3个极点。

实践上,在三维中,统统形体,终极都是由三角形构成的。也就算说,仅有面,没有体。并且面也都被支解为一个个的三角形。

固然,我们暂且用不到三角形,我们用到的仅有线。

几多体构建

在代码中构建几多体,有如此三个步调:

  1. 界说一切的点
  2. 依据选择的几多体典范,设置每个几多体的极点编号。
  3. 天生几多体三维节点,并体现

我们看一下代码,为了加深对逻辑的了解:

1、界说一切的点

format = GeomVertexFormat.getV3() vdata = GeomVertexData('lines', format, Geom.UHStatic) vertex = GeomVertexWriter(vdata, 'vertex') for starinfo in stars: vertex.addData3(starinfo['x'], starinfo['y'], starinfo['z'])

第一行,界说每个点的格式。我们如今只界说点的三维坐标,以是格式是V3。极点的默许颜色就是白色的,假如我们想给极点加上颜色,还可以增长颜色信息。但如今白色切合我们的需求。

第二行,创建一个点组。

第三行,创建一个点信息添加器

第四、五行,把一切星星的地点都到场点组中

固然很多星星并不到场连线,但是多加一些点不使用,也没有什么太大的影响。

2、依据几多体典范,设置每个几多体的极点编号

starLines = Geom(vdata) for lin in lines: line = GeomLines(Geom.UHStatic) line.addVertices(lin['star1'], lin['star2']) starLines.addPrimitive(line)

第一行,依据点组创建几多体组(Geom)

第三行,创建直线几多体(GeomLines)

第四行,给每个直线几多体增长极点的编号。这里,每条连线有纪录了star1和star2两个信息,分散对应星星的编号。

第五行,将这个直线几多体到场到几多体组之中。

3、天生几多体三维节点,并体现

snode = GeomNode('square') snode.addGeom(starLines) self.skylines= self.skystars.attachNewNode(snode)

这里,把一切的连线独立出来,和星星分开放于不同的三维节点上。可以让我们独立控制体现或不体现连线。

星座称呼

星座称呼的体现,与东南方东南的体现没有不同。只是由于这次的笔墨太多,我们就不克不及一个一个写代码来完成了,我们必需创建一个函数(showText)。

for con in cons: showText(con['x'],con['y'],con['z'],con['cname'], self.starnames)

在列表cons中纪录了每个星座的称呼和它应该体现的地点——但是就是本星座一切星星地点的中点。

体现切换

单独控制一个三维节点的可见性,我们用hide()和show()函数。别的,我们再给这个节点上增长一个标志,它可以用于存储任何信息——我们用来存储如今的可见性。于是控制代码相似如此(按s键切换线的体现):

elif key=='s': if self.skylines.getTag('visible')=='F': self.skylines.show() self.skylines.setTag('visible', 'T') else: self.skylines.hide() self.skylines.setTag('visible', 'F')

如今,就可以带着充足的帮助信息在高仿的三维星空中看星星了。

内容底部广告位(手机)
标签:

管理员
星座百科管理员

专业提供星座及生肖的知识分享,做高价值星座的百科网站!

上一篇:星座涂颜色(十二星座是什么颜色的(含每一天的诞生色与含义))
下一篇:返回列表

相关推荐