/*********************************************************** get direction vector ***********************************************************/ LbaVec3 LbaQuaternion::GetDirection(const LbaVec3 &vec) { NxVec3 dir(vec.x, vec.y, vec.z); NxQuat current; current.setXYZW(X, Y, Z, W); current.rotate(dir); return LbaVec3(dir.x, dir.y, dir.z); }
void NxVehicle::standUp() { NxVec3 pos = getActor()->getGlobalPosition() + NxVec3(0,2,0); NxQuat rot = getActor()->getGlobalOrientationQuat(); NxVec3 front(1,0,0); rot.rotate(front); front.y = 0; front.normalize(); NxReal dotproduct = front.x; NxReal angle = NxMath::sign(-front.z) * NxMath::acos(dotproduct); rot.fromAngleAxis(NxMath::radToDeg(angle), NxVec3(0,1,0)); getActor()->setGlobalPosition(pos); getActor()->setGlobalOrientationQuat(rot); getActor()->setLinearVelocity(NxVec3(0,0,0)); getActor()->setAngularVelocity(NxVec3(0,0,0)); }