Delaunay-Triangulation Delaunay 三角形化 Delaunay三角形化,也叫Delaunay三角剖分,是一种三角剖分算法,它的作用是把一个平面上的点集,按照一定的规则,分成若干个三角形。这些三角形有以下特点: 这些三角形互不重叠 这些三角形可以覆盖整个平面 每个点均不位于不包含该点的三角形的外接圆内(即:在某个三角形的外接圆内,只包含在外接圆上的三个点,不包含其他点) Delaunay 三角形化的优点: 最小 2025-04-18 Math #Math
C# List<T> List<T> 泛型 List 在底层实现中是由数组来承载数据,所以又被称为“动态数组”。数组的大小即为容量(capacity),可以手动或自动地调整。当容量不足时,会自动创建一个更长的数组,将原数组中的内容复制到新的数组中实现扩容。默认新创建的不含任何元素的 List 容量为 0,加入一个元素后容量为 4,容量不足时进行二倍扩容,即容量变为 8、16、32… 当 List 调用 Cl 2023-04-27 Languages #CSharp
C# 模式匹配、析构元组和弃元 模式匹配 “模式匹配”是一种测试表达式是否具有特定特征的方法。 C# 模式匹配提供更简洁的语法,用于测试表达式并在表达式匹配时采取措施。 “is 表达式”目前支持通过模式匹配测试表达式并有条件地声明该表达式结果。 “switch 表达式”允许你根据表达式的首次匹配模式执行操作。 这两个表达式支持丰富的模式词汇。 Null 检查 模式匹配最常见的方案之一是确保值不是 null。 使用以下示例进行 n 2023-04-26 Languages #CSharp
C# 类和接口 类(Class) 什么是类 一种数据结构 一种数据类型 代表现实世界中的种类 构造函数和析构函数 构造函数 public ClassName(){} 在被new实例化时自动调用此构造器 private ClassName(){} 用于防止类被new ClassName()实例化 static ClassName(){} 只用于构造静态成员,不能用于构造实例成员 析构函数 ~Clas 2023-04-24 Languages #CSharp
LearnVim onoremap Is :<c-u>normal! F]vi]<cr> 用 onoremap 映射一个 motion,上面代码的意思为将 Is 按键映射为找到本行光标前的 ‘]’ 符号,并选择在 ‘[]’ 内的内容。按 dIs 就可以删除本行内光标位置之前的 ‘[]’ 中的内容。 :<c-r><c-w> 在命令模式下使用 ctrl + r 加 ctr 2022-09-14 Editor #Vim
画线和画三角形方法 画线算法 DDA画线 直线方程表示为 $y = kx + b$ 当 $\lVert k \rVert <= 1$时,$x$ 每递增$1$,$y$ 递增$k$。 当 $\lVert k \rVert \geq 1$时,$x$ 每递增$1/k$,$y$ 递增$1$。 因为光栅化不能绘制半个像素点,所以求出的值需要进行四舍五入即加 0.5 后再进行取整。 DDA 算法是一个增量算法,它直观且 2022-09-04 Computer Graphics #Math
三角形重心坐标 三角形 想要定义一个三角形只需列出其 3 个顶点即可,但是列出这三个顶点的顺序非常重要。在左手坐标系并且从三角形正面看时,通常按照顺时针顺序枚举顶点。我们将这 3 个顶点分别称为 $\bf v_1$, $\bf v_2$, $\bf v_3$。 其中的边长和长度可以表示为: $$ \begin{aligned} {\bf e_1} &= {\bf v_3} - {\bf v_2} &am 2022-07-31 Computer Graphics #Math
四元数和三维旋转(三) 四元数插值 假设有两个旋转变换 $q_0 = [\cos(\theta_{0}), \sin(\theta_{0})\pmb{u_0}]$ 和 $q_1 = [\cos(\theta_{1}), \sin(\theta_{1})\pmb{u_1}]$,我们希望找出一些中间变换 $q_{t}$,让初始变换 $q_{0}$ 能够平滑地过渡到最终变换 $q_{1}$,$t$ 的取值可以是 $t \in 2022-07-20 Computer Graphics #Math
四元数和三维旋转(二) 四元数 所有的四元数 $q \in \mathbb{H}$ 都可以写成下面这种形式: $$ q = a + bi + cj + dk,(a,b,c,d \in \mathbb{R}) $$ 其中 $$ i^2 = j^2 = k^2 = ijk = -1 $$ 如果把上式称为四元数的代数形式,那么和复数类似,它也有对应的向量形式一: $$ q = \begin{bmatrix} a\ b\ c\ 2022-07-18 Computer Graphics #Math
四元数和三维旋转(一) 由于使用欧拉角进行旋转时会存在万向锁的问题,同时,用欧拉角进行插值也不尽方便,而基于四元数的旋转既解决了万向锁的问题,又能非常方便地进行插值。本文将对在学习过程中遇到的四元数的定义、推导、性质、插值等问题进行总结归纳。 复数 我们先来简要讨论一下复数的一些性质以及它与 2D 旋转之间的关系,四元数的很多性质都与复数非常类似,所以理解复数的一些性质对理解四元数非常有帮助。 定义 任意一个复数 $z 2022-07-16 Computer Graphics #Math