SunXinFei / sunxinfei.github.io

前后端技术相关笔记,已迁移到 Issues 中
https://github.com/SunXinFei/sunxinfei.github.io/issues
32 stars 3 forks source link

3D二三事 #30

Open SunXinFei opened 2 years ago

SunXinFei commented 2 years ago

关于3D相关的一些总结

SunXinFei commented 2 years ago

2D几何相关

线段的延长线

背景:绘制线段时,需要绘制任意两点连线的延长线,作为辅助线 image 思路:已知两点坐标,获取该方向的两端延长线,用向量的处理方式,可以得到如图条件: image 转化为向量,就是几何条件:已知OSOE,且|S1S| = |EE1|,求OS1OE1

解:SE = OE-OS,SE其实就是绘制中的线段, a 表示 SE的单位向量 EE1 = S1S = a乘以常量 OE1 = OE+EE1 OS1 = OS - S1S 转化为代码如下


const OS = new THREE.Vector2(x1,y1)
const OE = new THREE.Vector2(x2,y2)
const SE = OS.clone().sub(OE)
// SE单位向量
const a = SE.normalize()
// 延长线长度常量,即为S1S与EE1的模
const DISTANCE = 200
const EE1 = a.multiplyScalar(DISTANCE)
const S1S = a.multiplyScalar(DISTANCE)
// 延长的起始点与结束点坐标
const OE1 = OE.clone().add(EE1)
const OS1 = OS.clone().sub(S1S)

### 垂足
背景:已知一个点,一条线,我们需要找到该点在线上的垂足,作为辅助线
![image](https://user-images.githubusercontent.com/5847281/167791910-cad11991-ae1e-4e6e-b2fc-a5ad1ce95a5c.png)
思路:已知一条线的起始点和结束点坐标,以及一个点的坐标,求线上的垂足