/******************************************************************/ /* 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 #include "triangleMesh.h" ///////////////// // Constructors // ////////////////// triangleMesh::triangleMesh(void) : boundedCompound() { // Nothing. } triangleMesh::triangleMesh(const std::vector& triangle_list, const std::shared_ptr& shader, const transformation3d& transform) : boundedCompound(transform, shader) { // allocate sufficient memory _triangles.reserve(triangle_list.size()); // construct vector of boundedTriangles for_each(triangle_list.begin(), triangle_list.end(), [&](const triangle& tri) { _triangles.push_back( std::make_shared(tri, shader) ); }); // Done. initializeBoundingBox(); } ///////////// // Methods // ///////////// const std::vector>& triangleMesh::compounds(void) const { return _triangles; } bool triangleMesh::hasShader(void) const { return boundedPrimitive::hasShader(); } void triangleMesh::_print(std::ostream& s) const { s << "triangleMesh (" << _bb << ", " << _triangles.size() << " compounds)"; }