Hey ho!
Ich habe folgendes Problem.
Alle Geometrie-Klassen haben eine gemeinsame abstrakte Basisklasse Geometry.
Diese beinhaltet als Attribut eine Farbe. Darüber hinaus deklariert sie die Methode hit, welche
einen Strahl als Parameter entgegen nimmt. In einer Implementierung dieser Methode erfolgt die
Schnittberechnung. Eine Implementierung gibt bei mehreren Schnittpunkten immer den mit dem
kleinsten positiven t zurück.
Ich versuche jetzt die ganze Zeit den Schnittpunkt also den Hit! zu implementieren, aber irgendwie will ich das nicht so richtig hinbekommen. Könnt ihr mir helfen?
Geometry:
package raytracer.geometry;
import raytracer.geometry.Hit;
import raytracer.Color;
import raytracer.math.Ray;
/**
* Klasse NICHT fertig
* @author Vincent
*
*/
public abstract class Geometry {
public final Color color;
public Geometry(final Color color){
this.color = color;
}
public Hit hit(Ray r){
if(r == null){
return null;
} else {
}
return null;
}
}
Ray:
package raytracer.math;
/**
* Klasse NICHT fertig
* @author Nicole
*
*/
public class Ray {
public final Point3 o;
public final Vector3 d;
public Ray(final Point3 o, final Vector3 d) {
this.o = o; //Urspruch des Strahls
this.d = d; //Richtung des Strahls
}
public Point3 at (final double t) { //Gibt entsprechendden Punkt aus
return o.add(d.mul(t));
}
public double tOf( Point3 p){
double t;
return 0;
//ausgabe vom Parameter
}
}
Hit:
package raytracer.geometry;
import raytracer.math.Ray;
/**
* Klasse NICHT fertig
* @author Vincent
*
*/
public class Hit {
public final double t;
public final Ray ray;
public final Geometry geo;
/**
* @param t
* @param ray
* @param geo
*/
public Hit(final double t, final Ray ray, final Geometry geo) {
this.t = t;
this.ray = ray;
this.geo = geo;
}
}