Пример #1
0
/* Transform body normals, draw front */
void drawbody(Matrix Rot)
{
    double bodyScale = 1.0/theBodyRadius;
    register int i, j, k, n;

    pushmatrix();
    scale(bodyScale, bodyScale, bodyScale);
    for (j=0; j<bodyNFaces; j++) {
        double dot = Rot[X][Z]*theFaceNormals[j][X]
                     +Rot[Y][Z]*theFaceNormals[j][Y]
                     +Rot[Z][Z]*theFaceNormals[j][Z];
        if (dot>0.0) {	  /* Front-facing polygon, so draw it */
            short shadedColor[3];
            dot += 0.4;
            if (dot>1.0) dot = 1.0;
            shadedColor[0] = dot*theFaceColors[j][0];
            shadedColor[1] = dot*theFaceColors[j][1];
            shadedColor[2] = dot*theFaceColors[j][2];
            n = theFaceVertices[j][0];
            RGBcolor(shadedColor[0], shadedColor[1], shadedColor[2]);
            bgnpolygon();
            for (k=1; k<=n; k++) {
                i = theFaceVertices[j][k];
                v4f(thePoints[i]);
            }
            endpolygon();
        }
    }
    popmatrix();
}
Пример #2
0
TEST(Vector4, Addition) {
  float fv[4] = { 1.0f, 2.0f, 3.0f, 4.0f };
  FasTC::Vec4f v4f (fv);

  double dv[4] = { 4.3, -10.2, 0.0f, -22.0f };
  FasTC::Vec4d v3d (dv);

  EXPECT_NEAR((v4f + v3d).X(), 5.3, kEpsilon);
  EXPECT_NEAR((v4f + v3d).Y(), -8.2, kEpsilon);
  EXPECT_NEAR((v4f + v3d).Z(), 3.0, kEpsilon);
  EXPECT_NEAR((v4f + v3d).W(), -18.0, kEpsilon);
}
Пример #3
0
TEST(Vector4, Accessors) {
  float fv[4] = { 1.0f, 2.0f, 3.0f, 4.0f };
  FasTC::Vec4f v4f (fv);
  EXPECT_EQ(v4f.X(), 1.0f);
  EXPECT_EQ(v4f.Y(), 2.0f);
  EXPECT_EQ(v4f.Z(), 3.0f);
  EXPECT_EQ(v4f.W(), 4.0f);

  v4f.X() = 5.0f;
  v4f.Y() = 6.0f;
  v4f.Z() = 7.0f;
  v4f.W() = 8.0f;

  EXPECT_EQ(v4f.X(), 5.0f);
  EXPECT_EQ(v4f.Y(), 6.0f);
  EXPECT_EQ(v4f.Z(), 7.0f);
  EXPECT_EQ(v4f.W(), 8.0f);
}