/******************************************************************/ /* 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>& compounds) : intersector_base() { _compounds = compounds; } ///////////// // Methods // ///////////// intersectionPoint linear_intersector::intersect(const ray& r) const { intersectionPoint ip; // if no compounds registered => no hit. if(_compounds.empty()) return ip; // cycle through the list for(auto itr=_compounds.begin(); itr != _compounds.end(); itr++) { // intersect intersectionPoint newIp = (*itr)->intersect(r); // keep track of closest if(newIp < ip) ip = newIp; } // Done. return ip; }