{
Quat q
float trace
float s
float t
int i
int j
int k
static int next[ 3 ] = { 1, 2, 0 }
trace = mat[ 0 ][ 0 ] + mat[ 1 ][ 1 ] + mat[ 2 ][ 2 ]
if ( trace >0.0f )
{
t = trace + 1.0f
s = 0.5f / sqrtf(t)
q[3] = s * t
q[0] = ( mat[ 2 ][ 1 ] - mat[ 1 ][ 2 ] ) * s
q[1] = ( mat[ 0 ][ 2 ] - mat[ 2 ][ 0 ] ) * s
q[2] = ( mat[ 1 ][ 0 ] - mat[ 0 ][ 1 ] ) * s
} else {
i = 0
if ( mat[ 1 ][ 1 ] >mat[ 0 ][ 0 ] ) {
i = 1
}
if ( mat[ 2 ][ 2 ] >mat[ i ][ i ] ) {
i = 2
}
j = next[ i ]
k = next[ j ]
t = ( mat[ i ][ i ] - ( mat[ j ][ j ] + mat[ k ][ k ] ) ) + 1.0f
s = 0.5f / sqrtf(t)
q[i] = s * t
q[3] = ( mat[ k ][ j ] - mat[ j ][ k ] ) * s
q[j] = ( mat[ j ][ i ] + mat[ i ][ j ] ) * s
q[k] = ( mat[ k ][ i ] + mat[ i ][ k ] ) * s
}
return q
}
上述代码来至与ID4号引擎。
//弯扮携 Convert to Axis/Anglesvoid Quaternion::getAxisAngle(Vector3 *axis, float *angle)
{
float scale = sqrt(x * x + y * y + z * z)
axis->埋伏x = x / scale
axis->缺指y = y / scale
axis->z = z / scale
*angle = acos(w) * 2.0f
}
工具箱里面有个examples的文件夹,文件夹中有个colour_edge_detector.m的文件,把这个文件拷到主文件夹qtfm里面就可以槐谈运行,这是个彩色图像的边缘检测,前面的几行就是彩色图像的卷积铅弯碰,你可以把程序闹则里面读取url地址下的图像改成你自己要用的图像欢迎分享,转载请注明来源:内存溢出
评论列表(0条)