被faebdc的shadow坑惨了。在考场上才发现自己的3D计算几何知识基本为0。
旋转
已知点,把它沿着转动(从与向量相对的角度看过去,点是逆时针旋转的) 首先可以给出绕三个轴的旋转矩阵
有些不同,因为的变化中等价成了二维的轴,被等价成了轴
对于这三个特殊的旋转轴我们已经有了解决方案了,那么对于任意的轴要怎么办呢?我们可以将这个旋转分解: 将整个坐标轴旋转,使得旋转轴和轴重合 再将点绕轴旋转角 再将整个坐标轴旋转回原位
算了直接上结论。。Miskcoo
还是很优美的。
线面相交
设平面的法向量为,平面上有一点。有直线。
设交点为,则
解得
当的时候,显然交点不存在。
这种法线的操作对于二维的线线相交依然适用,比面积法或者体积法显然得多,好记得多,而且数值稳定性并没有损失。
一道题
附上一道练手题目:Shadow
这道题目存在更简洁的做法,但是为了强行套模板,我选择了一种非常难受的转化:把坐标系强行转化成地面是坐标平面,转化成把构成的三角形转到面上。详见代码,实在是恶心得不想多说。
写完1A好评。
1 |
|