Wincenty
PCGHX-HWbot-Member (m/w)
Hallo,
ich habe als Hausaufgabe ein Wire 3D Model zu erstellen und habe ein Schwert zusammengeschustert.
Nun da ich die Dimensionen für das WireFrameViewer etwas groß genommen hat und somit bei bestimmten Blickwinkel absolute Desorientiertheit und Chaos herrschen wollte ich das Object in einzelne Segmente zerlegen und dann mittels My3DObject zusammensetzen lassen im Viewer.
Hier der WireFrameViewer dann ich vom Prof. bekommen hab:
Hier ist mein Komplettes Model:
Hier sind die einzelnen Segmente:
1. Die Klinge: -Koordinate 0,0,0 befindet sich in der "Mitte" der Klinge
2. Der Griff: -Koordinate 0,0,0 befindet sich am Ansatz der Klinge beim Handschutz
und last but not least das 3.
Das Gegengewicht: -Koordianete 0,0,0 ist im kleinen Achteckt am vorderen Teil des Gewichts
Die Frage lautet:
Wie muss My3DObject geschrieben werden, damit es die einzelnen Teile an den richtigen Stellen zusammensetzt?
Es ist kein muss, da ich meine Aufgabe ein 3D WireModel bereits gemacht hab, nur will ich aus eigenem Interesse daraus zusammensetzbare Komponenten machen.
ich habe als Hausaufgabe ein Wire 3D Model zu erstellen und habe ein Schwert zusammengeschustert.
Nun da ich die Dimensionen für das WireFrameViewer etwas groß genommen hat und somit bei bestimmten Blickwinkel absolute Desorientiertheit und Chaos herrschen wollte ich das Object in einzelne Segmente zerlegen und dann mittels My3DObject zusammensetzen lassen im Viewer.
Hier der WireFrameViewer dann ich vom Prof. bekommen hab:
Code:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class WireFrameViewer extends Applet implements MouseListener, MouseMotionListener {
int width, height;
int mx, my; // the most recently recorded mouse coordinates
Image backbuffer;
Graphics backg;
int azimuth = 180, elevation = 30;
My3DObject e = new My3DObject(2); //Hier muss My3DObject geändert werden, wenn man eines des Teile sehen will
public void init() {
this.setSize(new Dimension(1000,1000));
width = getSize().width;
height = getSize().height;
backbuffer = createImage( width, height );
backg = backbuffer.getGraphics();
drawWireframe( backg );
addMouseListener( this );
addMouseMotionListener( this );
}
void drawWireframe( Graphics g ) {
// compute coefficients for the projection
double theta = Math.PI * azimuth / 180.0;
double phi = Math.PI * elevation / 180.0;
float cosT = (float)Math.cos( theta ), sinT = (float)Math.sin( theta );
float cosP = (float)Math.cos( phi ), sinP = (float)Math.sin( phi );
float cosTcosP = cosT*cosP, cosTsinP = cosT*sinP,
sinTcosP = sinT*cosP, sinTsinP = sinT*sinP;
// project e.vertices onto the 2D viewport
Point[] points;
points = new Point[ e.vertices.length ];
int j;
int scaleFactor = width/4;
float near = 3; // distance from eye to near plane
float nearToObj = 1.5f; // distance from near plane to center of object
for ( j = 0; j < e.vertices.length; ++j ) {
g.setColor(new Color(j));
//System.out.println(j+" "+e.vertices[j]);
float x0 = e.vertices[j].x;
float y0 = e.vertices[j].y;
float z0 = e.vertices[j].z;
System.out.println("Coord"+j+" "+x0+" "+y0+" "+z0);
// compute an orthographic projection
float x1 = cosT*x0 + sinT*z0;
float y1 = -sinTsinP*x0 + cosP*y0 + cosTsinP*z0;
// now adjust things to get a perspective projection
float z1 = cosTcosP*z0 - sinTcosP*x0 - sinP*y0;
x1 = x1*near/(z1+near+nearToObj);
y1 = y1*near/(z1+near+nearToObj);
// the 0.5 is to round off when converting to int
points[j] = new Point(
(int)(width/2 + scaleFactor*x1 + 0.5),
(int)(height/2 - scaleFactor*y1 + 0.5)
);
}
// draw the wireframe
g.setColor(Color.BLACK);
g.fillRect( 0, 0, width, height );
g.setColor(Color.RED);
g.fillRect(0,0,30,20);
g.setFont(new Font("Courier", 10,10));
g.setColor(Color.BLACK);
g.drawString("Save", 0, 10);
g.setColor(Color.GREEN);
g.fillRect(width-30,0,30,20);
g.setFont(new Font("Courier", 10,10));
g.setColor(Color.BLACK);
g.drawString("Load", width-30, 10);
g.setColor( Color.white );
for ( j = 0; j < e.edges.length; ++j ) {
// g.setColor(new Color(j*1000));
try{
System.out.println("WF"+j+" "+e.edges[j].a +" "+e.edges[j].b);
g.drawLine(
points[ e.edges[j].a ].x, points[ e.edges[j].a ].y,
points[ e.edges[j].b ].x, points[ e.edges[j].b ].y
);}
catch (NullPointerException e ){}
catch (ArrayIndexOutOfBoundsException e){}
}
}
public void mouseEntered( MouseEvent e ) { }
public void mouseExited( MouseEvent e ) { }
public void mouseClicked( MouseEvent e ) {
}
public void mousePressed( MouseEvent e ) {
mx = e.getX();
my = e.getY();
e.consume();
}
public void mouseReleased( MouseEvent e ) { }
public void mouseMoved( MouseEvent e ) { }
public void mouseDragged( MouseEvent e ) {
// get the latest mouse position
int new_mx = e.getX();
int new_my = e.getY();
// adjust angles according to the distance travelled by the mouse
// since the last event
azimuth -= new_mx - mx;
elevation += new_my - my;
// update the backbuffer
drawWireframe( backg );
// update our data
mx = new_mx;
my = new_my;
repaint();
e.consume();
}
public void update( Graphics g ) {
g.drawImage( backbuffer, 0, 0, this );
showStatus("Elev: "+elevation+" deg, Azim: "+azimuth+" deg");
}
public void paint( Graphics g ) {
update( g );
}
}
Hier ist mein Komplettes Model:
Code:
public class My3DObject {
P3D [] vertices;
Edge[] edges;
/*
Die extremen Größen des Schwertes verusachen bei bestimmten Blickwinkeln linien die nicht sein sollten,
wenn man also die Länge der Klingte von 3*e verkleinert zu e passiert es kaum noch
*/
public My3DObject(float seite) {
vertices = new P3D[58];
edges = new Edge[111];
float c = seite/8;
float d = seite/16;
float e = seite;
float f = seite/32;
float g = seite/64;
float h = seite/4;
vertices[0] = new P3D (0,d,-e); //Klinge
vertices[1] = new P3D (0,-d,-e);
vertices[2] = new P3D (c,0,-e);
vertices[3] = new P3D (-c,0,-e);
vertices[4] = new P3D (0,d,3*e-c); //Falls das Schwert zu lang sein sollte einfach bei Vertices 4, 5, 6, 7, 8 die Länge 3*e durch e ersetzen
vertices[5] = new P3D (0,-d,3*e-c);
vertices[6] = new P3D (c,0,3*e);
vertices[7] = new P3D (-c,0,3*e);
vertices[8] = new P3D (0,0,(3*e+2*c)); //Spitze der Klinge
vertices[9] = new P3D (-(c*3),d-f,-e); //Handschutz links front
vertices[10] = new P3D (-(c*3),-(d-f),-e);
vertices[11] = new P3D (0,d+f,-e);//Handschutz mitte front
vertices[12] = new P3D (0,-(d+f),-e);
vertices[13] = new P3D (c*3,d-f,-e);//Handschutz rechts front
vertices[14] = new P3D (c*3,-(d-f),-e);
vertices[15] = new P3D (-(c*3+g),d-f,-(e+g)); //Handschutz links mitte
vertices[16] = new P3D (-(c*3+g),-(d-f),-(e+g));
vertices[17] = new P3D (0,d+f+f,-(e+g));//Handschutz mitte mitte
vertices[18] = new P3D (0,-(d+f+f),-(e+g));
vertices[19] = new P3D (c*3+g,d-f,-(e+g));//Handschutz rechts mitte
vertices[20] = new P3D (c*3+g,-(d-f),-(e+g));
vertices[21] = new P3D (-(c*3),d-f,-(e+f)); //Handschutz links hinten
vertices[22] = new P3D (-(c*3),-(d-f),-(e+f));
vertices[23] = new P3D (0,d+f,-(e+f));//Handschutz mitte hinten
vertices[24] = new P3D (0,-(d+f),-(e+f));
vertices[25] = new P3D (c*3,d-f,-(e+f));//Handschutz rechts hinten
vertices[26] = new P3D (c*3,-(d-f),-(e+f));
vertices[27] = new P3D ((-(c-f))/3,(2*c)/3,-(e+f)); // Griffachteck vorne
vertices[28] = new P3D ((c-f)/3,(2*c)/3,-(e+f));
vertices[29] = new P3D ((2*c)/3,(c-f)/3,-(e+f));
vertices[30] = new P3D ((2*c)/3,(-(c-f))/3,-(e+f));
vertices[31] = new P3D ((c-f)/3,(-(2*c))/3,-(e+f));
vertices[32] = new P3D ((-(c-f))/3,(-(2*c))/3,-(e+f));
vertices[33] = new P3D ((-(2*c))/3,(-(c-f))/3,-(e+f));
vertices[34] = new P3D ((-(2*c))/3,(c-f)/3,-(e+f));
vertices[35] = new P3D ((-(c-f))/3,(2*c)/3,-(2*e+f)); // Griffachteck hinten
vertices[36] = new P3D ((c-f)/3,(2*c)/3,-(2*e+f));
vertices[37] = new P3D ((2*c)/3,(c-f)/3,-(2*e+f));
vertices[38] = new P3D ((2*c)/3,(-(c-f))/3,-(2*e+f));
vertices[39] = new P3D ((c-f)/3,(-(2*c))/3,-(2*e+f));
vertices[40] = new P3D ((-(c-f))/3,(-(2*c))/3,-(2*e+f));
vertices[41] = new P3D ((-(2*c))/3,(-(c-f))/3,-(2*e+f));
vertices[42] = new P3D ((-(2*c))/3,(c-f)/3,-(2*e+f));
vertices[43] = new P3D ((-(c-f))/2,c,-(2*e+d)); // Gegengewichtachteck
vertices[44] = new P3D ((c-f)/2,c,-(2*e+d));
vertices[45] = new P3D (c,(c-f)/2,-(2*e+d));
vertices[46] = new P3D (c,(-(c-f))/2,-(2*e+d));
vertices[47] = new P3D ((c-f)/2,-c,-(2*e+d));
vertices[48] = new P3D ((-(c-f))/2,-c,-(2*e+d));
vertices[49] = new P3D (-c,(-(c-f))/2,-(2*e+d));
vertices[50] = new P3D (-c,(c-f)/2,-(2*e+d));
vertices[51] = new P3D (h,0,-(2*e+d+f)); // Gegengewichtsechseck
vertices[52] = new P3D (c,h-d,-(2*e+d+f));
vertices[53] = new P3D (-c,h-d,-(2*e+d+f));
vertices[54] = new P3D (-h,0,-(2*e+d+f));
vertices[55] = new P3D (-c,-(h-d),-(2*e+d+f));
vertices[56] = new P3D (c,-(h-d),-(2*e+d+f));
vertices[57] = new P3D (0,0,-(3*e)); //Gegengewichts
edges [0] = new Edge (0,2); //Klinge
edges [1] = new Edge (0,3);
edges [2] = new Edge (1,2);
edges [3] = new Edge (1,3);
edges [4] = new Edge (4,6);
edges [5] = new Edge (4,7);
edges [6] = new Edge (5,6);
edges [7] = new Edge (5,7);
edges [8] = new Edge (0,4);
edges [9] = new Edge (1,5);
edges [10] = new Edge (2,6);
edges [11] = new Edge (3,7);
edges [12] = new Edge (4,8); //Spitze der Klinge
edges [13] = new Edge (5,8);
edges [14] = new Edge (6,8);
edges [15] = new Edge (7,8);
edges [16] = new Edge (9,11); //Handschutzfront
edges [17] = new Edge (11,13);
edges [18] = new Edge (13,14);
edges [19] = new Edge (14,12);
edges [20] = new Edge (12,10);
edges [21] = new Edge (10,9);
edges [22] = new Edge (15,17); //Handschutz mitte
edges [23] = new Edge (17,19);
edges [24] = new Edge (19,20);
edges [25] = new Edge (20,18);
edges [26] = new Edge (18,16);
edges [27] = new Edge (16,15);
edges [28] = new Edge (9,15); //Handschutz front-mitte verbindung
edges [29] = new Edge (10,16);
edges [30] = new Edge (11,17);
edges [31] = new Edge (12,18);
edges [32] = new Edge (13,19);
edges [33] = new Edge (14,20);
edges [34] = new Edge (21,15); //Handschutz mitte-hinten verbindung
edges [35] = new Edge (22,16);
edges [36] = new Edge (23,17);
edges [37] = new Edge (24,18);
edges [38] = new Edge (25,19);
edges [39] = new Edge (26,20);
edges [40] = new Edge (21,23); // Handschutz hinten
edges [41] = new Edge (23,25);
edges [42] = new Edge (25,26);
edges [43] = new Edge (26,24);
edges [44] = new Edge (24,22);
edges [45] = new Edge (22,21);
edges [46] = new Edge (27,28); //Griffachteckvorne
edges [47] = new Edge (28,29);
edges [48] = new Edge (29,30);
edges [49] = new Edge (30,31);
edges [50] = new Edge (31,32);
edges [51] = new Edge (32,33);
edges [52] = new Edge (33,34);
edges [53] = new Edge (34,27);
edges [54] = new Edge (35,36); //Griffachteckhinten
edges [55] = new Edge (36,37);
edges [56] = new Edge (37,38);
edges [57] = new Edge (38,39);
edges [58] = new Edge (39,40);
edges [59] = new Edge (40,41);
edges [60] = new Edge (41,42);
edges [61] = new Edge (42,35);
edges [63] = new Edge (27,42); //Griffachteck verbindung vorne hinten, die verdrehung der Verstrebungen der Achtecken im Griff ist gewollt
edges [64] = new Edge (28,35);
edges [65] = new Edge (29,36);
edges [66] = new Edge (30,37);
edges [67] = new Edge (31,38);
edges [68] = new Edge (32,39);
edges [69] = new Edge (33,40);
edges [70] = new Edge (34,41);
edges [71] = new Edge (43,44); //Gegengewichtachteck
edges [72] = new Edge (44,45);
edges [73] = new Edge (45,46);
edges [74] = new Edge (46,47);
edges [75] = new Edge (47,48);
edges [76] = new Edge (48,49);
edges [77] = new Edge (49,50);
edges [78] = new Edge (50,43);
edges [79] = new Edge (35,43); //Verbindung Griffende mit Gegengewicht
edges [80] = new Edge (36,44);
edges [81] = new Edge (37,45);
edges [82] = new Edge (38,46);
edges [83] = new Edge (39,47);
edges [84] = new Edge (40,48);
edges [85] = new Edge (41,49);
edges [86] = new Edge (42,50);
edges [87] = new Edge (51,52); // Gegengewichtssechseck
edges [88] = new Edge (52,53);
edges [89] = new Edge (53,54);
edges [90] = new Edge (54,55);
edges [91] = new Edge (55,56);
edges [92] = new Edge (56,51);
edges [93] = new Edge (44,52); //Gegengewichtsverbindung von Acht- zu Sechseck
edges [94] = new Edge (45,52);
edges [95] = new Edge (45,51);
edges [96] = new Edge (46,51);
edges [97] = new Edge (46,56);
edges [98] = new Edge (47,56);
edges [99] = new Edge (48,55);
edges [100] = new Edge (49,55);
edges [101] = new Edge (49,54);
edges [102] = new Edge (50,54);
edges [103] = new Edge (50,53);
edges [104] = new Edge (43,53);
edges [105] = new Edge (51,57); //Gegengewicht-Spitze
edges [106] = new Edge (52,57);
edges [107] = new Edge (53,57);
edges [108] = new Edge (54,57);
edges [109] = new Edge (55,57);
edges [110] = new Edge (56,57);
}
}
Hier sind die einzelnen Segmente:
1. Die Klinge: -Koordinate 0,0,0 befindet sich in der "Mitte" der Klinge
Code:
public class My3DObjectKlinge {
P3D [] vertices;
Edge[] edges;
public My3DObjectKlinge(float seite) {
vertices = new P3D[9];
edges = new Edge[16];
float c = seite/8;
float d = seite/16;
float e = seite;
vertices[0] = new P3D (0,d,-(2*e)); //Klinge
vertices[1] = new P3D (0,-d,-(2*e));
vertices[2] = new P3D (c,0,-(2*e));
vertices[3] = new P3D (-c,0,-(2*e));
vertices[4] = new P3D (0,d,2*e-c);
vertices[5] = new P3D (0,-d,2*e-c);
vertices[6] = new P3D (c,0,2*e);
vertices[7] = new P3D (-c,0,2*e);
vertices[8] = new P3D (0,0,(2*e+2*c)); //Spitze der Klinge
edges [0] = new Edge (0,2); //Klinge
edges [1] = new Edge (0,3);
edges [2] = new Edge (1,2);
edges [3] = new Edge (1,3);
edges [4] = new Edge (4,6);
edges [5] = new Edge (4,7);
edges [6] = new Edge (5,6);
edges [7] = new Edge (5,7);
edges [8] = new Edge (0,4);
edges [9] = new Edge (1,5);
edges [10] = new Edge (2,6);
edges [11] = new Edge (3,7);
edges [12] = new Edge (4,8); //Spitze der Klinge
edges [13] = new Edge (5,8);
edges [14] = new Edge (6,8);
edges [15] = new Edge (7,8);
}
}
2. Der Griff: -Koordinate 0,0,0 befindet sich am Ansatz der Klinge beim Handschutz
Code:
public class My3DObjectGriff {
P3D [] vertices;
Edge[] edges;
public My3DObjectGriff(float seite) {
vertices = new P3D[34];
edges = new Edge[54];
float c = seite/8;
float d = seite/16;
float e = seite;
float f = seite/32;
float g = seite/64;
vertices[0] = new P3D (-(c*3),d-f,0); //Handschutz links front
vertices[1] = new P3D (-(c*3),-(d-f),0);
vertices[2] = new P3D (0,d+f,0);//Handschutz mitte front
vertices[3] = new P3D (0,-(d+f),0);
vertices[4] = new P3D (c*3,d-f,0);//Handschutz rechts front
vertices[5] = new P3D (c*3,-(d-f),0);
vertices[6] = new P3D (-(c*3+g),d-f,g); //Handschutz links mitte
vertices[7] = new P3D (-(c*3+g),-(d-f),g);
vertices[8] = new P3D (0,d+f+f,g);//Handschutz mitte mitte
vertices[9] = new P3D (0,-(d+f+f),g);
vertices[10] = new P3D (c*3+g,d-f,g);//Handschutz rechts mitte
vertices[11] = new P3D (c*3+g,-(d-f),g);
vertices[12] = new P3D (-(c*3),d-f,f); //Handschutz links hinten
vertices[13] = new P3D (-(c*3),-(d-f),f);
vertices[14] = new P3D (0,d+f,f);//Handschutz mitte hinten
vertices[15] = new P3D (0,-(d+f),f);
vertices[16] = new P3D (c*3,d-f,f);//Handschutz rechts hinten
vertices[17] = new P3D (c*3,-(d-f),f);
vertices[18] = new P3D ((-(c-f))/3,(2*c)/3,f); // Griffachteck vorne
vertices[19] = new P3D ((c-f)/3,(2*c)/3,f);
vertices[20] = new P3D ((2*c)/3,(c-f)/3,f);
vertices[21] = new P3D ((2*c)/3,(-(c-f))/3,f);
vertices[22] = new P3D ((c-f)/3,(-(2*c))/3,f);
vertices[23] = new P3D ((-(c-f))/3,(-(2*c))/3,f);
vertices[24] = new P3D ((-(2*c))/3,(-(c-f))/3,f);
vertices[25] = new P3D ((-(2*c))/3,(c-f)/3,f);
vertices[26] = new P3D ((-(c-f))/3,(2*c)/3,(e+f)); // Griffachteck hinten
vertices[27] = new P3D ((c-f)/3,(2*c)/3,(e+f));
vertices[28] = new P3D ((2*c)/3,(c-f)/3,(e+f));
vertices[29] = new P3D ((2*c)/3,(-(c-f))/3,(e+f));
vertices[30] = new P3D ((c-f)/3,(-(2*c))/3,(e+f));
vertices[31] = new P3D ((-(c-f))/3,(-(2*c))/3,(e+f));
vertices[32] = new P3D ((-(2*c))/3,(-(c-f))/3,(e+f));
vertices[33] = new P3D ((-(2*c))/3,(c-f)/3,(e+f));
edges [0] = new Edge (0,2); //Handschutzfront
edges [1] = new Edge (2,4);
edges [2] = new Edge (4,5);
edges [3] = new Edge (5,3);
edges [4] = new Edge (3,1);
edges [5] = new Edge (1,0);
edges [6] = new Edge (6,8); //Handschutz mitte
edges [7] = new Edge (8,10);
edges [8] = new Edge (10,11);
edges [9] = new Edge (11,9);
edges [10] = new Edge (9,7);
edges [11] = new Edge (7,6);
edges [12] = new Edge (0,6); //Handschutz front-mitte verbindung
edges [13] = new Edge (1,7);
edges [14] = new Edge (2,8);
edges [15] = new Edge (3,9);
edges [16] = new Edge (4,10);
edges [17] = new Edge (5,11);
edges [18] = new Edge (12,6); //Handschutz mitte-hinten verbindung
edges [19] = new Edge (13,7);
edges [20] = new Edge (14,8);
edges [21] = new Edge (15,9);
edges [22] = new Edge (16,10);
edges [23] = new Edge (17,11);
edges [24] = new Edge (12,14); // Handschutz hinten
edges [25] = new Edge (14,16);
edges [26] = new Edge (16,17);
edges [27] = new Edge (17,15);
edges [28] = new Edge (15,13);
edges [29] = new Edge (13,12);
edges [30] = new Edge (18,19); //Griffachteckvorne
edges [31] = new Edge (19,20);
edges [32] = new Edge (20,21);
edges [33] = new Edge (21,22);
edges [34] = new Edge (22,23);
edges [35] = new Edge (23,24);
edges [36] = new Edge (24,25);
edges [37] = new Edge (25,18);
edges [38] = new Edge (26,27); //Griffachteckhinten
edges [39] = new Edge (27,28);
edges [40] = new Edge (28,29);
edges [41] = new Edge (29,30);
edges [42] = new Edge (30,31);
edges [43] = new Edge (31,32);
edges [44] = new Edge (32,33);
edges [45] = new Edge (33,26);
edges [46] = new Edge (18,33); //Griffachteck verbindung vorne hinten, die verdrehung der Verstrebungen der Achtecken im Griff ist gewollt
edges [47] = new Edge (19,26);
edges [48] = new Edge (20,27);
edges [49] = new Edge (21,28);
edges [50] = new Edge (22,29);
edges [51] = new Edge (23,30);
edges [52] = new Edge (24,31);
edges [53] = new Edge (25,32);
}
}
und last but not least das 3.
Das Gegengewicht: -Koordianete 0,0,0 ist im kleinen Achteckt am vorderen Teil des Gewichts
Code:
public class My3DObjectGegengewicht {
P3D [] vertices;
Edge[] edges;
public My3DObjectGegengewicht(float seite) {
vertices = new P3D[23];
edges = new Edge[48];
float c = seite/8;
float d = seite/16;
float e = seite;
float f = seite/32;
float h = seite/4;
vertices[0] = new P3D ((-(c-f))/3,(2*c)/3,-f); // Griffachteck hinten
vertices[1] = new P3D ((c-f)/3,(2*c)/3,-f);
vertices[2] = new P3D ((2*c)/3,(c-f)/3,-f);
vertices[3] = new P3D ((2*c)/3,(-(c-f))/3,-f);
vertices[4] = new P3D ((c-f)/3,(-(2*c))/3,-f);
vertices[5] = new P3D ((-(c-f))/3,(-(2*c))/3,-f);
vertices[6] = new P3D ((-(2*c))/3,(-(c-f))/3,-f);
vertices[7] = new P3D ((-(2*c))/3,(c-f)/3,-f);
vertices[8] = new P3D ((-(c-f))/2,c,-d); // Gegengewichtachteck
vertices[9] = new P3D ((c-f)/2,c,-d);
vertices[10] = new P3D (c,(c-f)/2,-d);
vertices[11] = new P3D (c,(-(c-f))/2,-d);
vertices[12] = new P3D ((c-f)/2,-c,-d);
vertices[13] = new P3D ((-(c-f))/2,-c,-d);
vertices[14] = new P3D (-c,(-(c-f))/2,-d);
vertices[15] = new P3D (-c,(c-f)/2,-d);
vertices[16] = new P3D (h,0,-(2*d)); // Gegengewichtsechseck
vertices[17] = new P3D (c,h-d,-(2*d));
vertices[18] = new P3D (-c,h-d,-(2*d));
vertices[19] = new P3D (-h,0,-(2*d));
vertices[20] = new P3D (-c,-(h-d),-(2*d));
vertices[21] = new P3D (c,-(h-d),-(2*d));
vertices[22] = new P3D (0,0,-(e)); //Gegengewichtsendpunkt
edges [0] = new Edge (0,1); //Griffachteckhinten
edges [1] = new Edge (1,2);
edges [2] = new Edge (2,3);
edges [3] = new Edge (3,4);
edges [4] = new Edge (4,5);
edges [5] = new Edge (5,6);
edges [6] = new Edge (6,7);
edges [7] = new Edge (7,0);
edges [8] = new Edge (8,9); //Gegengewichtachteck
edges [9] = new Edge (9,10);
edges [10] = new Edge (10,11);
edges [11] = new Edge (11,12);
edges [12] = new Edge (12,13);
edges [13] = new Edge (13,14);
edges [14] = new Edge (14,15);
edges [15] = new Edge (15,8);
edges [16] = new Edge (0,8); //Verbindung Griffende mit Gegengewicht
edges [17] = new Edge (1,9);
edges [18] = new Edge (2,10);
edges [19] = new Edge (3,11);
edges [20] = new Edge (4,12);
edges [21] = new Edge (5,13);
edges [22] = new Edge (6,14);
edges [23] = new Edge (7,15);
edges [24] = new Edge (16,17); // Gegengewichtssechseck
edges [25] = new Edge (17,18);
edges [26] = new Edge (18,19);
edges [27] = new Edge (19,20);
edges [28] = new Edge (20,21);
edges [29] = new Edge (21,16);
edges [30] = new Edge (9,17); //Gegengewichtsverbindung von Acht- zu Sechseck
edges [31] = new Edge (10,17);
edges [32] = new Edge (10,16);
edges [33] = new Edge (11,16);
edges [34] = new Edge (11,21);
edges [35] = new Edge (12,21);
edges [36] = new Edge (13,20);
edges [37] = new Edge (14,20);
edges [38] = new Edge (14,19);
edges [39] = new Edge (15,19);
edges [40] = new Edge (15,18);
edges [41] = new Edge (8,18);
edges [42] = new Edge (16,22); //Gegengewicht-Spitze
edges [43] = new Edge (17,22);
edges [44] = new Edge (18,22);
edges [45] = new Edge (19,22);
edges [46] = new Edge (20,22);
edges [47] = new Edge (21,22);
}
}
Die Frage lautet:
Wie muss My3DObject geschrieben werden, damit es die einzelnen Teile an den richtigen Stellen zusammensetzt?
Es ist kein muss, da ich meine Aufgabe ein 3D WireModel bereits gemacht hab, nur will ich aus eigenem Interesse daraus zusammensetzbare Komponenten machen.



(Naja so ähnlich jedenfalls)