void hermiteCurve( const float t, const float* vPt, const float* vTangent, float* pOutPt) { float tt = t * t; float ttt = tt * t; for (int i=0;i<2;++i) { pOutPt[i] =(2.0f * ttt - 3.0f * tt + 1.0f) * vPt[0*2+i] + (ttt - 2.0f * tt + t) * vTangent[0*2+i] + (-2.0f * ttt + 3.0f * tt) * vPt[1*2+i] + (ttt - tt) * vTangent[1*2+i]; } }
其中 t 表示欲內插的點在曲線上的比例值(區間從 0~1)。vPt 表示曲線的起點跟終點位置,是一個 float[4] 的變數,其中起點是(vPt[0], vPt[1]),終點是(vPt[2], vPt[3])。vTangent 表示曲線起點跟終點的切線向量,其中起點的切線向量是(vTangent[0], vTangent[1]),終點的切線向量是(vTangent[2], vTangent[3])。pOutPt 是比例值 t 內插出來的位置,是一個 float[2] 的變數。
0 意見 :
張貼留言