上期跟大家说了关于python绘图内容,这期跟大家讲讲能够构造立体图形的python内容,感兴趣的小伙伴可以来看下哦~

1.1 利用python的pygame和OpenGL制作动态正方体cube。

1.2 安装python3.8和pygame(省略)。

1.3 安装OpenGL:pip install PyOpenGL PyOpenGL_accelerate

效果图【动态】:

完整代码:#---导出模块---

import pygame

from pygame.locals import *

from OpenGL.GL import *

from OpenGL.GLU import *

#---初始化pygame和定义窗口大小---

pygame.init()

#OPENGL|DOUBLEBUF=DOUBLEBUF|OPENGL

#DOUBLEBUF:双缓冲模式(推荐和 HWSURFACE 或 OPENGL 一起使用)

#创建一个 OPENGL 渲染的显示

pygame.display.set_mode((640,480), OPENGL|DOUBLEBUF)

#---元组定义---

#定义正方体的xyz坐标点

CUBE_POINTS = ((0.5, -0.5, -0.5), (0.5, 0.5, -0.5),(-0.5, 0.5, -0.5), (-0.5, -0.5, -0.5),(0.5, -0.5, 0.5), (0.5, 0.5, 0.5),(-0.5, -0.5, 0.5), (-0.5, 0.5, 0.5))

#定义RGB颜色

CUBE_COLORS = ((1, 0, 0), (1, 1, 0), (0, 1, 0), (0, 0, 0),(1, 0, 1), (1, 1, 1), (0, 0, 1), (0, 1, 1))

# 定义面,四个点构成一个面

CUBE_QUAD_VERTS = ((0, 1, 2, 3), (3, 2, 7, 6), (6, 7, 5, 4),(4, 5, 1, 0), (1, 5, 7, 2), (4, 0, 3, 6))

# 定义线,两个点构成一个线

CUBE_EDGES = ((0,1), (0,3), (0,4), (2,1), (2,3), (2,7),(6,3), (6,4), (6,7), (5,1), (5,4), (5,7),)

#---定义画立方体函数---

def drawcube():

# "绘制正方体",zip和list法

allpoints = list(zip(CUBE_POINTS, CUBE_COLORS))

#画面积---开始---结束---

glBegin(GL_QUADS)

for face in CUBE_QUAD_VERTS:

for vert in face:

pos, color = allpoints[vert]

#在第2个for下面

glColor3fv(color)

glVertex3fv(pos)

#与第1个for对齐

glEnd()

#边线颜色黑色

glColor3f(0, 0, 0)

# 绘制线---开始---结束---

glBegin(GL_LINES)

for line in CUBE_EDGES:

for vert in line:

pos, color = allpoints[vert]

glVertex3fv(pos)

glEnd()

#---主函数---

def main():

glEnable(GL_DEPTH_TEST)

#初始化 摄像头

glMatrixMode(GL_PROJECTION)

gluPerspective(45.0,640/480.0,0.1,100.0)

glTranslatef(0.0, 0.0, -3.0)

glRotatef(25, 1, 0, 0)

#启动循环---

while True:

#事件检测

event = pygame.event.poll()

#定义退出机制,在pygame的while循环中,这一步必备设置

if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):

break

#清除屏幕

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

#摄像机旋转

glRotatef(1,0,1,0)

drawcube()

#刷新画面

pygame.display.flip()

if __name__ == '__main__':

main()

以上内容并不多,大家非常容易消化理解,如需了解更多python实用知识,点击进入PyThon学习网教学中心。

python的cubes怎么使用_如何使用python中的opengl?相关推荐

  1. python wx窗口无法关闭_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...

    针对Python这一话题每天后台都会有不少小伙伴提出问题,下面我就将这些问题进行汇整,产出"Python实战问题篇",我认为这些问题非常具有代表性,希望可以帮到大家. 第一类问题: ...

  2. 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...

    学堂在线_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 近代中国完全沦为半殖民地半封建社会的标志是:A.<马关条约>B.<辛丑条约>C.<凡尔赛和 ...

  3. python write 写多行_如何用 Python 执行单行命令

    一般来说,面对日常处理的一些小任务,直接用 sed,grep 之类的就可以搞定,更复杂一点的就会考虑 awk 或者用一些现成的轮子,要是 awk 搞不定我就只好用 Python 了.但有些时候,我仅仅 ...

  4. python如何初始化对象数组_如何理解Python中的面向对象编程?

    (由Python大本营付费下载自视觉中国) 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 现如今面向对象编程的使用非常广泛,本文 ...

  5. python运行界面如何缩小_如何使用Python调整图像大小

    作者|Nicholas Ballard 编译|VK 来源|Towards Data Science 可以说,每一个"使用计算机的人"都需要在某个时间点调整图像的大小.MacOS的预 ...

  6. python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)

    Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...

  7. 计算机编程导论python程序设计答案-学堂云_计算机科学与Python编程导论_作业课后答案...

    学堂云_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 保本基金参与股指期货交易,应当根据风险管理的原则,以套期保值为目的.() 基金经理主要依据股票投资价值报告来决定实际的投资 ...

  8. python游戏小项目简单_[简单学Python] 通过一个小游戏完成Python入门[2]变量和赋值...

    变量和赋值 到这里,你已经成功地打印出了千寻的名字和卖身契.与此同时,千寻也成为了汤婆婆的工人,渐渐地,她忘记了自己是谁,遗失了自己"姓名"的信息. 那么,在信息纷繁的代码世界里, ...

  9. python能做财务分析吗_您可以使用Python进行财务规划和分析吗?

    python能做财务分析吗 问题 (The Problem) If you work in the Financial Planning and Analysis area, chances are ...

最新文章

  1. [Android] Git组件化部署
  2. 面试题目--MPEG4与H.264的区别
  3. 如何通过BIPlatform完成多维报表以及图形配置
  4. 修改使用计算机的名称,Windows 10中修改计算机名称的方法,你知道几种?
  5. 软件设计师习题笔记-重点习题六
  6. 2.8 GloVe 词向量
  7. 管理感悟:学会推论及验证
  8. p标签里文字不换行,以省略号结束
  9. 前端开发的几种常用的编辑器
  10. 浪潮服务器网卡驱动丢失怎么修复,电脑丢失网卡驱动,学会这一招,轻松搞定...
  11. 从零实现一款12306抢票软件
  12. lateX 编译中文_受够了 Word 的排版?让专业的 Latex 帮你打造精美文档
  13. IT十年人生过客-十八-路过机遇
  14. 云渲染服务器快吗?云渲染具体怎么用??
  15. 莱布尼兹其实离开我们并不遥远
  16. 20 行代码编写一个简单的端口扫描器
  17. 计算机专业是不是天坑专业,工科中的三大“天坑”专业,就业前景不太乐观,入坑需谨慎!...
  18. cocos2dx 特效 3D特效
  19. tomca的用户设置
  20. 成果分享:边缘智能视频预取和缓存机制

热门文章

  1. yum 不能安装应用,提示There are no enabled repos Run yum repolist all
  2. 【MySQL】JavaWeb项目中配置数据库的连接池
  3. Android源码分析(十一)-----Android源码中如何引用aar文件
  4. DataGrid数据绑定
  5. 如何获取用户当前详细的地理位置
  6. java中 将字符串时间 '2015-9-8 17:05:06' 转化为格式 '2015-09-08 17:05:06'
  7. using(){},Close(),Dispose()的区别
  8. HappyLeetcode64:Sqrt(x)
  9. Android(1)—Mono For Android 环境搭建及破解
  10. 蓝桥杯第八届省赛JAVA真题----迷宫