Cylinder tekenen

Pagina: 1
Acties:
  • 60 views sinds 30-01-2008

  • Thunderhawk
  • Registratie: Mei 2002
  • Laatst online: 16:55
Hallo lui,

Voor school ben ik bezig met Java3d. Nou probeer ik al de hele middag een cylinder te tekenen (en ja, ik weet dat er klassen voor zijn, maar die mogen we dus niet gebruiken), en krijg dat dus met geen mogelijkheid voor elkaar. Misschien kan iemand me even in de juiste richting duwen want ik zie het niet meer zitten :(

Dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package opdrachten;

// De benodigde klassen
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;

import javax.media.j3d.Appearance;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.ColoringAttributes;
import javax.media.j3d.Geometry;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.TriangleStripArray;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseWheelZoom;
import com.sun.j3d.utils.universe.SimpleUniverse;

// Java3D1_1 rendert een simpele geroteerde kubus.

public class Java3D1_1 extends Applet {
    public BranchGroup createSceneGraph() { // Creeer de wortel van de branch graph
        BranchGroup objRoot = new BranchGroup();

        TransformGroup total = new TransformGroup();
        total.addChild(new Cylinder(0.0f, 0.0f, 1.0f));

        objRoot.addChild(total);

        // Laat Java optimalisaties uitvoeren op deze branch graph
        objRoot.compile();

        return objRoot;
    }// einde van de CreateSceneGraph methode

    public void AddMouse(TransformGroup tg) {
        tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

        MouseRotate mouse = new MouseRotate();
        mouse.setTransformGroup(tg);
        mouse.setSchedulingBounds(new BoundingSphere());
        MouseTranslate mouse2 = new MouseTranslate();
        mouse2.setTransformGroup(tg);
        mouse2.setSchedulingBounds(new BoundingSphere());
        mouse2.setFactor(0.005);
        MouseWheelZoom mouse3 = new MouseWheelZoom(MouseWheelZoom.INVERT_INPUT);
        mouse3.setTransformGroup(tg);
        mouse3.setSchedulingBounds(new BoundingSphere());

        tg.addChild(mouse);
        tg.addChild(mouse2);
        tg.addChild(mouse3);
    }

    public Appearance GetColorAppearance(float r, float g, float b) {
        Appearance uiterlijk = new Appearance();
        ColoringAttributes uiterlijkCA = new ColoringAttributes();
        uiterlijkCA.setColor(r, g, b);
        uiterlijk.setColoringAttributes(uiterlijkCA);
        return uiterlijk;
    }

    class Cylinder extends Shape3D {
        public Cylinder(float r, float g, float b) {
            this.setAppearance(GetColorAppearance(r, g, b));
            this.setGeometry(GetGeometry());
        }

        public Geometry GetGeometry() {

            TriangleStripArray tsa;

            int numPoints = 4;
            int stripCounts[] = { 8 };

            float radius = 0.4f;
            float x, y;
            float z = 0.4f;

            double a = 0;

            Point3f coords1[] = new Point3f[numPoints];
            Point3f coords2[] = new Point3f[numPoints];
            Point3f coordsTotal[] = new Point3f[numPoints * 2];

            // Bereken coordinaten van de 2 circels
            for (int i = 0; i < numPoints; a = 2 * Math.PI / ++i) {
                x = (float) (radius * Math.cos(a));
                y = (float) (radius * Math.sin(a));

                coords1[i] = new Point3f(x, y, z);
                coords2[i] = new Point3f(x, y, -z);
            }

            // Zet alle punten op de correcte manier in coordsTotal.
            for (int i = 0; i < numPoints; i++) {
                coordsTotal[i * 2] = coords1[i];

                // Schuift alle indices 1 op, zodat ze goed in de coordTotal array komen. N.B. coords2[laatste] wordt coordsTotal[eerste]
                if (i != 0)
                    coordsTotal[i * 2 + 1] = coords2[i - 1];
                else
                    coordsTotal[i * 2 + 1] = coords2[coords2.length - 1];
            }

            tsa = new TriangleStripArray(8, TriangleStripArray.COORDINATES,
                stripCounts);

            tsa.setCoordinates(0, coordsTotal);

            return tsa;
        } // end of method yoyoGeometry in class Yoyo
    }

    public Java3D1_1() {
        setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse
            .getPreferredConfiguration();
        Canvas3D canvas3D = new Canvas3D(config);
        add("Center", canvas3D);

        // Creeer een scene gebaseerd op de createSceneGraph methode
        BranchGroup scene = createSceneGraph();

        // De SimpleUniverse klasse bevat alle elementen die nodig
        // zijn voor de rendering van een virtuele wereld
        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);

        // Het volgende plaatst het ViewPlatform een beetje naar achteren,
        // zodat het object zichtbaar is.
        simpleU.getViewingPlatform().setNominalViewingTransform();

        // Voeg de scene toe aan de virtuele wereld
        simpleU.addBranchGraph(scene);
    } // einde van Java3D1_1 (constructor)

    // Het volgende laat dit programma zowel als een applicatie
    // als een applet uitvoeren

    public static void main(String[] args) {
        Frame frame = new MainFrame(new Java3D1_1(), 256, 256);
    } // einde van main (methode van Java3D1_1)

} // einde van klasse Java3D1_1

[ Voor 11% gewijzigd door Thunderhawk op 08-04-2007 18:32 ]


Verwijderd

Lekker duidelijk hoor, je plempt wat code neer, je neemt niet de moeite om alleen de relevante code te posten, vertelt er niet bij wat het resultaat is van je huidige code (bv. een screenshot om te laten zien wat je krijgt, of een kleine omschrijving van wat er fout gaat, zou handig zijn) en je post het ook nog eens in het verkeerde forum.

Aan het commentaar te zien heb je verder ook gedeeltelijk code zitten copy/pasten en weet je blijkbaar niet echt waar je mee bezig bent.

Kan je misschien wat duidelijker zijn? Wat heb je zelf al geprobeerd? Waarom krijg je het met geen mogelijkheid voor elkaar? Wat gebeurt er wanneer je de code uitvoert? Begrijp je wat je hebt getypt?

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 18-01 18:46

XangadiX

trepanatie is zóó kinderachtig

wat aardbei zei, een beetje duidelijker je probleem formuleren, wat heb je gevonden op bijvoorbeeld google en wat heb je zelf al geprobeert.

Stoer; Marduq


Dit topic is gesloten.