Hallo,
ich lerne neu Java Programmierung.
Deswegen habe ich diese kleine folgende Frage dazu:
Ich muss mehrere Punkte aus verschiedenen 3 Komponenten (x, y, z) Werten erzeugen.
z.B.: von (1, 2, 3) und (2, 4, 6) muss ich 2 Punkte in Java zeichnen.
Hat jemand Idee dafür?
Wenn jemand mir dabei helfen kann, bin ich sehr dankbar dafür.
Gruß
Angelo
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Du suchst also nach einer Möglichkeit 3D-Koordinaten auf eine 2D-Darstellung zu projezieren?
Da gibt es verschiedene Möglichkeiten, je nachdem welche Art der Projektion (mit/ohne Fluchpunkt) zum Einsatz kommen soll. Eine relativ einfache Darstellungsmöglichkeit besteht darin die in die Bildschirmebene hineingehende Koordinatenachse im 45° Winkel und um die hälfte verkürzt dar zu stellen.
Also was in der Richung wie:
x2D = x3D - z3D / SQRT(2) / 2
y2D = display.height - (y3D - z3D / SQRT(2) / 2)
Für Umfangreichere 3D-Darstellunegen könnte Java3D interessant sein:
http://java.sun.com/products/java-media/3D/index.jsp
Gruß
Borlander
Hallo wieder,
ich habe ein Beispiel Programm gefunden und weiter bearbeitet.
Aber ich kriege, nur schwarze Fläche, ohne Punkte.
Hat jemand Idee dafür, wie ich es weiter lösen kann.
Gruß
Angelo
Das letzte bearbeitete Programm:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.Appearance;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Material;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Primitive;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
// HelloJava3Da renders a single, rotating cube.
public class HelloJava3Da extends Applet {
/**
* The generated serialVersionUID.
*/
private static final long serialVersionUID = -8652165991244123757L;
public static void main(final String[] args) {
new MainFrame(new HelloJava3Da(), 256, 256);
} // end of main (method of HelloJava3Da)
public HelloJava3Da() {
this.setLayout(new BorderLayout());
final GraphicsConfiguration config = SimpleUniverse
.getPreferredConfiguration();
final Canvas3D canvas3D = new Canvas3D(config);
this.add("Center", canvas3D);
final BranchGroup scene = this.createSceneGraph();
// SimpleUniverse is a Convenience Utility class
final SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
// This will move the ViewPlatform back a bit so the
// objects in the scene can be viewed.
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(scene);
} // end of HelloJava3Da (constructor)
// The following allows this to be run as an application
// as well as an applet
Appearance createAppearance() {
final Appearance appear = new Appearance();
final Material material = new Material();
// material.setDiffuseColor(0.0f, 0.0f, 1.0f);
material.setShininess(50.0f);
// make modifications to default material properties
appear.setMaterial(material);
// ColoringAttributes colorAtt = new ColoringAttributes();
// colorAtt.setShadeModel(ColoringAttributes.SHADE_FLAT);
// appear.setColoringAttributes(colorAtt);
return appear;
}
public BranchGroup createSceneGraph() {
// Create the root of the branch graph
final BranchGroup objRoot = new BranchGroup();
final Transform3D zTrans = new Transform3D();
zTrans.set(new Vector3f(1f, 2f, 1.3f)); // -------------------------------
// POSITION 1
final TransformGroup objTrans = new TransformGroup(zTrans);
objTrans.addChild(new Sphere(0.9f, Primitive.GENERATE_NORMALS, this
.createAppearance()));
final Transform3D zTrans2 = new Transform3D();
zTrans.set(new Vector3f(3f, 3f, 4f)); // -------------------------------
// POSITION 2
final TransformGroup objTrans2 = new TransformGroup(zTrans2);
objTrans2.addChild(new Sphere(0.9f, Primitive.GENERATE_NORMALS, this
.createAppearance()));
objRoot.addChild(objTrans);
objRoot.addChild(objTrans2);
return objRoot;
} // end of CreateSceneGraph method of HelloJava3Da
} // end of class HelloJava3Da
Hallo wieder,
niemand will mir dabei helfen?
Ist etwas nicht in Ordnung?
Also ich kann zu Java3D nix konkreteres beitragen. Ich weiß, daß es das gibt und wo man dann ggf. die Referenz einsehen könnte. So lange ich es nicht selbst brauche reicht das aus, ist schließlich schon was spezielleres. Viel mehr als den Hinweis auf die Existenz ist von meiner Seite her somit also eher unwahrscheinlich.
Unabhängig davon wäre es ggf. hilfreich zu wissen, was Du überhaupt vor hast (womöglich ist Java3D auch vollkommen überdimensioniert für sowas) und auch welche Stellen genau Du verändert hast. Eine Websuche nach Java3D Tutorial wird höchstwahrscheinlich auch was hilfreiches zu Tage bringen...
Hallo,
ich studiere Mechatronik.
In meinem Studium muss ich ein Praktikum machen.
In diesem Praktikum gibt es ein kleines Teil Programmierung.
Mein Unterstützer Prof hat mir Java3D Programm gewählt, weil es gut zu meinem Praktikum Thema passt.
Also Programmierung ist nicht meine Sache.
Und in Mechatronik lernt man sehr wenig Programmierung.
Aber ich muss dieses kleine Praktikum Teil machen, weil ich in meinem ganzen Praktikum so weit bin.
Ich kann nicht wegen dieses kleinen Teils aufhören.
Trotzdem versuche ich Java3D zu lernen.
Aber wie ich schon gesagt habe, ich kann bis jetzt so wenig Programmierung und gar nichts Java3D!
Für weitere Erklärungen stehe ich sofort zur Verfügung!
Mit besten Grüßen
Angelo
Das macht die Sache natürlich nicht umbedingt einfacher und lässt sich auch nicht so auf die Schnelle beheben - Programmieren lernen ist ein Prozess der sich über Jahre hinzieht.
Trotzdem versuche ich Java3D zu lernen.
:-)
Aber wie ich schon gesagt habe, ich kann bis jetzt so wenig Programmierung und gar nichts Java3D!
Google-Suche Java3D Tutorial - da sollte doch sicher was hilfreiches dabei.
Evtl. vorher auch erstmal eine Java-Tutorial suchen wenn notwendig.
Zu konkreten Fragen die Java allgemein betreffen kannst Du natürlich auch gerne nochmal auf diesem Brett posten.
Gruß
Borlander