Python思维下VTK画色子shizi骰子tuzi,你对了么?
1 说明:
=====
1.1 首先:我错了,我读错了,我写错了,我还认错了。
1.2 色子[shǎi zi]=骰子[tóu zi]:
用象牙、骨头或塑料做的小四方块;每面刻有点数,一到六,常用一对做各种游戏或赌博。
就是这个东东。
1.3 今天不是来赌博的,是用python制作VTK版的色子,锻炼自己的python思维的。
2 准备:
=====
2.1 VTK安装:
《VTK:华为笔记本电脑+深度deepin-linux+python下安装和入门》
2.2 环境:
华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。
2.3 源代码来源:https://blog.csdn.net/lalala_HFUT/article/details/84983475 #感谢原作者,虽然代码很长,很没有python思维和特点
2.4 对原作者的源代码进行修改、删减、注释,目的就是让代码看起来很pythonic,锻炼自己的python思维。
2.5 VTK的color颜色设置,一般采用gl的rgb颜色设定,如:glColor3f(0.0, 0.0, 0.0); --> 黑色 glColor3f(1.0, 0.0, 0.0); --> 红色 glColor3f(0.0, 1.0, 0.0); --> 绿色 glColor3f(0.0, 0.0, 1.0); --> 蓝色 glColor3f(1.0, 1.0, 0.0); --> 黄色 glColor3f(1.0, 0.0, 1.0); --> 品红色 glColor3f(0.0, 1.0, 1.0); --> 青色 glColor3f(1.0, 1.0, 1.0); --> 白色
3 dice:
=====
3.1 dice=色子[shǎi zi]=骰子[tóu zi](顺带学习中英文)。
3.2 代码:(修改后的代码,讲解在注释中)#dice=色子=骰子 #导出模块 import vtk #第一步:---是一个正方体=cube--- cube=vtk.vtkCubeSource() #cube.SetCenter(0.0,0.0,0.0) #居中 #定义三边长10,长宽高 cube.SetXLength(10) cube.SetZLength(10) cube.SetYLength(10) cubeMapper = vtk.vtkPolyDataMapper() cubeMapper.SetInputConnection(cube.GetOutputPort()) cubeActor = vtk.vtkActor() cubeActor.SetMapper(cubeMapper) cubeActor.GetProperty().SetColor(1.0,1.0,1.0) #白色 #第二步:生成3个大的列表--- #原点列表 p_N_list=[] #原点执行单元actor列表 p_A_list=[] #执行单元渲染mapper器列表 p_M_list=[] #初始化,等于一个执行单元actor point4Actor=point5Actor=point6Actor=point7Actor=point8Actor=point9Actor=point10Actor=vtk.vtkActor() #生成列表,存入上述3个空列表中 for i in range(21): p_N_list.append("opint"+str(i+1)) p_A_list.append("point"+str(i+1)+"Actor") p_M_list.append("point"+str(i+1)+"Mapper") #第三步:实例化,生成原点、渲染器、执行单元 for i in range(len(p_N_list)): p_N_list[i]=vtk.vtkCylinderSource() p_M_list[i]=vtk.vtkPolyDataMapper() p_A_list[i] = vtk.vtkActor() #第四步:原点设置和定义 #只能放在这里,对4~10原点的旋转y的角度设定 for j in range(3,10): p_A_list[j].RotateY(90) #原点的空间位置列表 p_set_center=[(0.0,2.0,0.0), (0.0,2.0,2.0),(0.0,2.0,-2.0), (2.2,2.0,2.2),(0.0,2.0,0.0),(-2.2,2.0,-2.2), (2.2,2.0,2.2),(-2.2,2.0,2.2),(2.2,2.0,-2.2),(-2.2,2.0,-2.2), (0.0,2.0,0.0),(2.3,2.0,2.3),(2.3,2.0,-2.3),(-2.3,2.0,2.3),(-2.3,2.0,-2.3), (1.5,-2.0,2.5),(1.5,-2.0,0.0),(1.5,-2.0,-2.5),(-1.5,-2.0,2.5),(-1.5,-2.0,0.0),(-1.5,-2.0,-2.5)] #原点半径列表 p_n_sr=[1.8,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.2,1.2,1.2,1.2,1.2,1,1,1,1,1,1] #x轴旋转角度列表,默认为o p_rotatex=[0,90,90,-90,-90,-90,90,90,90,90,-90,-90,-90,-90,-90,0,0,0,0,0,0] #原点颜色列表,注意一行对应一面的点,点的颜色,点的个数 p_C_list=[(0.0, 1.0, 0.0), (1.0, 1.0, 0.0),(1.0, 1.0, 0.0), (1.0, 0.0, 1.0),(1.0, 0.0, 1.0),(1.0, 0.0, 1.0), (0.0, 1.0, 1.0),(0.0, 1.0, 1.0),(0.0, 1.0, 1.0),(0.0, 1.0, 1.0), (0.5,0.3,0.1),(0.5,0.3,0.1),(0.5,0.3,0.1),(0.5,0.3,0.1),(0.5,0.3,0.1), (0.2,0.2,0.2),(0.2,0.2,0.2),(0.2,0.2,0.2),(0.2,0.2,0.2),(0.2,0.2,0.2),(0.2,0.2,0.2)] #注意以上所有列表都是对应的关系 #渲染器设置:实例化 ren=vtk.vtkRenderer() ren.AddActor(cubeActor) #将正方体加入渲染器中 ren.SetBackground(0.1,0.2,0.4) #窗口背景颜色:蓝色 for i in range(len(p_A_list)): ren.AddActor(p_A_list[i]) #将执行单元加入ren中渲染 p_N_list[i].SetCenter(p_set_center[i]) #原点的位置 p_N_list[i].SetHeight(6.2) #高 p_N_list[i].SetRadius(p_n_sr[i]) #原点半径 p_N_list[i].SetResolution(16) p_M_list[i].SetInputConnection(p_N_list[i].GetOutputPort()) p_A_list[i].SetMapper(p_M_list[i]) p_A_list[i].RotateX(p_rotatex[i]) #原点颜色设置 #p_A_list[i].GetProperty().SetColor(1.0,0.0,1.0) #所有原点单色:棕褐色 p_A_list[i].GetProperty().SetColor(p_C_list[i]) #定期渲染器窗口 renWin=vtk.vtkRenderWindow() renWin.AddRenderer(ren) #窗口大小3000,3000,窗口较大,自然就是居中 renWin.SetSize(3000,3000) # 窗口标题名 renWin.SetWindowName("dice") #renWin.Render() #可要可不要,意义不大 # 创建窗口交互器 iren=vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) iren.Initialize() iren.Start()
3.3 效果图:
3.4 python思维:重复的代码看着就烦,正好是python的最佳地方。
3.5 python知识点:列表的相关知识。
===自己整理并分享出来===
喜欢的就点赞、关注、转发、评论和收藏。
孩子长得像小姨不像亲妈?踩生并非迷信,家长要慎重选择本文由团子妈育儿原创,欢迎个人评论分享新生宝宝的降临,对于一个家庭来说,绝对是一件大喜事。而对于小宝宝来说,家里人自然也是对其寄予满满的厚望,希望孩子以后能有个不错的未来。于是,一
鸡肋的婴儿用品1。学步车这个东西的争议比较大,它更多的用途是解放妈妈的双手,学步的功能是很少的,而且容易发生危险。2。开裆裤这个东西男孩子用没什么大问题,女孩子用容易引起阴部炎症。3。婴儿湿巾湿
2022年文雅大气有内涵的宝宝名,一听就是出自书香世家2022年文雅大气有内涵的宝宝名,一听就是出自书香世家!云木云字,一般是取云彩的意义。云作为名字,可以表达父母希望子女能拥有幸福快乐的人生,不受外物所影响,可以随心所欲的生活。木字
格林童话里的故事,为什么总是发生在森林中?在二百多年前的1812年,雅各布格林与威廉格林出版了儿童与家庭故事集第一卷,1815年出版了第二卷。当时的格林兄弟做梦都不会想到自己的故事集会成为世界上最著名的童话集。如今,格林童
又是一年的5月11日下午拿手机看时间的时候突然发现,今天是5月11日,然后想起了去年的5月11日发生的事情,感觉时间过的好快。2021年的5月11日,是我怀宝宝的4个多月的时候,那天一大早我就拿着做好
7岁男孩频繁眨眼患上重症抽动障碍华声在线讯(通讯员李勰曹晗)7岁的男孩小思(化名)最近半年出现频繁挤眉弄眼不受控制,并伴随频繁清嗓子的动作。为了寻求原因,小思父母带其来到湖南妇女儿童医院儿内科儿童神经癫痫科副主任
一胎男孩,有必要二胎吗?我们家就是两个男孩,如果父母责任心强,那真的很累。如果我们的孩子第一个是男孩,那么你还会不会继续生二胎呢?如果二胎生一个不一样的,那么儿女成全皆大欢喜。如果头胎是女孩的,大不了就是
5月出生的男孩儿好听顺口的名字集锦很多朋友对取名字要求很简单,不要求什么周易八字,五行数理,也不想什么三才五格,唯一的要求就是名字好听顺口,有内涵,那么有一些什么样的好听男宝宝名字呢,在此为您收集精选了5月出生的男
生命的馈赠每个孩子都是小天使,她们曾趴在云朵上认真挑选了你,然后丢掉世间无数珍宝,光着身子,像个小乞丐一样来到你身边你会选择要二胎吗?生完大宝后,很多人这样问,我都十分肯定的回答不要,不为别
这5种补锌食物,虽然第一被称为补锌之王却不建议孩子多吃大家好,这里是美食家戴纳,锌是人体中重要的微量元素,是蛋白质核酸碳水化合物合成和维生素A转化过程所必需的物质。锌被誉为生命之花。在儿童生长发育过程中,锌起着极为重要的作用,且有利于
女性每天吃一片叶酸,身体会发生哪些变化?叶酸其实是B族维生素当中的一种,属于一种水溶性维生素,因为绿叶当中含量非常丰富而得名。叶酸会参与人体的新陈代谢,尤其是孕期的女性朋友需要服用叶酸预防胎儿畸形。当身体内缺乏叶酸的时候