Hermite Interpolation
Hermite插值多项式
Hermite插值是一种插值方法,可以通过给定的点和导数值构造插值多项式。给定点(x0,y0),(x1,y1),...,(xn,yn)和导数值y′0,y′1,...,y′n,可以构造插值多项式。本文介绍如何使用Newton差商生成Hermite插值多项式。
Hermite插值是一种插值方法,可以通过给定的点和导数值构造插值多项式。给定点(x0,y0),(x1,y1),...,(xn,yn)和导数值y′0,y′1,...,y′n,可以构造插值多项式。本文介绍如何使用Newton差商生成Hermite插值多项式。
该文章中的c++代码参考了ipc-toolkit的实现。
点到三角形的距离可以用如下定义:
distance(→xp,→xt1,→xt2,→xt3)=minβ1,β2‖→xp−(→xt1+β1(→xt2−→xt1)+β2(→xt3−→xt1))‖s.t.β1≥0,β2≥0,β1+β2≤1
这是一个分断连续的函数,实际计算时可以根据点和三角形的位置关系分以下几种情况讨论,首先要将点投影到三角形所在的平面上:
在进行软体模拟时,如果使用牛顿法计算最优的下降方向,需要计算能量密度函数Ψ关于位置→x 的Hessian矩阵,即∂2Ψ∂→x2。其中→x是一个四面体的四个顶点的位置。
∂2Ψ∂x2=vec(∂F∂x)Tvec(∂P∂F)vec(∂F∂x)
首先,已知
→x=[→x1→x2→x3]Ds=[→x1−→x4→x2−→x4→x3−→x4]∂(Ds)kl∂→xijei⊗ej⊗ek⊗el=∂→xkl∂→xijei⊗ej⊗ek⊗el=δikδjlei⊗ej⊗ek⊗el 这里把→x后三列写成一个3x3的矩阵。D−1m的分量表示为dmn,P的分量表示为Prs,则能量密度函数Ψ关于位置→x 的梯度为:
Projective Dynamics是一种用于软体模拟的方法,算法分为local step和global step两个部分。其中local step可以对于每个四面体约束并行计算,global step只需要求解一个线性方程组,而他的矩阵非常特殊,是一个Gram矩阵,因此可以预先用Cholesky分解。本文主要介绍local step的实现的推导过程。用Corotated strain model的CUDA的实现作为例子。
Lo(p,ωo)=Le(p,ωo)+∫s2f(p,ωo,ωi)|cosθi|dωi
本来想写BSDF的推导,但是发现基础知识很多,正好整理一下作为复习。部分内容参考Physically Based Rendering, Third Edition,非常推荐阅读。
从相机发出一条光线,穿过与相机距离为1的屏幕上的某点,已知相机参数和点在屏幕空间上的位置(sx,sy)
,计算世界空间中投影到该点的对应点的坐标的公式为:
P=ViewMat−1∗ProjMat−1∗((sx,sy,1,1)∗farClip).