コード例 #1
0
ファイル: RectangularBox.java プロジェクト: pgleeson/TestArea
  public void addLinesAroundRegion(TransformGroup tg) {
    Color3f x = new Color3f(Color.green.brighter().brighter());
    Color3f y = new Color3f(Color.yellow.brighter().brighter());
    Color3f z = new Color3f(Color.red.brighter().brighter());

    LineArray wireframe = new LineArray(12 * 2, GeometryArray.COORDINATES | GeometryArray.COLOR_3);

    wireframe.setCapability(LineArray.ALLOW_COLOR_WRITE);
    wireframe.setCapability(LineArray.ALLOW_COORDINATE_READ);
    wireframe.setCapability(LineArray.ALLOW_COUNT_READ);
    ArrayList<Point3f> vx = getVertices();

    // Add lines parallel to x
    wireframe.setCoordinate(0, vx.get(0));
    wireframe.setCoordinate(1, vx.get(2));
    wireframe.setCoordinate(2, vx.get(1));
    wireframe.setCoordinate(3, vx.get(3));

    wireframe.setCoordinate(4, vx.get(4));
    wireframe.setCoordinate(5, vx.get(6));
    wireframe.setCoordinate(6, vx.get(5));
    wireframe.setCoordinate(7, vx.get(7));

    for (int i = 0; i < 8; i++) wireframe.setColor(i, x);

    // Add lines parallel to y
    wireframe.setCoordinate(8, vx.get(0));
    wireframe.setCoordinate(9, vx.get(4));
    wireframe.setCoordinate(10, vx.get(1));
    wireframe.setCoordinate(11, vx.get(5));

    wireframe.setCoordinate(12, vx.get(2));
    wireframe.setCoordinate(13, vx.get(6));
    wireframe.setCoordinate(14, vx.get(3));
    wireframe.setCoordinate(15, vx.get(7));

    for (int i = 8; i < 16; i++) wireframe.setColor(i, y);

    // Add lines parallel to z
    wireframe.setCoordinate(16, vx.get(0));
    wireframe.setCoordinate(17, vx.get(1));
    wireframe.setCoordinate(18, vx.get(2));
    wireframe.setCoordinate(19, vx.get(3));
    wireframe.setCoordinate(20, vx.get(4));
    wireframe.setCoordinate(21, vx.get(5));
    wireframe.setCoordinate(22, vx.get(6));
    wireframe.setCoordinate(23, vx.get(7));

    for (int i = 16; i < 24; i++) wireframe.setColor(i, z);

    Shape3D shape = new Shape3D(wireframe);
    tg.addChild(shape);
  }