Hi,
ich möchte einen Ikosaeder kontruieren, bei dem jede der 20 Flächen eine andere Farbe hat.
Problem: Egal, ob ich einen TriangleArray oder einen IndexedTriangleArray nutze -
ich kann (falls ich es richtg verstanden habe...) im Daten-Array nur soviele verschiedene Farben speichern, wie es Vertices gibt (nämlich 12).
Vermutlich deswegen wird folgendes mit einer IndexOutOfBounds-Exception und Verweis auf Zeile 84 quittiert:
Gibts hier eine schöne Lösung?.danke
ich möchte einen Ikosaeder kontruieren, bei dem jede der 20 Flächen eine andere Farbe hat.
Problem: Egal, ob ich einen TriangleArray oder einen IndexedTriangleArray nutze -
ich kann (falls ich es richtg verstanden habe...) im Daten-Array nur soviele verschiedene Farben speichern, wie es Vertices gibt (nämlich 12).
Vermutlich deswegen wird folgendes mit einer IndexOutOfBounds-Exception und Verweis auf Zeile 84 quittiert:
Java:
public class IcosahedronGeo extends TriangleArray {
Color3f red = new Color3f(1.0f, 0.0f, 0.0f);
Color3f green = new Color3f(0.0f, 1.0f, 0.0f);
Color3f blue = new Color3f(0.0f, 0.0f, 1.0f);
Color3f yellow = new Color3f(1.0f, 1.0f, 0.0f);
Color3f cyan = new Color3f(0.0f, 1.0f, 1.0f);
Color3f magenta = new Color3f(1.0f, 0.0f, 1.0f);
Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
Color3f grey = new Color3f(0.2f, 0.2f, 0.2f);
Color3f darkRed = new Color3f(0.2f, 0.0f, 0.0f);
Color3f brown = new Color3f(0.35f, 0.29f, 0.0f);
Color3f darkBrown = new Color3f(0.15f, 0.1f, 0.0f);
Color3f darkGrey = new Color3f(0.2f, 0.2f, 0.2f);
Color3f darkYellow = new Color3f(0.3f, 0.3f, 0.0f);
Color3f darkGreen = new Color3f(0.0f, 0.3f, 0.0f);
Color3f darkBlue = new Color3f(0.0f, 0.0f, 0.3f);
Color3f color1 = new Color3f(0.8f, 0.6f, 0.4f);
Color3f color2 = new Color3f(0.6f, 0.2f, 0.2f);
Color3f color3 = new Color3f(0.2f, 0.6f, 0.6f);
Color3f color4 = new Color3f(0.9f, 0.5f, 0.3f);
Point3d p0 = new Point3d(0, 0, 1);
Point3d p1 = new Point3d(0.894, 0, 0.447);
Point3d p2 = new Point3d(0.276, 0.851, 0.447);
Point3d p3 = new Point3d(-0.724, 0.526, 0.447);
Point3d p4 = new Point3d(-0.724, -0.526, 0.447);
Point3d p5 = new Point3d(0.276, -0.851, 0.447);
Point3d p6 = new Point3d(0.724, 0.526, -0.447);
Point3d p7 = new Point3d(-0.276, 0.851, -0.447);
Point3d p8 = new Point3d(-0.894, 0.000, -0.447);
Point3d p9 = new Point3d(-0.276, -0.851, -0.447);
Point3d p10 = new Point3d(0.724, -0.526, -0.447);
Point3d p11 = new Point3d(0.000, 0.000, -1.000);
Point3d[] vertices =
{p0,p1,p2,
p0,p2,p3,
p0,p3,p4,
p0,p4,p5,
p0,p5,p1,
p11,p6,p7,
p11,p7,p8,
p11,p8,p9,
p11,p9,p10,
p11,p10,p6,
p1,p2,p6,
p2,p3,p7,
p3,p4,p8,
p4,p5,p9,
p5,p1,p10,
p6,p7,p2,
p7,p8,p3,
p8,p9,p4,
p9,p10,p5,
p10,p6,p1};
Color3f[] colors =
{red,red,red,
green,green, green,
blue, blue,blue,
yellow,yellow,yellow,
cyan, cyan, cyan,
darkBrown,darkBrown,darkBrown,
magenta,magenta,magenta,
white,white,white,
black, black,black,
grey,grey,grey,
darkRed,darkRed,darkRed ,
brown, brown,brown,
darkGrey,darkGrey, darkGrey,
darkYellow,darkYellow,darkYellow,
darkGreen,darkGreen,darkGreen,
darkBlue,darkBlue,darkBlue,
color1,color1,color1,
color2,color2,color2,
color3,color3,
color4,color4,color4};
public IcosahedronGeo(){
super (12,TriangleArray.COORDINATES | TriangleArray.NORMALS |TriangleArray.COLOR_3);
setCoordinates(0, vertices);
setColors(0, colors);
}
}
Zuletzt bearbeitet: