本文整理汇总了C++中Anglef::getRoll方法的典型用法代码示例。如果您正苦于以下问题:C++ Anglef::getRoll方法的具体用法?C++ Anglef::getRoll怎么用?C++ Anglef::getRoll使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Anglef
的用法示例。
在下文中一共展示了Anglef::getRoll方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: angleToQuatForExtraRotation
glm::quat angleToQuatForExtraRotation(const Anglef & angle) {
Anglef vt1;
vt1.setYaw(angle.getRoll());
vt1.setPitch(angle.getPitch());
vt1.setRoll(angle.getYaw());
return QuatFromAngles(vt1);
}
示例2: toRotationMatrix
glm::mat4 toRotationMatrix(const Anglef & angle) {
float yaw = glm::radians(angle.getYaw());
float pitch = glm::radians(angle.getPitch());
float roll = glm::radians(angle.getRoll());
glm::mat4 rotateX = glm::eulerAngleX(yaw);
glm::mat4 rotateY = glm::eulerAngleY(pitch);
glm::mat4 rotateZ = glm::eulerAngleZ(-roll);
return rotateZ * rotateX * rotateY;
}
示例3: QuatFromAngles
//*************************************************************************************
// Converts euler angles to a unit quaternion.
//*************************************************************************************
glm::quat QuatFromAngles(const Anglef & angle) {
float A, B;
A = glm::radians(angle.getYaw()) * ( 1.0f / 2 );
B = glm::radians(angle.getPitch()) * ( 1.0f / 2 );
float fSinYaw = glm::sin(A);
float fCosYaw = glm::cos(A);
float fSinPitch = glm::sin(B);
float fCosPitch = glm::cos(B);
A = glm::radians(angle.getRoll()) * ( 1.0f / 2 );
float fSinRoll = glm::sin(A);
float fCosRoll = glm::cos(A);
A = fCosRoll * fCosPitch;
B = fSinRoll * fSinPitch;
glm::quat q;
q.x = fSinRoll * fCosPitch * fCosYaw - fCosRoll * fSinPitch * fSinYaw;
q.y = fCosRoll * fSinPitch * fCosYaw + fSinRoll * fCosPitch * fSinYaw;
q.z = A * fSinYaw - B * fCosYaw;
q.w = A * fCosYaw + B * fSinYaw;
return q;
}
示例4: Render
//.........这里部分代码省略.........
newpos = lastpos = pathways[0];
for(int i = 0; i < 5; i++) {
int kp = i;
int kpprec = (i > 0) ? kp - 1 : kp ;
int kpsuiv = kp + 1 ;
int kpsuivsuiv = (i < (5 - 2)) ? kpsuiv + 1 : kpsuiv;
for(int toto = 1; toto < iBezierPrecision; toto++) {
if(fTrail < i * iBezierPrecision + toto)
break;
float t = toto * fOneOnBezierPrecision;
float t1 = t;
float t2 = t1 * t1 ;
float t3 = t2 * t1 ;
float f0 = 2.f * t3 - 3.f * t2 + 1.f ;
float f1 = -2.f * t3 + 3.f * t2 ;
float f2 = t3 - 2.f * t2 + t1 ;
float f3 = t3 - t2 ;
float val = pathways[kpsuiv].x;
float p0 = 0.5f * (val - pathways[kpprec].x) ;
float p1 = 0.5f * (pathways[kpsuivsuiv].x - pathways[kp].x) ;
v.x = f0 * pathways[kp].x + f1 * val + f2 * p0 + f3 * p1 ;
val = pathways[kpsuiv].y ;
p0 = 0.5f * (val - pathways[kpprec].y) ;
p1 = 0.5f * (pathways[kpsuivsuiv].y - pathways[kp].y) ;
v.y = f0 * pathways[kp].y + f1 * val + f2 * p0 + f3 * p1 ;
val = pathways[kpsuiv].z ;
p0 = 0.5f * (val - pathways[kpprec].z) ;
p1 = 0.5f * (pathways[kpsuivsuiv].z - pathways[kp].z) ;
v.z = f0 * pathways[kp].z + f1 * val + f2 * p0 + f3 * p1 ;
newpos = v;
if(!((fTrail - (i * iBezierPrecision + toto)) > iLength)) {
float c;
if(fTrail < iLength) {
c = 1.0f - ((fTrail - (i * iBezierPrecision + toto)) / fTrail);
} else {
c = 1.0f - ((fTrail - (i * iBezierPrecision + toto)) / (float)iLength);
}
float fsize = c;
float alpha = c - 0.2f;
if(alpha < 0.2f)
alpha = 0.2f;
c += Random::getf(-0.1f, 0.1f);
c = glm::clamp(c, 0.f, 1.f);
Color color = (m_trailColor * (c * alpha)).to<u8>();
if(fsize < 0.5f)
fsize = fsize * 2 * 3;
else
fsize = (1.0f - fsize + 0.5f) * 2 * (3 * 0.5f);
float fs = fsize * 6 + Random::getf(0.f, 0.3f);
float fe = fsize * 6 + Random::getf(0.f, 0.3f);
Draw3DLineTexNew(mat, lastpos, newpos, color, color, fs, fe);
}
Vec3f temp_vector = lastpos;
lastpos = newpos;
newpos = temp_vector;
}
}
Vec3f av = newpos - lastpos;
float bubu = getAngle(av.x, av.z, 0, 0);
float bubu1 = getAngle(av.x, av.y, 0, 0);
eCurPos = lastpos;
Anglef stiteangle;
stiteangle.setPitch(-glm::degrees(bubu));
stiteangle.setYaw(0);
stiteangle.setRoll(-(glm::degrees(bubu1)));
if(av.x < 0)
stiteangle.setRoll(stiteangle.getRoll() - 90);
if(av.x > 0)
stiteangle.setRoll(stiteangle.getRoll() + 90);
if(stiteangle.getRoll() < 0)
stiteangle.setRoll(stiteangle.getRoll() + 360.0f);
Draw3DObject(smissile, stiteangle, eCurPos, Vec3f_ONE, m_projectileColor, mat);
}
示例5: Manage3DCursor
//.........这里部分代码省略.........
collidpos = cyl2.origin;
if(lastanything < 0.f) {
pos.y += lastanything;
collidpos.y += lastanything;
}
} else {
pos = cyl2.origin;
lastanything = anything;
}
iterating--;
}
collidpos_ok = iterating == -1;
}
objcenter = VRotateY(objcenter, temp.getPitch());
collidpos.x -= objcenter.x;
collidpos.z -= objcenter.z;
pos.x -= objcenter.x;
pos.z -= objcenter.z;
if(!collidpos_ok) {
CANNOT_PUT_IT_HERE = 1;
return false;
}
if(collidpos_ok && closerThan(player.pos, pos, 300.f)) {
if(simulate) {
ARX_INTERACTIVE_Teleport(io, pos, true);
io->gameFlags &= ~GFLAG_NOCOMPUTATION;
glm::quat rotation = glm::toQuat(toRotationMatrix(temp));
if(SPECIAL_DRAGINTER_RENDER) {
if(glm::abs(lastanything) > glm::abs(height)) {
TransformInfo t(collidpos, rotation, io->scale);
static const float invisibility = 0.5f;
DrawEERIEInter(io->obj, t, io, false, invisibility);
} else {
TransformInfo t(pos, rotation, io->scale);
float invisibility = Cedric_GetInvisibility(io);
DrawEERIEInter(io->obj, t, io, false, invisibility);
}
}
} else {
if(glm::abs(lastanything) > std::min(glm::abs(height), 12.0f)) {
Entity * io = DRAGINTER;
ARX_PLAYER_Remove_Invisibility();
io->obj->pbox->active = 1;
io->obj->pbox->stopcount = 0;
io->pos = collidpos;
io->velocity = Vec3f_ZERO;
io->stopped = 1;
movev.x *= 0.0001f;
movev.y = 0.1f;
movev.z *= 0.0001f;
Vec3f viewvector = movev;
Anglef angle = temp;
io->soundtime = 0;
io->soundcount = 0;
EERIE_PHYSICS_BOX_Launch(io->obj, io->pos, angle, viewvector);
ARX_SOUND_PlaySFX(SND_WHOOSH, &pos);
io->show = SHOW_FLAG_IN_SCENE;
Set_DragInter(NULL);
} else {
ARX_PLAYER_Remove_Invisibility();
ARX_SOUND_PlayInterface(SND_INVSTD);
ARX_INTERACTIVE_Teleport(io, pos, true);
io->angle.setYaw(temp.getYaw());
io->angle.setPitch(270.f - temp.getPitch());
io->angle.setRoll(temp.getRoll());
io->stopped = 0;
io->show = SHOW_FLAG_IN_SCENE;
io->obj->pbox->active = 0;
Set_DragInter(NULL);
}
}
GRenderer->SetCulling(Renderer::CullNone);
return true;
} else {
CANNOT_PUT_IT_HERE=-1;
}
return false;
}
示例6: add
void add(std::string key, const Anglef value) {
m_maxKeyLen = std::max(m_maxKeyLen, key.length());
std::string valueStr = boost::str(boost::format("%4.2f %4.2f %4.2f") % value.getYaw() % value.getPitch() % value.getRoll());
m_elements.push_back(std::pair<std::string, std::string>(key, valueStr));
}
示例7: Render
//.........这里部分代码省略.........
float t3 = t2 * t1 ;
float f0 = 2.f * t3 - 3.f * t2 + 1.f ;
float f1 = -2.f * t3 + 3.f * t2 ;
float f2 = t3 - 2.f * t2 + t1 ;
float f3 = t3 - t2 ;
float val = pathways[kpsuiv].p.x;
float p0 = 0.5f * (val - pathways[kpprec].p.x) ;
float p1 = 0.5f * (pathways[kpsuivsuiv].p.x - pathways[kp].p.x) ;
v.x = f0 * pathways[kp].p.x + f1 * val + f2 * p0 + f3 * p1 ;
val = pathways[kpsuiv].p.y ;
p0 = 0.5f * (val - pathways[kpprec].p.y) ;
p1 = 0.5f * (pathways[kpsuivsuiv].p.y - pathways[kp].p.y) ;
v.y = f0 * pathways[kp].p.y + f1 * val + f2 * p0 + f3 * p1 ;
val = pathways[kpsuiv].p.z ;
p0 = 0.5f * (val - pathways[kpprec].p.z) ;
p1 = 0.5f * (pathways[kpsuivsuiv].p.z - pathways[kp].p.z) ;
v.z = f0 * pathways[kp].p.z + f1 * val + f2 * p0 + f3 * p1 ;
newpos = v;
if(!((fTrail - (i * iBezierPrecision + toto)) > iLength)) {
float c;
if(fTrail < iLength) {
c = 1.0f - ((fTrail - (i * iBezierPrecision + toto)) / fTrail);
} else {
c = 1.0f - ((fTrail - (i * iBezierPrecision + toto)) / (float)iLength);
}
float fsize = c;
float alpha = c - 0.2f;
if(alpha < 0.2f)
alpha = 0.2f;
c += frand2() * 0.1f;
if (c < 0) c = 0;
else if (c > 1) c = 1;
Color color = (fColor * (c * alpha)).to<u8>();
if(fsize < 0.5f)
fsize = fsize * 2 * 3;
else
fsize = (1.0f - fsize + 0.5f) * 2 * (3 * 0.5f);
float fs = fsize * 6 + rnd() * 0.3f;
float fe = fsize * 6 + rnd() * 0.3f;
Draw3DLineTex(lastpos, newpos, color, fs, fe);
}
Vec3f temp_vector = lastpos;
lastpos = newpos;
newpos = temp_vector;
}
}
Vec3f av = newpos - lastpos;
float bubu = getAngle(av.x, av.z, 0, 0);
float bubu1 = getAngle(av.x, av.y, 0, 0);
Vec3f stitepos = lastpos;
Anglef stiteangle;
stiteangle.setPitch(-degrees(bubu));
stiteangle.setYaw(0);
stiteangle.setRoll(-(degrees(bubu1)));
if(av.x < 0)
stiteangle.setRoll(stiteangle.getRoll() - 90);
if(av.x > 0)
stiteangle.setRoll(stiteangle.getRoll() + 90);
if(stiteangle.getRoll() < 0)
stiteangle.setRoll(stiteangle.getRoll() + 360.0f);
Color3f stitecolor;
if(spells[spellinstance].caster == 0 && cur_mr == 3) {
stitecolor.r = 1.f;
stitecolor.g = 0.f;
stitecolor.b = 0.2f;
} else {
stitecolor.r = 0.3f;
stitecolor.g = 0.3f;
stitecolor.b = 0.5f;
}
Vec3f stitescale = Vec3f_ONE;
if(smissile)
DrawEERIEObjEx(smissile, &stiteangle, &stitepos, &stitescale, stitecolor);
eCurPos = lastpos;
}
示例8: Render
void CMagicMissile::Render()
{
Vec3f lastpos, newpos;
Vec3f v;
if(ulCurrentTime >= ulDuration)
return;
RenderMaterial mat;
mat.setCulling(CullNone);
mat.setDepthTest(true);
mat.setBlendType(RenderMaterial::Additive);
if(tex_mm)
mat.setTexture(tex_mm);
if(bMove) {
float fOneOnDuration = 1.f / (float)(ulDuration);
fTrail = (ulCurrentTime * fOneOnDuration) * (iBezierPrecision + 2) * 5;
}
newpos = lastpos = pathways[0];
for(int i = 0; i < 5; i++) {
const Vec3f v1 = pathways[std::max(0, i - 1)];
const Vec3f v2 = pathways[i];
const Vec3f v3 = pathways[i + 1];
const Vec3f v4 = pathways[std::min(5, i + 2)];
for(int toto = 1; toto < iBezierPrecision; toto++) {
if(fTrail < i * iBezierPrecision + toto)
break;
float t = toto * (1.0f / iBezierPrecision);
v = glm::catmullRom(v1, v2, v3, v4, t);
newpos = v;
if(!((fTrail - (i * iBezierPrecision + toto)) > iLength)) {
float c;
if(fTrail < iLength) {
c = 1.0f - ((fTrail - (i * iBezierPrecision + toto)) / fTrail);
} else {
c = 1.0f - ((fTrail - (i * iBezierPrecision + toto)) / (float)iLength);
}
float fsize = c;
float alpha = c - 0.2f;
if(alpha < 0.2f)
alpha = 0.2f;
c += Random::getf(-0.1f, 0.1f);
c = glm::clamp(c, 0.f, 1.f);
Color color = (m_trailColor * (c * alpha)).to<u8>();
if(fsize < 0.5f)
fsize = fsize * 2 * 3;
else
fsize = (1.0f - fsize + 0.5f) * 2 * (3 * 0.5f);
float fs = fsize * 6 + Random::getf(0.f, 0.3f);
float fe = fsize * 6 + Random::getf(0.f, 0.3f);
Draw3DLineTexNew(mat, lastpos, newpos, color, color, fs, fe);
}
Vec3f temp_vector = lastpos;
lastpos = newpos;
newpos = temp_vector;
}
}
Vec3f av = newpos - lastpos;
float bubu = getAngle(av.x, av.z, 0, 0);
float bubu1 = getAngle(av.x, av.y, 0, 0);
eCurPos = lastpos;
Anglef stiteangle;
stiteangle.setPitch(-glm::degrees(bubu));
stiteangle.setYaw(0);
stiteangle.setRoll(-(glm::degrees(bubu1)));
if(av.x < 0)
stiteangle.setRoll(stiteangle.getRoll() - 90);
if(av.x > 0)
stiteangle.setRoll(stiteangle.getRoll() + 90);
if(stiteangle.getRoll() < 0)
stiteangle.setRoll(stiteangle.getRoll() + 360.0f);
Draw3DObject(smissile, stiteangle, eCurPos, Vec3f_ONE, m_projectileColor, mat);
}