# Achsenkreuzszene



## andy0566 (8. Nov 2004)

*hat vielleicht einer eine Idee wie man in einer Achsenkreuzszene(X,Y,Z) am "positiven" Ende der Linien jeweils eine einfache Pfeilspitze modellieren kann?*


```
import java.applet.Applet;
import java.awt.*;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.vp.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;

import javax.media.j3d.*;
import javax.vecmath.*;

public class LinienSample extends Applet{
    public BranchGroup createSceneGraph(){
        BranchGroup objRoot=new BranchGroup();
        
        Background bg=new Background(new Color3f(0.4f,0.2f,0.8f));
        bg.setApplicationBounds(new BoundingSphere());
        objRoot.addChild(bg);
        
        final Color3f red=new Color3f(1.0f,0.0f,0.0f); 
        final Color3f green=new Color3f(0.0f,1.0f,0.0f);
        final Color3f blue=new Color3f(0.0f,0.0f,1.0f);
        
        LineArray axisX=new LineArray(2,LineArray.COORDINATES);
        axisX.setCoordinate(0,new Point3f(-1.0f,0.0f,0.0f));
        axisX.setCoordinate(1,new Point3f(1.0f,0.0f,0.0f));
        TransformGroup tg1=new TransformGroup();
        Shape3D s3d=new Shape3D(axisX);
        
        Appearance app=new Appearance();
        
        Material m=new Material();
        m.setEmissiveColor(red);
        app.setMaterial(m);
        app.setTransparencyAttributes(new TransparencyAttributes(TransparencyAttributes.NICEST,0.4f));
        s3d.setAppearance(app);
        tg1.addChild(new Box(0.2f,0.3f,0.4f,app));
        tg1.addChild(s3d);
        objRoot.addChild(tg1);
        
        LineArray axisY=new LineArray(2,LineArray.COORDINATES|LineArray.COLOR_3);
        axisY.setCoordinate(0,new Point3f(0.0f,-1.0f,0.0f));
        axisY.setCoordinate(1,new Point3f(0.0f,1.0f,0.0f));
        axisY.setColor(0,green);
        axisY.setColor(1,blue);
        objRoot.addChild(new Shape3D(axisY));
        
        LineArray axisZ=new LineArray(2,LineArray.COORDINATES|LineArray.COLOR_3);
        axisZ.setCoordinate(0,new Point3f(0.0f,0.0f,-1.0f));
        axisZ.setCoordinate(1,new Point3f(0.0f,0.0f,1.0f));
        axisZ.setColor(0,blue);
        axisZ.setColor(1,red);
        objRoot.addChild(new Shape3D(axisZ));
        
        return objRoot;
    }
    public LinienSample(){
        setLayout(new BorderLayout());
        GraphicsConfiguration config=
            SimpleUniverse.getPreferredConfiguration();
        Canvas3D c=new Canvas3D(config);
        add("Center",c);
        BranchGroup scene=createSceneGraph();
        scene.compile();
        SimpleUniverse su=new SimpleUniverse(c);
        su.getViewingPlatform().setNominalViewingTransform();
        OrbitBehavior orbit=new OrbitBehavior(c,OrbitBehavior.REVERSE_ALL);
        orbit.setSchedulingBounds(new BoundingSphere());
        su.getViewingPlatform().setViewPlatformBehavior(orbit);
        su.addBranchGraph(scene);
        
    }
    public static void main(String[ ]args){
        new MainFrame(new LinienSample(),400,300);
    }
}
```


----------



## Kerberus (8. Nov 2004)

Wie wär es mit einem Kegel?
(Habe keine Ahnung von Java3D, aber das müsste sicher zu realisieren sein.)


----------



## 0xdeadbeef (8. Nov 2004)

Ne Pyramide wäre sicher "preiswerter".


----------



## Illuvatar (8. Nov 2004)

*pyramidesuch*

Mit nem Kegel müsste das eigentlich gut gehen, bissle simpler (im Aussehen, vom Programmieraufwand dürfte es aufs gleiche rauskommen) wäre noch ein LineArray mit vier Linien.


----------



## 0xdeadbeef (8. Nov 2004)

Naja, wenn's keine Pyramide gibt, kann man ja eine aus 4 Dreiecken basteln.


----------



## Illuvatar (8. Nov 2004)

Das wird dann aber schon wieder bissle komplizierter, da braucht man dann wohl schon wieder ein IndexedTriangleArray.


----------



## 0xdeadbeef (8. Nov 2004)

Ok, ok, dann macht halt euren Kegel


----------

