本文整理汇总了C++中Vector4D::Array方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector4D::Array方法的具体用法?C++ Vector4D::Array怎么用?C++ Vector4D::Array使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector4D
的用法示例。
在下文中一共展示了Vector4D::Array方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: drawSatellite
/*
Desenare satelit
*/
int Satellite::drawSatellite(){
glNormal3f(0,1,0);
glTranslatef(posx, posy, posz);
//daca nu e de tip power up
if(bonus == false)
{
//daca nu explodeaza deseneaza cu culoarea obisnuita
if(explodes == false )
{
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,color);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, color);
}
//daca explodeaza se folosesc culorile pt explozie
if(explodes == true)
{
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient4f1.Array());
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse4f1.Array());
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular4f1.Array());
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess1);
}
//scalare
glScalef(Size-1, Size-1, Size-1);
//rotire in jurul axelor ox si oz
glRotatef(spin, 0, spin/2.0,0);
//setare tipa asteroid => icoshaedron/dodecahedron
if(type == ICOS)glutSolidIcosahedron();
else glutSolidDodecahedron();
//desenare inele satelit
glRotatef(90,1,0,0);
glRotatef(spin, 0, spin/2.0,0);
glutSolidTorus(0.05,2.2,20,20);
glutSolidTorus(0.05,2,20,20);
glutSolidTorus(0.05,1.8,20,20);
}
//satelit bonus; acelasi mod de desenare ca la satelitii normali
if(bonus == true)
{
if(explodes == false)
{
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,Vector4D(1,0,0,1).Array());
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Vector4D(1,0,0,1).Array());
glScalef(Size, Size, Size);
glutSolidSphere(0.9,20,20);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,Vector4D(0,0,1,1).Array());
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Vector4D(0,0,1,1).Array());
glRotatef(90,1,0,0);
glRotatef(spin, 0, spin/2.0,0);
glutSolidTorus(0.05,1.7,20,20);
glutSolidTorus(0.05,1.4,20,20);
glutSolidTorus(0.05,1.1,20,20);
}
if(explodes == true)
{
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient4f1.Array());
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse4f1.Array());
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular4f1.Array());
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess1);
glScalef(Size, Size, Size);
glutSolidSphere(0.9,20,20);
glRotatef(90,1,0,0);
glRotatef(spin, 0, spin/2.0,0);
glutSolidTorus(0.05,1.7,20,20);
glutSolidTorus(0.05,1.4,20,20);
glutSolidTorus(0.05,1.1,20,20);
}
}
time += 0.01;
//daca are loc explozia atunci nu se mai deplaseaza
if(explodes == false)
{
posx += (v0 * time) * dx/7.0;
posy += (v0 * time) * dy/7.0;
posz += (v0 * time ) * dz/7.0;
}
//daca satelitul debaseste spatiul de joc se reseteaza parametri
if(posx < 0 || posx > box ||
posy < 0 || posy > box ||
posz > box){
destroy();
return 1;
}
//.........这里部分代码省略.........