O'Reilly logo

Killer Game Programming in Java by Andrew Davison

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Creating the Scene

The novel parts of the scene creation carried out by WrapLathe3D are located in addLatheShapes(), which generates the lathe shapes on the checkerboard:

    TextureLoader texLd3 =  new TextureLoader("textures/water.jpg", null);
    Texture waterTex = texLd3.getTexture();

    double xsIn15[] = {0, 0.1, 0.7, 0};
    double ysIn15[] = {0, 0.1, 1.5, 2};
    LatheShape3D ls2 = new LatheShape3D( xsIn15, ysIn15, waterTex);
    displayLathe(ls2, -3.5f, -5.0f, "drip");

This particular bit of code produces the water globule, shown in Figure 17-3.

Water globule

Figure 17-3. Water globule

The coordinates for the lathe curve are supplied as two arrays: one for the x-values and one for the y-values. Figure 17-4 shows the four coordinates plotted against the x- and y-axes.

Coordinates for the water globule

Figure 17-4. Coordinates for the water globule

Tip

These coordinates are ordered by increasing the y-value, indicated by the numbered circles in the figure.

The x- and y-values must be greater than or equal to 0, and the first y-value must be 0. These restrictions simplify the calculation of the shape's height, which is used when mapping a texture over the shape's surface. Since the shape always starts at 0 on the y-axis, and there are no negative values, the shape's height is the largest y-value. An x-value may use a negative sign, but this has a special ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required