summaryrefslogblamecommitdiff
path: root/hw5/src/ray_util.cpp
blob: d6c940e8a91b3c4999497fe9d6b883e94388604e (plain) (tree)


























                                                                                               
/******************************************************************/
/* 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 "constants.h"
#include "ray_util.h"


ray createRay(const intersectionPoint& ip, const vec3d& dir)
{
  return ray(ip.position() + EPSILON * dir, dir);
}


ray reflectRay(const intersectionPoint& ip)
{
  // compute reflected direction
  // Note: ip.direction points toward ip point!
  vec3d reflectedDir = ip.direction() - 2.0f * (ip.normal().dot(ip.direction())) * ip.normal();

  // create ray
  return createRay(ip, reflectedDir);
}