在三维空间(3D)中,点(Point)和向量(Vector)虽然都可以用笛卡尔坐标系中的坐标表示,但它们的物理含义和数学意义是有本质区别的。
设计模式学习笔记-策略模式
策略模式是一种行为设计模式,它允许我们在运行时选择特定的算法或行为,而无需对客户端代码进行修改。这对于那些需要根据不同条件(如客户类型)执行不同逻辑的场景尤其有用。通过策略模式,可以有效避免大量的if-else或switch-case判断,使代码更具可读性、可扩展性和维护性。
设计模式学习笔记-观察者模式
观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
设计模式学习笔记-单例模式
单例模式是设计模式中最简单的一种,其主要目的是确保一个类在全局范围内只有一个实例,并提供一个全局访问点。主要用于例如状态管理,用户配置管理,缓存管理等场景。
设计模式学习笔记-工厂模式
工厂模式是一种创建型设计模式,用于在不直接用new运算符的情况下处理对象的创建。工厂模式包含三种:简单工厂模式、工厂方法模式和抽象工厂模式。
设计模式学习笔记-五大设计原则
设计模式学习笔记-总览
设计模式是在面向对象的软件设计的工程中,针对某一特定的问题的一种解决方案。采用设计模式可以提高代码的可读性、可维护性和可扩展性,同时降低系统的复杂度。
blender转换pmx模型到glb材质问题记录
记录一下使用blender以及插件mmd_tools转换pmx模型为gltf,并用threejs的GLTFLoader加载时遇到的一些问题。
计算几何-凸包(二)
1.极性(Extremity)的概念
/2024-01-08-计算几何-凸包(二)/images/pasted-0.png)
在如图所示的一个凸包内,存在两种点,对构成凸包有实质作用的点(蓝色)和没有实质作用的点(绿色)。而对构成凸包有实质作用的点则被称为极点(Extreme Points)。
极点存在一个特性:存在一条穿过极点的直线,使得凸包内所有点都在这条线的同一侧。
2.判断极点的方法
1.In-Triangle Test
/2024-01-08-计算几何-凸包(二)/images/pasted-1.png)
取一个点,枚举其余点集可产生的所有三角形,判断该点是否包含于某个三角形内,如果不存在,则该点为极点。伪代码如下
1 | for (const Point of AllPoints) { |
该方法复杂度为,其中计算AllTriangles时间复杂度为,效率极差。
1.1 To-Left Test
/2024-01-08-计算几何-凸包(二)/images/pasted-2.png)
实现Triangle.contains(Point)可用To-Left Test方法。此方法将三角形三个点按照逆时针首尾相连的到三条直线,然后判断对于这三条直线来说,是否Point全在直线左侧。
判断点是否在线段左侧可通过判断这三个点逆时针所形成的三角的有向面积是否大于0,公式如下

