The getIntersectionWithRay in class Plane accepts a Ray3D object. However it only works correctly when the ray you provide has a direction pointing away from the plane instead of to it. It's possible I'm misunderstanding how it's supposed to work though? Try this example snippet:
Triangle3D planeTri = new Triangle3D( new Vec3D( 0, 1, 0 ), new Vec3D( 1, 0, 0 ), new Vec3D( 0, 0, 0 ) ); Plane plane = new Plane(planeTri); Ray3D ray = new Ray3D( 0, 0, 5, new Vec3D( 0, 0, 1 ) // Ray direction has to be opposite ); // This works, but shouldn't ReadonlyVec3D inter = plane.getIntersectionWithRay( ray ); println( inter );
With this working example, the ray point is 5 units above the plane with a direction vector pointing upwards. If I set the direction to have Z=-1, then it returns null. These cases should be reversed since it only makes sense that the direction vector would be pointing towards the plane from the base point.