计算几何 – 使用de Casteljau算法实现的三次贝塞尔曲线插值函数
1 使用de Casteljau算法实现的三次贝塞尔曲线插值函数 de Casteljau算法的基本思想是通过递归地计算一系列中间点来逼近贝塞尔曲线上的点。对于n次贝塞尔曲线,算法需要进行n次递归计算。每次递归计算都会生成一组新的中间点,直到最后得到曲线上的一个点。de Casteljau算法的优点…
- 计算几何
- 2024-08-15
glm – 使用glm对两个glm::mat4变换矩阵进行插值
1 glm::mat4矩阵插值 在glm中我们可以使用glm::slerp方法对四元数glm::quat进行插值,比如 glm::quat result_quat = glm::slerp(start_quat, end_quat, t); 其中start_quat为源四元数,end_quat为目标…
- 3D数学基础
- 2024-07-24
Assimp的aiMatrix4x4与glm的mat4相互转换
1 Assimp的aiMatrix4x4与glm的mat4相互转换 在使用Assimp加载glb模型之后,将模型节点的mTransformation矩阵转换到glm中的mat4进行后续处理。Assimp的aiMatrix4x4与glm的mat4相关转换代码如下 #include "assimp/Im…
- 3D数学基础
- 2024-07-18
计算几何 – 两个向量之间的Cosine距离,衡量两个向量之间的相似度
1 两个向量之间的Cosine距离(余弦距离) 计算几何中可以使用Cosine距离(夹角余弦)来衡量两个向量之间的距离,在机器学习中也可以使用Cosine距离衡量样本之间的差异。 假设有两个向量x和y,则两个向量之间的cosine距离计算公式如下: D(x,y) = \frac{x \cdot y}…
- 计算几何
- 2024-02-04
三维点云重建 – 三维点云表面重建算法概述(一)
1 三维点云表面重建 1.1 什么是三维点云表面重建? 从三维点云(不带法向量信息的点和带法向量信息的点云)中重建出物体表面网格的过程,输入三维点云,输出网格。 1.2 三维点云表面重建的算法 三维点云表面重建的算法法目前可以分为两个大类 Explicit algorithms 显式重建算法 Imp…
- 三维点云重建
- 2023-10-10
计算几何 – 二维几何变换,二维平移、旋转、缩放、仿射变换
本文将简单介绍二维几何变换,包括二维平移变换、二维旋转变换、二维缩放变换、二维仿射变换的变换过程和矩阵计算。 1 基本变换 二维几何基本变换包括平移、旋转、缩放。 1.1 平移 平移指的是将物体沿着某直线路径从一个坐标位置移动到另一个坐标位置,不产生形变的刚体变换。 假设原始坐标位置为(x,y),平…
- 计算几何
- 2023-08-08
计算几何 – 判断三维空间的三个点是否共线
1 三维空间中的共线问题 1.1 如何判断三维空间中的三个点是否共线 在三维空间中,如果三个点共线,就说明这三个点在同一条直线上,就是说这三个点无法组成一个三维平面,即其三个点组成的平面法向量为零向量:(0,0,0)。 1.2 使用C++判断三维空间中三个点是否共线 通过上述的分析,我们可以使用C+…
- 计算几何
- 2023-08-03
计算几何 – 求解三维平面法向量
1 三维平面的法向的概念 三维平面的法线,又称为三维平面的法向量,指的是垂直于该平面的三维向量。 三维平面的法向量不具有唯一性,在相反方向的法线也是平面的法线。 根据曲面边界,将指向曲面内部的法线称为inward-pointing normal,指向曲面外部的法线称为outer-pointing n…
- 计算几何
- 2023-07-31
计算几何 – 三维向量的点乘、叉乘的概念、几何意义以及如何使用C++计算
1 三维向量点乘 1.1 三维向量点乘的概念 两个三维向量的点乘又称为点积、数量积或者标量积(Scalar Product)。 假设三维空间中有两个三维向量:\vec{a}=(x_1,y_1,z_1),\vec{b}=(x_2,y_2,z_2),\vec{a}和\vec{b}之间的夹角为\theta…
- 计算几何
- 2023-07-28
计算机图形学 – 实时次表面散射简介(Real-Time Subsurface Scattering)
Subsurface Scattering,次表面散射。 1 SSS Basics(次表面反射基础) 什么是“Subsurface Scattering”? 在现实世界中,次表面散射通常发生在我们看起来很标准的材料上,比如塑料或者皮革制品。我们通常使用“Lambertian”这样的漫反射BRDF模型…
- 计算机图形学
- 2023-06-21
计算机图形学 – Hemisphere Lighting 半球光
1 为什么需要Hemisphere Lighting? 我们通过观察现实世界中光的各种呈现形式,在计算机图形学中我们也模拟了各种光源效果,比如方向光、点光源、聚光灯、区域光、环境光等等,这些都是在图形学中比较传统的照明模型。在一些比较基础的照明模型中,环境光常常使用一种简单的偏黄色的颜色代替,但是现…
- 计算机图形学
- 2022-09-09
计算机图形学 – PBR纹理中不同贴图的作用和意义
PBR(Physically Based Rendering)基于物理的渲染。为了在游戏或者3D应用中获取更加真实的渲染效果,越来越多的3D游戏或者虚拟应用以及游戏引擎开始使用PBR纹理/材质。在实时渲染的场景中,PBR是在现有算力下可以提供真实感渲染的最常用的选择。本文我们将简要介绍在PBR纹理/…
- 计算机图形学
- 2022-08-17