diff options
Diffstat (limited to 'hw3/src/linear_intersector.cpp')
-rw-r--r-- | hw3/src/linear_intersector.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/hw3/src/linear_intersector.cpp b/hw3/src/linear_intersector.cpp new file mode 100644 index 0000000..aa0d767 --- /dev/null +++ b/hw3/src/linear_intersector.cpp @@ -0,0 +1,49 @@ +/******************************************************************/ +/* This file is part of the homework assignments for CSCI-427/527 */ +/* at The College of William & Mary and authored by Pieter Peers. */ +/* No part of this file, whether altered or in original form, can */ +/* be distributed or used outside the context of CSCI-427/527 */ +/* without consent of either the College of William & Mary or */ +/* Pieter Peers. */ +/******************************************************************/ +#include "linear_intersector.h" + +////////////////// +// Constructors // +////////////////// +linear_intersector::linear_intersector(void) + : intersector_base() +{ + // Do nothing +} + + +linear_intersector::linear_intersector(const std::vector<std::shared_ptr<const boundedPrimitive>>& compounds) + : intersector_base() +{ + _compounds = compounds; +} + + +///////////// +// Methods // +///////////// +intersectionPoint linear_intersector::intersect(const ray& r) const +{ + // HW3: Implement this. + // Returns the nearest intersections point of the ray 'r' with the primitives in '_compounds'. + // Returns: intersection point + // Modifies: nothing + intersectionPoint ip, current; + + for (auto itr = _compounds.begin(); itr != _compounds.end(); itr++) { + + if ((*itr)->hasShader()) { + current = (*itr)->intersect(r); + if (current < ip) { ip = current; } + } + + } + + return ip; +} |