Difference between revisions of "Parallel Raytracer Assignment"
AngelaChen (talk | contribs) |
|||
Line 31: | Line 31: | ||
Hang onto the sectionsCreator in an instance variable. You will need it. Refer to [https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html Function<T, R> Interface] documentation if you are unfamiliar with Function. | Hang onto the sectionsCreator in an instance variable. You will need it. Refer to [https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html Function<T, R> Interface] documentation if you are unfamiliar with Function. | ||
− | === | + | ===sectionsCreator=== |
{{Sequential|Function<RayTraceContext, List<Section>> sectionsCreator()}} | {{Sequential|Function<RayTraceContext, List<Section>> sectionsCreator()}} | ||
Revision as of 09:27, 27 April 2022
Code To Investigate
RayTraceContext
public interface RayTraceContext { int width(); int height(); void mark(int xMin, int yMin, int xMaxExclusive, int yMaxExclusive); void markAndRender(int xMin, int yMin, int xMaxExclusive, int yMaxExclusive); }
Scheduler
public interface Scheduler { void void_fork(Runnable runnable); }
Code To Implement
SplitFourWayRayTracer
class: | SplitFourWayRayTracer.java | |
methods: | rayTrace | |
package: | raytrace.exercise | |
source folder: | student/src/main/java |
rayTrace
method: public void rayTrace(RayTraceContext context, Scheduler scheduler)
(parallel implementation required)
LoopRayTracer
class: | LoopRayTracer.java | |
methods: | constructor sectionsCreator rayTrace |
|
package: | raytrace.exercise | |
source folder: | student/src/main/java |
constructor
method: public LoopRayTracer(Function<RayTraceContext, List<Section>> sectionsCreator)
(sequential implementation only)
Hang onto the sectionsCreator in an instance variable. You will need it. Refer to Function<T, R> Interface documentation if you are unfamiliar with Function.
sectionsCreator
method: Function<RayTraceContext, List<Section>> sectionsCreator()
(sequential implementation only)
Return the sectionsCreator you stored in an instance variable.
rayTrace
method: public void rayTrace(RayTraceContext context, Scheduler scheduler)
(parallel implementation required)
DivideAndConquerRayTracer
class: | DivideAndConquerRayTracer.java | |
methods: | constructor thresholdPredicate rayTraceKernel |
|
package: | raytrace.exercise | |
source folder: | student/src/main/java |
constructor
method: public DivideAndConquerRayTracer(BiPredicate<Integer, Integer> thresholdPredicate)
(sequential implementation only)
Hang onto the thresholdPredicate in an instance variable. You will need it.
thresholdPredicate
determines the threshold for division. If thresholdPredicate.test()
is true, then the section is still large enough for more division of work.
thresholdPredicate
method: public BiPredicate<Integer, Integer> thresholdPredicate()
(sequential implementation only)
Return the thresholdPredicate you stored in an instance variable.
rayTrace
method: public void rayTrace(RayTraceContext context, Scheduler scheduler)
(parallel implementation required)
Checking Your Solution
Visualization
class: | RayTracerViz.java | VIZ |
package: | raytrace.viz | |
source folder: | student/src/main/java |
Correctness
class: | _SequentialRayTracerTestSuite.java | |
package: | raytrace.group | |
source folder: | testing/src/test/java |