Hier eine erste lauffähige Version der Aufgabe für Donnerstag. Bin mir allerdings nicht ganz sicher, ob es das ist, was Herr Schwanecke will. Der Zylinder kann nur senkrecht zur x-Achse gesetzt werden. Wäre interessant, was ihr so für Lösungen habt...
Alles anzeigen
Quellcode
- package Aufgabe02;
- import java.util.*;
- /**
- * Programmieren 2, II.Semester / FH-Wiesbaden<br>
- * Uebung03/Aufgabe02<br>
- * Programm zur repraesentation von dreidimensionalen Objekten<br>
- * getestet mit WinXP(Servicepack 2)/ Fedora Core
- *
- * @author Sebastian Schmitt
- * @version 1.0
- */
- public class Obj3d {
- /**
- * @param args
- * Kommandozeilenparameter
- */
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.print("bitte waehlen: \n1)Kugel \n2)Wuerfel \n3)Zylinder :");
- int auswahl = Integer.parseInt(sc.next());
- if (auswahl == 1) { // Kugel
- Kugel k = new Kugel();
- System.out.print("x-Koordinate des Kreismittelpunktes:");
- k.setzeX(Integer.parseInt(sc.next()));
- System.out.print("y-Koordinate des Kreismittelpunktes:");
- k.setzeY(Integer.parseInt(sc.next()));
- System.out.print("z-Koordinate des Kreismittelpunktes:");
- k.setzeZ(Integer.parseInt(sc.next()));
- System.out.print("Radius des Kreises:");
- k.setzeR(Integer.parseInt(sc.next()));
- System.out.println(k);
- }
- else if (auswahl == 2) { // Wuerfel
- Wuerfel w = new Wuerfel();
- System.out.print("x-Koordinate des Wuerfelmittelpunktes:");
- w.setzeX(Integer.parseInt(sc.next()));
- System.out.print("y-Koordinate des Wuerfelmittelpunktes:");
- w.setzeY(Integer.parseInt(sc.next()));
- System.out.print("z-Koordinate des Wuerfelmittelpunktes:");
- w.setzeZ(Integer.parseInt(sc.next()));
- System.out.print("Durchmesser des Wuerfels:");
- w.setzeD(Integer.parseInt(sc.next()));
- System.out.println(w);
- }
- else { // Zylinder
- Zylinder z = new Zylinder();
- System.out
- .print("x-Koordinate des Mittelpunktes der Grundflaeche:");
- z.setzeX(Integer.parseInt(sc.next()));
- System.out
- .print("y-Koordinate des Mittelpunktes der Grundflaeche:");
- z.setzeY(Integer.parseInt(sc.next()));
- System.out
- .print("z-Koordinate des Mittelpunktes der Grundflaeche:");
- z.setzeZ(Integer.parseInt(sc.next()));
- System.out.print("Radius des Zylinders:");
- z.setzeR(Integer.parseInt(sc.next()));
- System.out.print("Hoehe des Zylinders:");
- z.setzeH(Integer.parseInt(sc.next()));
- System.out.println(z);
- }
- }
- }
- abstract class D3Obj {
- final float pi = 3.141592654f;
- final float vierdrittel = 1.3333333333333f;
- double x;
- double y;
- double z;
- double bboxx; // x-
- double bboxy; // y-
- double bboxz; // z- Koordinate der Bounding-Box
- double bboxb; // breite-
- double bboxh; // hoehe-
- double bboxt; // tiefe der Bounding-Box
- void setzeX(double x) {
- this.bboxx = x;
- }
- void setzeY(double y) {
- this.bboxy = y;
- }
- void setzeZ(double z) {
- this.bboxz = z;
- }
- void setzeBreite(double b) {
- this.bboxb = b;
- }
- void setzeHoehe(double h) {
- this.bboxh = h;
- }
- void setzeTiefe(double t) {
- this.bboxt = t;
- }
- String leseOberflaecheBbox() {
- double x = 2 * (bboxb * bboxh + bboxb * bboxt + bboxh * bboxt);
- return "Oberflaeche: " + x + "\n";
- }
- String leseVolumenBbox() {
- double x = bboxb * bboxh * bboxt;
- return "Volumen: " + x + "\n";
- }
- abstract String leseOberflaeche();
- abstract String leseVolumen();
- String print() {
- return "\nBounding-Box:\n" + "untere Ecke:(" + bboxx + "," + bboxy
- + "," + bboxz + ")\n" + "b/h/t: (" + bboxb + "," + bboxh + ","
- + bboxt + ")\n" + leseOberflaecheBbox() + leseVolumenBbox();
- }
- }
- class Kugel extends D3Obj {
- double radius;
- void setzeX(double x) {
- this.x = x;
- }
- void setzeY(double y) {
- this.y = y;
- }
- void setzeZ(double z) {
- this.z = z;
- }
- void setzeR(double r) {
- this.radius = r;
- super.setzeX(this.x - this.radius);
- super.setzeY(this.y - this.radius);
- super.setzeZ(this.z - this.radius);
- super.setzeBreite(2 * this.radius);
- super.setzeHoehe(2 * this.radius);
- super.setzeTiefe(2 * this.radius);
- }
- String leseOberflaeche() {
- return "Oberflaeche: " + 4 * pi * (radius * radius) + "\n";
- }
- String leseVolumen() {
- return "Volumen: " + (vierdrittel) * pi * (radius * radius * radius)
- + "\n";
- }
- public String toString() {
- return super.print() + "Kugel:\n" + "Koordinaten des Mittelpunktes:("
- + x + "," + y + "," + z + ")\n" + "Radius: " + radius + "\n"
- + leseOberflaeche() + leseVolumen();
- }
- }
- class Wuerfel extends D3Obj {
- double durchmesser;
- void setzeX(int x) {
- this.x = x;
- }
- void setzeY(int y) {
- this.y = y;
- }
- void setzeZ(int z) {
- this.z = z;
- }
- void setzeD(int d) {
- this.durchmesser = d;
- super.setzeX(this.x - this.durchmesser / 2);
- super.setzeY(this.y - this.durchmesser / 2);
- super.setzeZ(this.z - this.durchmesser / 2);
- super.setzeBreite(this.durchmesser);
- super.setzeHoehe(this.durchmesser);
- super.setzeTiefe(this.durchmesser);
- }
- String leseOberflaeche() {
- return "Oberflaeche: " + 6 * (durchmesser * durchmesser) + "\n";
- }
- String leseVolumen() {
- return "Volumen: " + durchmesser * durchmesser * durchmesser + "\n";
- }
- public String toString() {
- return super.print() + "Wuerfel:\n" + "Koordinaten des Mittelpunktes:("
- + x + "," + y + "," + z + ")\n" + "Durchmesser: " + durchmesser
- + "\n" + leseOberflaeche() + leseVolumen();
- }
- }
- class Zylinder extends D3Obj {
- double radius;
- double hoehe;
- void setzeX(double x) {
- this.x = x;
- }
- void setzeY(double y) {
- this.y = y;
- }
- void setzeZ(double z) {
- this.z = z;
- }
- void setzeR(double r) {
- this.radius = r;
- }
- void setzeH(double h) {
- this.hoehe = h;
- super.setzeX(this.x - this.radius);
- super.setzeY(this.y - this.radius);
- super.setzeZ(this.z - this.radius);
- super.setzeBreite(this.radius * 2);
- super.setzeHoehe(this.hoehe);
- super.setzeTiefe(this.radius * 2);
- }
- String leseOberflaeche() {
- return "Oberflaeche: " + 2 * pi * radius * hoehe + "\n";
- }
- String leseVolumen() {
- return "Volumen: " + pi * radius * radius * hoehe + "\n";
- }
- public String toString() {
- return super.print() + "Wuerfel:\n"
- + "Koordinaten des Mittelpunktes der Grundflaeche:(" + x + ","
- + y + "," + z + ")\n" + "Radius: " + radius + "\nHoehe: "
- + hoehe + "\n" + leseOberflaeche() + leseVolumen();
- }
- }