/******************************************************************/ /* 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 { // 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; }