コード例 #1
0
ファイル: cpVect.c プロジェクト: 9linGroupOne/TestGit
cpVect
cpvslerpconst(const cpVect v1, const cpVect v2, const cpFloat a)
{
    cpFloat dot = cpvdot(cpvnormalize(v1), cpvnormalize(v2));
    cpFloat omega = cpfacos(cpfclamp(dot, -1.0f, 1.0f));

    return cpvslerp(v1, v2, cpfmin(a, omega)/omega);
}
コード例 #2
0
ファイル: cpVect.c プロジェクト: csdnnet/hiygame
inline cpVect
cpvslerp(const cpVect v1, const cpVect v2, const cpFloat t)
{
	cpFloat omega = cpfacos(cpvdot(v1, v2));
	
	if(omega){
		cpFloat denom = 1.0f/cpfsin(omega);
		return cpvadd(cpvmult(v1, cpfsin((1.0f - t)*omega)*denom), cpvmult(v2, cpfsin(t*omega)*denom));
	} else {
		return v1;
	}
}
コード例 #3
0
ファイル: cpVect.c プロジェクト: 9linGroupOne/TestGit
inline cpVect
cpvslerp(const cpVect v1, const cpVect v2, const cpFloat t)
{
    cpFloat dot = cpvdot(cpvnormalize(v1), cpvnormalize(v2));
    cpFloat omega = cpfacos(cpfclamp(dot, -1.0f, 1.0f));

    if(omega == 0.0) {
        return v1;
    } else {
        cpFloat denom = 1.0f/cpfsin(omega);
        return cpvadd(cpvmult(v1, cpfsin((1.0f - t)*omega)*denom), cpvmult(v2, cpfsin(t*omega)*denom));
    }
}
コード例 #4
0
ファイル: cpVect.c プロジェクト: csdnnet/hiygame
cpVect
cpvslerpconst(const cpVect v1, const cpVect v2, const cpFloat a)
{
	cpFloat angle = cpfacos(cpvdot(v1, v2));
	return cpvslerp(v1, v2, cpfmin(a, angle)/angle);
}