Python+Opengl实现用B样条曲线在方块上实时交互写字

本文是计算机图形学课程作业的记录,作者通过Python和OpenGL实现B样条曲线在方块上实时交互写字。文章介绍了如何画方块、屏幕坐标到世界坐标的转换以及B样条曲线的绘制,包括遇到的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最终效果

引言

博主是北京理工大学计算机2021级研一的学生,这项任务是计算机图形学这门课程的第一个大作业。由于之前并未接触过opengl,所以在完成这个作业过程中费了一些劲。因为网上找不到符合老师需求的代码,所以代码都是自己拼拼凑凑整的,可能仍有不规范之处。当然,这篇博客是在这门课全结束之后才发布的。

依赖

  • python3.9
  • opengl库

估计python3.7、3.8也都行,但没试过。具体导入库的代码如下:

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import numpy as np

画方块

这里使用的是opengl自带的画面函数进行绘制的。
首先给出每个面的点坐标:

vertices2 = 1.4*np.array([
    [[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], [-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]],  # 左
    [[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], [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]]  # 下
])

这里的1.4倍是为了调整大小关系,可根据实际情况调整这个系数。
再给出每个面的颜色:

colours = np.array([
    [0, 1, 1], [1, 0.5, 0.5],
    [1, 1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值