diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..20a01c1d --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,41 @@ +name: Build and Deploy + +on: [push, pull_request] + +concurrency: + group: ${{ github.ref }}-${{ github.head_ref }}-docs + cancel-in-progress: true + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Install dependencies + run: | + sudo apt install doxygen + sudo apt install graphviz + python3 -m pip install sphinx sphinx_rtd_theme sphinxcontrib-bibtex + python3 -m pip install -I docutils==0.16 # Downgrade docutils so that bullet points render properly with Sphinx + + - name: Build doxygen + run: | + doxygen doxyfile + + - name: Build sphinx + run: | + cd Sphinx + make github + + - name: Deploy + if: github.event_name == 'push' && github.repository == 'rmrsk/EBGeometry' && github.ref == 'refs/heads/main' + uses: JamesIves/github-pages-deploy-action@3.7.1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: main + folder: docs + clean: false diff --git a/.gitignore b/.gitignore index edcbddb9..c573edea 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,18 @@ *.o *.d *.F90 -Examples/AMReX/plt* -Examples/AMReX/tmp_build_dir -Examples/AMReX/Backtrace.* +*.hdf5 +pout.* +*.mod +docs/** +Examples/AMReX_DCEL/plt* +Examples/AMReX_DCEL/tmp_build_dir +Examples/AMReX_DCEL/Backtrace.* +Examples/AMReX_Shapes/plt* +Examples/AMReX_Shapes/tmp_build_dir +Examples/AMReX_Shapes/Backtrace.* +Examples/Chombo3_Shapes/d/** +Examples/Chombo3_Shapes/o/** +Examples/Chombo3_Shapes/f/** +Examples/Chombo3_Shapes/d/** diff --git a/Examples/AMReX/GNUmakefile b/Examples/AMReX_DCEL/GNUmakefile similarity index 100% rename from Examples/AMReX/GNUmakefile rename to Examples/AMReX_DCEL/GNUmakefile diff --git a/Examples/AMReX/Make.package b/Examples/AMReX_DCEL/Make.package similarity index 100% rename from Examples/AMReX/Make.package rename to Examples/AMReX_DCEL/Make.package diff --git a/Examples/AMReX/README.md b/Examples/AMReX_DCEL/README.md similarity index 100% rename from Examples/AMReX/README.md rename to Examples/AMReX_DCEL/README.md diff --git a/Examples/AMReX/main.cpp b/Examples/AMReX_DCEL/main.cpp similarity index 99% rename from Examples/AMReX/main.cpp rename to Examples/AMReX_DCEL/main.cpp index abcee0b2..7d5a80d2 100644 --- a/Examples/AMReX/main.cpp +++ b/Examples/AMReX_DCEL/main.cpp @@ -158,7 +158,7 @@ int main (int argc, char* argv[]) { } // Create our signed distance function. K is the tree degree while T is the EBGeometry precision. - constexpr int K = 2; + constexpr int K = 4; using T = float; using Vec3 = EBGeometry::Vec3T; diff --git a/Examples/AMReX_Shapes/GNUmakefile b/Examples/AMReX_Shapes/GNUmakefile new file mode 100644 index 00000000..57177f87 --- /dev/null +++ b/Examples/AMReX_Shapes/GNUmakefile @@ -0,0 +1,26 @@ +DEBUG = FALSE +TEST = TRUE +USE_ASSERTION = TRUE + +USE_EB = TRUE + +USE_MPI = TRUE +USE_OMP = FALSE + +COMP = gnu + +DIM = 3 + +AMREX_HOME ?= ../../../../amrex + +include $(AMREX_HOME)/Tools/GNUMake/Make.defs + +include ./Make.package + +Pdirs := Base Boundary AmrCore EB + +Ppack += $(foreach dir, $(Pdirs), $(AMREX_HOME)/Src/$(dir)/Make.package) + +include $(Ppack) + +include $(AMREX_HOME)/Tools/GNUMake/Make.rules diff --git a/Examples/AMReX_Shapes/Make.package b/Examples/AMReX_Shapes/Make.package new file mode 100644 index 00000000..553decea --- /dev/null +++ b/Examples/AMReX_Shapes/Make.package @@ -0,0 +1 @@ +CEXE_sources += main.cpp \ No newline at end of file diff --git a/Examples/AMReX_Shapes/README.md b/Examples/AMReX_Shapes/README.md new file mode 100644 index 00000000..c92fd253 --- /dev/null +++ b/Examples/AMReX_Shapes/README.md @@ -0,0 +1,34 @@ +This example uses the embedded boundary grid generation from AMReX, using analytic SDFs from EBGeometry. +To compile this application, first install AMReX somewhere and point the AMREX_HOME environment variable to it. + +Compiling +--------- + +Compile (with your standard AMReX settings) using + + make -s -j8 + +Running +------- + +With MPI: + + mpirun -np 8 main3d..ex eb2.cover_multiple_cuts=1 which_geom=0 + +Some of the geometries will generate cut-cells which AMReX does not support, so the geometries should be run with eb2.cover_multiple_cuts=1. + +Supported geometries +-------------------- +To select different geometries, set which_geom to one of the below. + +* `which_geom = 0` Sphere +* `which_geom = 1` Plane +* `which_geom = 2` Infinite cylinder +* `which_geom = 3` Finite cylinder +* `which_geom = 4` Capsule +* `which_geom = 5` Box +* `which_geom = 6` Rounded box +* `which_geom = 7` Torus +* `which_geom = 8` Infinite cone +* `which_geom = 9` Finite cone +* `which_geom = 10` Spherical shell diff --git a/Examples/AMReX_Shapes/main.cpp b/Examples/AMReX_Shapes/main.cpp new file mode 100644 index 00000000..d338ee31 --- /dev/null +++ b/Examples/AMReX_Shapes/main.cpp @@ -0,0 +1,176 @@ +/* EBGeometry + * Copyright © 2022 Robert Marskar + * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory. + */ + +// AMReX includes +#include +#include +#include +#include +#include + +// Our include +#include "../../EBGeometry.hpp" + +using namespace amrex; + +using T = float; +using SDF = EBGeometry::SignedDistanceFunction; +using Vec3 = EBGeometry::Vec3T; + +namespace amrex { + namespace EB2 { + + /*! + @brief This is just an EBGeometry-exposed signed distance field usable with AMReX. + */ + class AMReXSDF { + public: + + /*! + @brief Full constructor. + @param[in] a_filename File name. Must be a PLY file and will be parser by the PLY parser. + @param[in] a_flipSign Hook for swapping inside/outside. + */ + AMReXSDF(std::shared_ptr& a_sdf){ + m_sdf = a_sdf; + } + + /*! + @brief Copy constructor. + @param[in] a_other Other SDF. + */ + AMReXSDF(const AMReXSDF& a_other) { + this->m_sdf = a_other.m_sdf; + } + + /*! + @brief AMReX's implicit function definition. + */ + Real operator() (AMREX_D_DECL(Real x, Real y, Real z)) const noexcept { + return m_sdf->signedDistance(Vec3(x,y,z)); + }; + + /*! + @brief Also an AMReX implicit function implementation + */ + inline Real operator() (const RealArray& p) const noexcept { + return this->operator()(AMREX_D_DECL(p[0],p[1],p[2])); + } + + protected: + + /*! + @brief EBGeometry signed distance function. + */ + std::shared_ptr m_sdf; + }; + } +} + +int main (int argc, char* argv[]) { + amrex::Initialize(argc, argv); + + int n_cell = 128; + int max_grid_size = 32; + int whichGeom = 0; + + std::string filename; + + // read parameters + ParmParse pp; + pp.query("n_cell", n_cell); + pp.query("max_grid_size", max_grid_size); + pp.query("which_geom", whichGeom); + + + Geometry geom; + RealBox rb; + + std::shared_ptr func; + if(whichGeom == 0){ // Sphere. + rb = RealBox({-1,-1,-1}, {1,1,1}); + func = std::make_shared> (Vec3::zero(), T(0.5), false); + } + else if(whichGeom == 1){ // Plane. + rb = RealBox({-1,-1,-1}, {1,1,1}); + + func = std::make_shared > (Vec3::zero(), Vec3::one(), false); + } + else if(whichGeom == 2){ // Infinite cylinder. + rb = RealBox({-1,-1,-1}, {1,1,1}); + + func = std::make_shared > (Vec3::zero(), T(0.1), 2, false); + } + else if(whichGeom == 3){ // Finite cylinder. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + func = std::make_shared > (-Vec3::one(), Vec3::one(), 0.25, false); + } + else if(whichGeom == 4){ // Capsule. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + func = std::make_shared > (-Vec3::one(), Vec3::one(), 0.25, false); + } + else if(whichGeom == 5){ // Box. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + func = std::make_shared > (-Vec3::one(), Vec3::one(), false); + } + else if(whichGeom == 6){ // Rounded box. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + auto box = std::make_shared > (-Vec3::one(), Vec3::one(), false); + func = std::make_shared >(box, 0.25); + } + else if(whichGeom == 7){ // Torus. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + func = std::make_shared >(Vec3::zero(), 1.0, 0.25, false); + } + else if(whichGeom == 8){ // Infinite cone. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + func = std::make_shared >(Vec3(0.0, 0.0, 1.0), 30.0, false); + } + else if(whichGeom == 9){ // Finite cone. + rb = RealBox({-2,-2,-2}, {2,2,2}); + + func = std::make_shared >(Vec3(0.0, 0.0, 1.0), 2.0, 30, false); + } + if(whichGeom == 10){ // Spherical shell. + rb = RealBox({-1,-1,-1}, {1,1,1}); + + auto sphere = std::make_shared> (Vec3::zero(), T(0.5), false); + func = std::make_shared> (sphere, 0.1); + } + + Array is_periodic{false, false, false}; + Geometry::Setup(&rb, 0, is_periodic.data()); + Box domain(IntVect(0), IntVect(n_cell-1)); + geom.define(domain); + + EB2::AMReXSDF sdf(func); + + auto gshop = EB2::makeShop(sdf); + EB2::Build(gshop, geom, 0, 0); + + // Put some data + MultiFab mf; + { + BoxArray ba(geom.Domain()); + ba.maxSize(max_grid_size); + DistributionMapping dm{ba}; + + std::unique_ptr factory + = amrex::makeEBFabFactory(geom, ba, dm, {2,2,2}, EBSupport::full); + + mf.define(ba, dm, 1, 0, MFInfo(), *factory); + mf.setVal(1.0); + } + + EB_WriteSingleLevelPlotfile("plt", mf, {"rho"}, geom, 0.0, 0); + + amrex::Finalize(); +} diff --git a/Examples/Chombo3_DCEL/GNUmakefile b/Examples/Chombo3_DCEL/GNUmakefile new file mode 100644 index 00000000..bfa151ea --- /dev/null +++ b/Examples/Chombo3_DCEL/GNUmakefile @@ -0,0 +1,12 @@ + +# Things for the Chombo makefile system. +ebase = main + +#CHOMBO_HOME = /home/robertm/Projects/Chombo_3.2/lib + +LibNames = EBAMRElliptic EBAMRTools Workshop EBTools AMRElliptic AMRTools BoxTools + +base_dir = . +src_dirs = ../../ + +include $(CHOMBO_HOME)/mk/Make.example diff --git a/Examples/Chombo3_DCEL/README.md b/Examples/Chombo3_DCEL/README.md new file mode 100644 index 00000000..c43f3d29 --- /dev/null +++ b/Examples/Chombo3_DCEL/README.md @@ -0,0 +1,28 @@ +This example uses the embedded boundary grid generation from Chombo3, and shows how to use DCEL functionality from EBGeometry. +To compile this application, first install Chombo somewhere and point the CHOMBO_HOME environment variable to it. + +Compiling +--------- + +Compile (with your standard Chombo settings) using + + make -s -j8 DIM=3 OPT=HIGH main + +Running +------- + +With MPI: + + mpirun -np 8 main3d..ex examples.inputs + +Supported geometries +-------------------- +To select different geometries, set which_geom to one of the below. + +* `which_geom = 0` Airfoil +* `which_geom = 1` Sphere +* `which_geom = 2` Dodecahedron +* `which_geom = 3` Horse +* `which_geom = 4` Porsche +* `which_geom = 5` Orion capsule +* `which_geom = 6` Armadillo \ No newline at end of file diff --git a/Examples/Chombo3_DCEL/d/3d.Linux.64.mpicxx.gfortran.OPTHIGH.MPI/.dummy b/Examples/Chombo3_DCEL/d/3d.Linux.64.mpicxx.gfortran.OPTHIGH.MPI/.dummy new file mode 100644 index 00000000..e69de29b diff --git a/Examples/Chombo3_DCEL/d/3d.Linux.64.mpicxx.gfortran.OPTHIGH.MPI/.exe_output b/Examples/Chombo3_DCEL/d/3d.Linux.64.mpicxx.gfortran.OPTHIGH.MPI/.exe_output new file mode 100644 index 00000000..e69de29b diff --git a/Examples/Chombo3_DCEL/examples.inputs b/Examples/Chombo3_DCEL/examples.inputs new file mode 100644 index 00000000..35aed8ce --- /dev/null +++ b/Examples/Chombo3_DCEL/examples.inputs @@ -0,0 +1,3 @@ +ncells = 128 +grid_size = 16 +which_geom = 0 \ No newline at end of file diff --git a/Examples/Chombo3_DCEL/main.cpp b/Examples/Chombo3_DCEL/main.cpp new file mode 100644 index 00000000..0cababe8 --- /dev/null +++ b/Examples/Chombo3_DCEL/main.cpp @@ -0,0 +1,192 @@ +// Chombo includes +#include "EBISLayout.H" +#include "DisjointBoxLayout.H" +#include "BaseIF.H" +#include "GeometryShop.H" +#include "ParmParse.H" +#include "EBIndexSpace.H" +#include "BRMeshRefine.H" +#include "EBCellFactory.H" +#include "EBLevelDataOps.H" +#include "EBAMRIO.H" + +// Our includes +#include "EBGeometry.hpp" + +using T = float; +using SDF = EBGeometry::SignedDistanceFunction; +using Vec3 = EBGeometry::Vec3T; +using BV = EBGeometry::BoundingVolumes::AABBT; + +// Binding for exposing EBGeometry's signed distance functions to Chombo +template +class ChomboSDF : public BaseIF { +public: + + /*! + @brief Alias for builder node, for encapsulating a "standard" BVH node + */ + using BuilderNode = EBGeometry::BVH::NodeT, BV, K>; + + /*! + @brief Alias for linearized BVH node + */ + using LinearNode = EBGeometry::BVH::LinearBVH, BV, K> ; + + ChomboSDF() = delete; + + ChomboSDF(const std::string a_filename) { + // 1. Read mesh from file. + auto mesh = EBGeometry::Dcel::Parser::PLY::readASCII(a_filename); + + // 2. Create standard BVH hierarchy. This is not a compact tree. + auto root = std::make_shared(mesh->getFaces()); + root->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor, + EBGeometry::Dcel::defaultPartitioner, + EBGeometry::Dcel::defaultStopFunction); + + // 3. Flatten the tree onto a tighter memory representation. + m_rootNode = root->flattenTree(); + } + + ChomboSDF(const ChomboSDF& a_other){ + m_rootNode = a_other.m_rootNode; + } + + Real value(const RealVect& a_point) const override final { +#if CH_SPACEDIM==2 + Vec3 p(a_point[0], a_point[1], 0.0); +#else + Vec3 p(a_point[0], a_point[1], a_point[2]); +#endif + + return Real(m_rootNode->signedDistance(p)); + } + + BaseIF* newImplicitFunction() const { + return (BaseIF*) (new ChomboSDF(*this)); + } + +protected: + + std::shared_ptr m_rootNode; +}; + +int main(int argc, char* argv[]) { + +#ifdef CH_MPI + MPI_Init(&argc, &argv); +#endif + + // Set up domain. + + + // Parse input file + char* inFile = argv[1]; + ParmParse pp(argc-2,argv+2,NULL,inFile); + + int nCells = 128; + int whichGeom = 0; + int gridSize = 16; + pp.query("which_geom", whichGeom); + pp.query("n_cells", nCells); + pp.query("grid_size", gridSize); + + + RealVect loCorner; + RealVect hiCorner; + std::string filename; + + if(whichGeom == 0){ // Airfoil + loCorner = -50*RealVect::Unit; + hiCorner = 250*RealVect::Unit; + + filename = "../PLY/airfoil.ply"; + } + else if(whichGeom == 1){ // Sphere + loCorner = -400*RealVect::Unit; + hiCorner = 400*RealVect::Unit; + + filename = "../PLY/sphere.ply"; + } + else if(whichGeom == 2){ // Dodecahedron + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + filename = "../PLY/dodecahedron.ply"; + } + else if(whichGeom == 3){ // Horse + loCorner = -0.12*RealVect::Unit; + hiCorner = 0.12*RealVect::Unit; + + filename = "../PLY/horse.ply"; + } + else if(whichGeom == 4){ // Porsche + loCorner = -10*RealVect::Unit; + hiCorner = 10*RealVect::Unit; + + filename = "../PLY/porsche.ply"; + } + else if(whichGeom == 5){ // Orion + loCorner = -10*RealVect::Unit; + hiCorner = 10*RealVect::Unit; + + filename = "../PLY/orion.ply"; + } + else if(whichGeom == 6){ // Armadillo + loCorner = -125*RealVect::Unit; + hiCorner = 125*RealVect::Unit; + + filename = "../PLY/armadillo.ply"; + } + + // + constexpr int K = 4; + auto impFunc = (BaseIF*) (new ChomboSDF(filename)); + + // Set up the Chombo EB geometry. + ProblemDomain domain(IntVect::Zero, (nCells-1)*IntVect::Unit); + const Real dx = (hiCorner[0] - loCorner[0])/nCells;; + + GeometryShop workshop(*impFunc, -1, dx*RealVect::Zero); + EBIndexSpace* ebisPtr = Chombo_EBIS::instance(); + ebisPtr->define(domain, loCorner, dx, workshop, gridSize, -1); + + // Set up the grids + Vector procs; + Vector boxes; + domainSplit(domain, boxes, gridSize, gridSize); + mortonOrdering(boxes); + LoadBalance(procs, boxes); + DisjointBoxLayout dbl(boxes, procs); + + // Fill the EBIS layout + EBISLayout ebisl; + ebisPtr->fillEBISLayout(ebisl, dbl, domain, 1); + + // Allocate some data that we can output + LevelData data(dbl, 1, IntVect::Zero, EBCellFactory(ebisl)); + for (DataIterator dit(dbl); dit.ok(); ++dit){ + EBCellFAB& fab = data[dit()]; + fab.setVal(0.0); + + const Box region = fab.getRegion(); + for (BoxIterator bit(region); bit.ok(); ++bit){ + const IntVect iv = bit(); + + const RealVect pos = loCorner + (iv + 0.5*RealVect::Unit) * dx; + fab.getFArrayBox()(iv, 0) = impFunc->value(pos); + } + } + + // Write to HDF5 + Vector* > amrData; + amrData.push_back(&data); + writeEBAMRname(&amrData, "example.hdf5"); + +#ifdef CH_MPI + MPI_Finalize(); +#endif + return 0; + +} diff --git a/Examples/Chombo3_Shapes/GNUmakefile b/Examples/Chombo3_Shapes/GNUmakefile new file mode 100644 index 00000000..bfa151ea --- /dev/null +++ b/Examples/Chombo3_Shapes/GNUmakefile @@ -0,0 +1,12 @@ + +# Things for the Chombo makefile system. +ebase = main + +#CHOMBO_HOME = /home/robertm/Projects/Chombo_3.2/lib + +LibNames = EBAMRElliptic EBAMRTools Workshop EBTools AMRElliptic AMRTools BoxTools + +base_dir = . +src_dirs = ../../ + +include $(CHOMBO_HOME)/mk/Make.example diff --git a/Examples/Chombo3_Shapes/README.md b/Examples/Chombo3_Shapes/README.md new file mode 100644 index 00000000..2b02967a --- /dev/null +++ b/Examples/Chombo3_Shapes/README.md @@ -0,0 +1,32 @@ +This example uses the embedded boundary grid generation from Chombo3, and shows how to use basic SDFs from EBGeometry. +To compile this application, first install Chombo somewhere and point the CHOMBO_HOME environment variable to it. + +Compiling +--------- + +Compile (with your standard Chombo settings) using + + make -s -j8 DIM=3 OPT=HIGH main + +Running +------- + +With MPI: + + mpirun -np 8 main3d..ex examples.inputs + +Supported geometries +-------------------- +To select different geometries, set which_geom to one of the below. + +* `which_geom = 0` Sphere +* `which_geom = 1` Plane +* `which_geom = 2` Infinite cylinder +* `which_geom = 3` Finite cylinder +* `which_geom = 4` Capsule +* `which_geom = 5` Box +* `which_geom = 6` Rounded box +* `which_geom = 7` Torus +* `which_geom = 8` Infinite cone +* `which_geom = 9` Finite cone +* `which_geom = 10` Spherical shell diff --git a/Examples/Chombo3_Shapes/examples.inputs b/Examples/Chombo3_Shapes/examples.inputs new file mode 100644 index 00000000..35aed8ce --- /dev/null +++ b/Examples/Chombo3_Shapes/examples.inputs @@ -0,0 +1,3 @@ +ncells = 128 +grid_size = 16 +which_geom = 0 \ No newline at end of file diff --git a/Examples/Chombo3_Shapes/main.cpp b/Examples/Chombo3_Shapes/main.cpp new file mode 100644 index 00000000..0f07ad05 --- /dev/null +++ b/Examples/Chombo3_Shapes/main.cpp @@ -0,0 +1,194 @@ +// Chombo includes +#include "EBISLayout.H" +#include "DisjointBoxLayout.H" +#include "BaseIF.H" +#include "GeometryShop.H" +#include "ParmParse.H" +#include "EBIndexSpace.H" +#include "BRMeshRefine.H" +#include "EBCellFactory.H" +#include "EBLevelDataOps.H" +#include "EBAMRIO.H" + +// Our includes +#include "EBGeometry.hpp" + +using T = float; +using SDF = EBGeometry::SignedDistanceFunction; +using Vec3 = EBGeometry::Vec3T; + +// Binding for exposing EBGeometry's signed distance functions to Chombo +class ChomboSDF : public BaseIF { +public: + + ChomboSDF() = delete; + + ChomboSDF(std::shared_ptr& a_sdf) { + m_sdf = a_sdf; + } + + ChomboSDF(const ChomboSDF& a_other){ + m_sdf = a_other.m_sdf; + } + + Real value(const RealVect& a_point) const override final { +#if CH_SPACEDIM==2 + Vec3 p(a_point[0], a_point[1], 0.0); +#else + Vec3 p(a_point[0], a_point[1], a_point[2]); + +#endif + + return Real(m_sdf->signedDistance(p)); + } + + BaseIF* newImplicitFunction() const { + return (BaseIF*) (new ChomboSDF(*this)); + } + +protected: + + std::shared_ptr m_sdf; +}; + +int main(int argc, char* argv[]) { + +#ifdef CH_MPI + MPI_Init(&argc, &argv); +#endif + + // Set up domain. + + + // Parse input file + char* inFile = argv[1]; + ParmParse pp(argc-2,argv+2,NULL,inFile); + + int nCells = 128; + int whichGeom = 0; + int gridSize = 16; + pp.query("which_geom", whichGeom); + pp.query("n_cells", nCells); + pp.query("grid_size", gridSize); + + + RealVect loCorner; + RealVect hiCorner; + + std::shared_ptr sdf = nullptr; + if(whichGeom == 0){ // Sphere at origin. + loCorner = -RealVect::Unit; + hiCorner = RealVect::Unit; + + sdf = std::make_shared> (Vec3::zero(), T(0.5), false); + } + else if(whichGeom == 1){ // Plane. + loCorner = -RealVect::Unit; + hiCorner = RealVect::Unit; + + sdf = std::make_shared > (Vec3::zero(), Vec3::one(), false); + } + else if(whichGeom == 2){ // Infinite cylinder. + loCorner = -RealVect::Unit; + hiCorner = RealVect::Unit; + + sdf = std::make_shared > (Vec3::zero(), T(0.1), 2, false); + } + else if(whichGeom == 3){ // Finite cylinder. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + sdf = std::make_shared > (-Vec3::one(), Vec3::one(), 0.25, false); + } + else if(whichGeom == 4){ // Capsule. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + sdf = std::make_shared > (-Vec3::one(), Vec3::one(), 0.25, false); + } + else if(whichGeom == 5){ // Box. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + sdf = std::make_shared > (-Vec3::one(), Vec3::one(), false); + } + else if(whichGeom == 6){ // Rounded box. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + auto box = std::make_shared > (-Vec3::one(), Vec3::one(), false); + sdf = std::make_shared >(box, 0.25); + } + else if(whichGeom == 7){ // Torus. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + sdf = std::make_shared >(Vec3::zero(), 1.0, 0.25, false); + } + else if(whichGeom == 8){ // Infinite cone. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + sdf = std::make_shared >(Vec3(0.0, 0.0, 1.0), 30.0, false); + } + else if(whichGeom == 9){ // Finite cone. + loCorner = -2*RealVect::Unit; + hiCorner = 2*RealVect::Unit; + + sdf = std::make_shared >(Vec3(0.0, 0.0, 1.0), 2.0, 30, false); + } + if(whichGeom == 10){ // Spherical shell. + loCorner = -RealVect::Unit; + hiCorner = RealVect::Unit; + + auto sphere = std::make_shared> (Vec3::zero(), T(0.5), false); + sdf = std::make_shared> (sphere, 0.1); + } + + + // Set up the Chombo EB geometry. + ProblemDomain domain(IntVect::Zero, (nCells-1)*IntVect::Unit); + const Real dx = (hiCorner[0] - loCorner[0])/nCells;; + auto impFunc = (BaseIF*) (new ChomboSDF(sdf)); + GeometryShop workshop(*impFunc, -1, dx*RealVect::Zero); + EBIndexSpace* ebisPtr = Chombo_EBIS::instance(); + ebisPtr->define(domain, loCorner, dx, workshop, gridSize, -1); + + // Set up the grids + Vector procs; + Vector boxes; + domainSplit(domain, boxes, gridSize, gridSize); + mortonOrdering(boxes); + LoadBalance(procs, boxes); + DisjointBoxLayout dbl(boxes, procs); + + // Fill the EBIS layout + EBISLayout ebisl; + ebisPtr->fillEBISLayout(ebisl, dbl, domain, 1); + + // Allocate some data that we can output + LevelData data(dbl, 1, IntVect::Zero, EBCellFactory(ebisl)); + for (DataIterator dit(dbl); dit.ok(); ++dit){ + EBCellFAB& fab = data[dit()]; + fab.setVal(0.0); + + const Box region = fab.getRegion(); + for (BoxIterator bit(region); bit.ok(); ++bit){ + const IntVect iv = bit(); + + const RealVect pos = loCorner + (iv + 0.5*RealVect::Unit) * dx; + fab.getFArrayBox()(iv, 0) = impFunc->value(pos); + } + } + + // Write to HDF5 + Vector* > amrData; + amrData.push_back(&data); + writeEBAMRname(&amrData, "example.hdf5"); + +#ifdef CH_MPI + MPI_Finalize(); +#endif + return 0; + +} diff --git a/Examples/Basic/README.md b/Examples/EBGeometry_DCEL/README.md similarity index 92% rename from Examples/Basic/README.md rename to Examples/EBGeometry_DCEL/README.md index 18a87c37..b4d4265e 100644 --- a/Examples/Basic/README.md +++ b/Examples/EBGeometry_DCEL/README.md @@ -2,7 +2,7 @@ This folder contains a basic example of using EBGeometry, with three different r * A naive approach which iterates through all facets and computed the signed distance. * Using a conventional bounding volume hierarchy with (references to) primitives stored directly in the nodes. -* A flatten, more compact bounding volume hierarchy. +* A flattened, more compact bounding volume hierarchy. Note that SDF queries have different complexity for different geometries and input points. For example, a tessellated sphere has a "blind spot" in it's center where even BVHs will visit most, if not all, primitives. diff --git a/Examples/Basic/main.cpp b/Examples/EBGeometry_DCEL/main.cpp similarity index 100% rename from Examples/Basic/main.cpp rename to Examples/EBGeometry_DCEL/main.cpp diff --git a/Examples/Union/README.md b/Examples/EBGeometry_Union/README.md similarity index 100% rename from Examples/Union/README.md rename to Examples/EBGeometry_Union/README.md diff --git a/Examples/Union/main.cpp b/Examples/EBGeometry_Union/main.cpp similarity index 100% rename from Examples/Union/main.cpp rename to Examples/EBGeometry_Union/main.cpp diff --git a/Examples/README.md b/Examples/README.md index 76dc9833..caf5d452 100644 --- a/Examples/README.md +++ b/Examples/README.md @@ -1,6 +1,9 @@ This folder contains some basic and advanced examples of using EBGeometry. -* AMReX - For integration of EBGeometry with AMReX. -* Basic - For reading grids into efficient signed distance functions. -* Union - For setting up multi-object scenes with standard and optimized unions. -* PLY - Contains various surface grids. +* `AMReX_DCEL` For using EBGeometry DCEL functionality with AMReX. +* `AMReX_Shapes` For using EBGeometry analytic signed distance functions with AMReX. +* `Chombo3_DCEL` For using EBGeometry DCEL functionality with Chombo3. +* `Chombo3_Shapes` For using EBGeometry analytic signed distance functions with Chombo3. +* `EBGeometry_DCEL` For showing how to use the DCEL functionality in EBGeometry. +* `EBGeometry_Union` For setting up multi-object scenes with standard and optimized unions. +* `PLY` Contains various surface grids. diff --git a/Source/EBGeometry_AnalyticDistanceFunctions.hpp b/Source/EBGeometry_AnalyticDistanceFunctions.hpp index ed006e2d..cba6f4e8 100644 --- a/Source/EBGeometry_AnalyticDistanceFunctions.hpp +++ b/Source/EBGeometry_AnalyticDistanceFunctions.hpp @@ -4,17 +4,235 @@ */ /*! - @file EBGeometry_AnalyticDistanceFunctions.hpp - @brief Declaration of various analytic distance functions. - @author Robert Marskar + @file EBGeometry_AnalyticDistanceFunctions.hpp + @brief Declaration of various analytic distance functions. + @details This file contains various analytic signed distance fields. Some of these also include member function for fetching parameters, + and users are free to add such functions also to other shapes. + @author Robert Marskar */ #ifndef EBGeometry_AnalyticDistanceFunctions #define EBGeometry_AnalyticDistanceFunctions +// Std includes +#include + +// Our includes #include "EBGeometry_SignedDistanceFunction.hpp" #include "EBGeometry_NamespaceHeader.hpp" +/*! + @brief Clamp function. Returns lo if v < lo and hi if v > hi. Otherwise returns v. + @param[in] v Value to be clamped. + @param[in] lo Lower clamping value. + @param[in] hi Higher clamping value. +*/ +template +constexpr const T& clamp( const T& v, const T& lo, const T& hi ) { + return v < lo ? lo : hi < v ? hi : v; +} + +/*! + @brief Rounded signed distance function. + @details Rounded distance function -- returns the original distance function displaced by the specified rounding radius. + @note Users may need to scale their distance functions afterwards. +*/ +template +class RoundedSDF : public SignedDistanceFunction { +public: + + /*! + @brief Disallowed weak construction + */ + RoundedSDF() = delete; + + /*! + @brief Rounded SDF. Rounds the input SDF + @param[in] a_sdf Input signed distance function. + @param[in] a_curv Rounding radius. + */ + RoundedSDF(const std::shared_ptr > a_sdf, const T a_curv) { + m_sdf = a_sdf; + m_curv = a_curv; + } + + /*! + @brief Destructor + */ + virtual ~RoundedSDF(){ + + } + + /*! + @brief Signed distance field. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + return m_sdf->signedDistance(a_point) - m_curv; + } + +protected: + + /*! + @brief Original signed distance function + */ + std::shared_ptr > m_sdf; + + /*! + @brief Rounding radius + */ + T m_curv; +}; + +/*! + @brief Annular signed distance function. Creates a shell out of an object. +*/ +template +class AnnularSDF : public SignedDistanceFunction { +public: + + /*! + @brief Disallowed weak construction + */ + AnnularSDF() = delete; + + /*! + @brief Rounded SDF. Rounds the input SDF + @param[in] a_sdf Input signed distance function. + @param[in] a_curv Rounding radius. + */ + AnnularSDF(const std::shared_ptr > a_sdf, const T a_curv) { + m_sdf = a_sdf; + m_curv = a_curv; + } + + /*! + @brief Destructor + */ + virtual ~AnnularSDF(){ + + } + + /*! + @brief Signed distance field. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + return std::abs(m_sdf->signedDistance(a_point)) - m_curv; + } + +protected: + + /*! + @brief Original signed distance function + */ + std::shared_ptr > m_sdf; + + /*! + @brief Rounding radius + */ + T m_curv; +}; + +/*! + @brief Scaled signed distance function. +*/ +template +class ScaledSDF : public SignedDistanceFunction { +public: + + /*! + @brief Disallowed weak construction + */ + ScaledSDF() = delete; + + /*! + @brief Scaled SDF. + @param[in] a_sdf Input signed distance function. + @param[in] a_scale Scaling factor. + */ + ScaledSDF(const std::shared_ptr > a_sdf, const T a_scale) { + m_sdf = a_sdf; + m_scale = a_scale; + } + + /*! + @brief Destructor + */ + virtual ~ScaledSDF(){ + + } + + /*! + @brief Signed distance field. + @param[in] a_point Input point. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + return (m_sdf->signedDistance(a_point/m_scale)) * m_scale; + } + +protected: + + /*! + @brief Original signed distance function + */ + std::shared_ptr > m_sdf; + + /*! + @brief Scaling factor. + */ + T m_scale; +}; + +template +class PlaneSDF : public SignedDistanceFunction { +public: + + /*! + @brief Disallowed weak construction + */ + PlaneSDF() = delete; + + /*! + @brief Full constructor + @param[in] a_point Point on the plane + @param[in] a_normal Plane normal vector. + @param[in] a_flipInside Hook for turning inside to outside. + */ + PlaneSDF(const Vec3T& a_point, const Vec3T& a_normal, const bool a_flipInside){ + m_point = a_point; + m_normal = a_normal; + m_flipInside = a_flipInside; + + m_normal /= m_normal.length(); + } + + /*! + @brief Signed distance function for sphere. + @param[in] a_point Position. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + const T sign = m_flipInside ? -1.0 : 1.0; + + return sign * dot(a_point-m_point, m_normal); + } + +protected: + + /*! + @brief Point on plane + */ + Vec3T m_point; + + /*! + @brief Plane normal vector + */ + Vec3T m_normal; + + /*! + @brief Inside to outside hook + */ + bool m_flipInside; +}; + /*! @brief Signed distance field for sphere. */ @@ -190,7 +408,7 @@ class BoxSDF : public SignedDistanceFunction { // Note: max is max(Vec3T, Vec3T) and not std::max. It returns a vector with coordinate-wise largest components. Note that // the first part std::min(...) is the signed distance on the inside of the box (delta will have negative components). The other // part max(Vec3T::zero(), ...) is for outside the box. - const T d = std::min(0.0, delta[delta.maxDir(false)]) + max(Vec3T::zero(), delta).length(); + const T d = std::min(T(0.0), delta[delta.maxDir(false)]) + max(Vec3T::zero(), delta).length(); const T sign = m_flipInside ? -1.0 : 1.0; @@ -410,7 +628,7 @@ class CylinderSDF : public SignedDistanceFunction { if(m_length > 0.0 && m_radius > 0.0){ const Vec3T point = a_point - m_center; - const T para = point.dotProduct(m_axis); // Distance between a_point and cylinder center, projected onto cylinder axis. + const T para = dot(point, m_axis); const Vec3T ortho = point - para * m_axis; // Distance from cylinder axis. const T w = ortho.length() - m_radius; // Distance from cylinder wall. < 0 on inside and > 0 on outside. @@ -475,8 +693,290 @@ class CylinderSDF : public SignedDistanceFunction { bool m_flipInside; }; -#include "EBGeometry_NamespaceFooter.hpp" +/*! + @brief Inifinitely long cylinder class. Oriented along the y-axis. +*/ +template +class InfiniteCylinderSDF : public SignedDistanceFunction { +public: + + /*! + @brief No weak construction. + */ + InfiniteCylinderSDF() = delete; + + /*! + @brief Full constructor. + @param[in] a_center Center point for the cylinder. + @param[in] a_radius Cylinder radius. + @param[in] a_axis Cylinder axis. + @param[in] a_flipInside Hook for flipping inside/outside. + */ + InfiniteCylinderSDF(const Vec3T& a_center, const T& a_radius, const int a_axis, const bool a_flipInside) { + m_center = a_center; + m_radius = a_radius; + m_axis = a_axis; + m_flipInside = a_flipInside; + } + + /*! + @brief Signed distance function. + @param[in] a_point Position. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + Vec3T delta = a_point - m_center; + delta[m_axis] = 0.0; + + const T d = delta.length() - m_radius; + const T sign = m_flipInside ? -1.0 : 1.0; + + return sign * d; + } + +protected: + + /*! + @brief Cylinder center. + */ + Vec3T m_center; + + /*! + @brief Cylinder radius + */ + T m_radius; + + /*! + @brief Axis + */ + int m_axis; + + /*! + @brief Hook for making outside -> inside. + */ + bool m_flipInside; +}; + +/*! + @brief Capsulate/pill SDF. Basically a cylinder with spherical endcaps, oriented along the specified axis. +*/ +template +class CapsuleSDF : public SignedDistanceFunction { +public: + + /*! + @brief No weak construction + */ + CapsuleSDF() = delete; + + /*! + @brief Full constructor. + @param[in] a_tip1 One tip point + @param[in] a_tip2 Other center point. + @param[in] a_radius Radius. + @param[in] a_flipInside Hook for flipping inside/outside. + */ + CapsuleSDF(const Vec3T& a_tip1, const Vec3T a_tip2, const T& a_radius, const bool a_flipInside){ + const Vec3T axis = (a_tip2 - a_tip1)/length(a_tip2-a_tip1); + m_center1 = a_tip1 + a_radius*axis; + m_center2 = a_tip2 - a_radius*axis; + m_radius = a_radius; + m_flipInside = a_flipInside; + } + + /*! + @brief Implementation of the signed distance function. + @param[in] a_point Position. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + const Vec3T pa = a_point - m_center1; + const Vec3T ba = m_center2 - m_center1; + + const T h = clamp(dot(pa,ba)/dot(ba,ba), T(0.0), T(1.0)); + const T d = length(pa - h*ba) - m_radius; + const T sign = m_flipInside ? -1.0 : 1.0; + + return sign * d; + } + +protected: + + /*! + @brief Capsule center1. + */ + Vec3T m_center1; + + /*! + @brief Capsule center2. + */ + Vec3T m_center2; + + /*! + @brief Capsule radius. + */ + T m_radius; + + /*! + @brief Hook for making outside -> inside. + */ + bool m_flipInside; +}; + +/*! + @brief Signed distance field for an infinite cone. Oriented along +z. +*/ +template +class InfiniteConeSDF : public SignedDistanceFunction { +public: + + /*! + @brief Disallowed weak construction + */ + InfiniteConeSDF() = delete; + + /*! + @brief Infinite cone function + @param[in] a_tip Cone tip position + @param[in] a_angle Cone opening angle. + @param[in] a_flipInside Hook for making inside to outside. + */ + InfiniteConeSDF(const Vec3T& a_tip, const T& a_angle, const bool a_flipInside) { + constexpr T pi = 3.14159265358979323846; + + m_tip = a_tip; + m_c.x = std::sin(0.5*a_angle*pi/180.0); + m_c.y = std::cos(0.5*a_angle*pi/180.0); + m_flipInside = a_flipInside; + } + + /*! + @brief Destructor -- does nothing + */ + virtual ~InfiniteConeSDF() { + + } + + /*! + @brief Implementation of the signed distance function. + @param[in] a_point Position. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + const Vec3T delta = a_point - m_tip; + const Vec2T q(sqrt(delta[0]*delta[0] + delta[1]*delta[1]), -delta[2]); + + const T d1 = length(q - m_c * std::max(dot(q,m_c), T(0.0))); + const T d2 = d1 * ( (q.x*m_c.y-q.y*m_c.x < 0.0) ? -1.0 : 1.0 ); + + const T sign = m_flipInside ? -1.0 : 1.0; + + return sign * d2; + } + +protected: + + /*! + @brief Tip position + */ + Vec3T m_tip; + + /*! + @brief Sine/cosine of angle + */ + Vec2T m_c; + + /*! + @brief Hook for making inside -> outside. + */ + bool m_flipInside; +}; + +/*! + @brief Signed distance field for an finite cone. Oriented along +z. +*/ +template +class ConeSDF : public SignedDistanceFunction { +public: + + /*! + @brief Disallowed weak construction + */ + ConeSDF() = delete; + + /*! + @brief Finite cone function + @param[in] a_tip Cone tip position + @param[in] a_height Cone height, measured from top to bottom. + @param[in] a_angle Cone opening angle. + @param[in] a_flipInside Hook for making inside to outside. + */ + ConeSDF(const Vec3T& a_tip, const T& a_height, const T& a_angle, const bool a_flipInside) { + constexpr T pi = 3.14159265358979323846; + + m_tip = a_tip; + m_height = a_height; + m_c.x = std::sin(0.5*a_angle*pi/180.0); + m_c.y = std::cos(0.5*a_angle*pi/180.0); + m_flipInside = a_flipInside; + } -#include "EBGeometry_AnalyticDistanceFunctions.hpp" + /*! + @brief Destructor -- does nothing + */ + virtual ~ConeSDF() { + + } + + /*! + @brief Implementation of the signed distance function. + @param[in] a_point Position. + */ + virtual T signedDistance(const Vec3T& a_point) const noexcept override { + const Vec3T delta = a_point - m_tip; + const T dr = sqrt(delta[0]*delta[0] + delta[1]*delta[1]); + const T dz = delta[2]; + + constexpr T zero = T(0.0); + constexpr T one = T(1.0); + + const Vec2T q = m_height * Vec2T(m_c.x/m_c.y,-1.0); + const Vec2T w = Vec2T(dr, dz); + const Vec2T a = w - clamp(dot(w,q)/dot(q,q), zero, one) * q; + const Vec2T b = w - Vec2T(q.x*clamp( w.x/q.x, zero, one ), q.y); + + auto sign = [](const T& x) { + return (x > zero) - (x < zero); + }; + + const T k = sign(q.y); + const T d = std::min(dot(a,a), dot(b,b)); + const T s = std::max(k*(w.x*q.y-w.y*q.x), k*(w.y-q.y)); + const T flip = m_flipInside ? -one : one; + + return flip * sqrt(d) * sign(s); + } + +protected: + + /*! + @brief Tip position + */ + Vec3T m_tip; + + /*! + @brief Sine/cosine of angle + */ + Vec2T m_c; + + /*! + @brief Cone height + */ + T m_height; + + /*! + @brief Hook for making inside -> outside. + */ + bool m_flipInside; +}; + +#include "EBGeometry_NamespaceFooter.hpp" #endif diff --git a/Source/EBGeometry_SignedDistanceFunction.hpp b/Source/EBGeometry_SignedDistanceFunction.hpp index 3fd774a6..e3099064 100644 --- a/Source/EBGeometry_SignedDistanceFunction.hpp +++ b/Source/EBGeometry_SignedDistanceFunction.hpp @@ -45,6 +45,15 @@ class SignedDistanceFunction { */ virtual T signedDistance(const Vec3T& a_point) const noexcept = 0; + /*! + @brief Signed distance normal vector. + @details Computed using finite differences with step a_delta + @param[in] a_point 3D point + @param[in] a_delta Finite difference step + */ + inline + virtual Vec3T normal(const Vec3T& a_point, const T& a_delta) const noexcept; + /*! @brief Translate signed distance function. @param[in] a_translation Distance to translate the function. diff --git a/Source/EBGeometry_SignedDistanceFunctionImplem.hpp b/Source/EBGeometry_SignedDistanceFunctionImplem.hpp index 2362b5b1..ed1dfbc9 100644 --- a/Source/EBGeometry_SignedDistanceFunctionImplem.hpp +++ b/Source/EBGeometry_SignedDistanceFunctionImplem.hpp @@ -17,16 +17,19 @@ #include "EBGeometry_NamespaceHeader.hpp" template +inline void SignedDistanceFunction::translate(const Vec3T& a_translation) noexcept { m_transformOps.emplace_back(std::make_shared > (a_translation)); } template +inline void SignedDistanceFunction::rotate(const T a_angle, const int a_axis) noexcept { m_transformOps.emplace_back(std::make_shared >(a_angle, a_axis)); } template +inline Vec3T SignedDistanceFunction::transformPoint(const Vec3T& a_point) const noexcept { auto p = a_point; @@ -37,6 +40,26 @@ Vec3T SignedDistanceFunction::transformPoint(const Vec3T& a_point) cons return p; } +template +inline +Vec3T SignedDistanceFunction::normal(const Vec3T& a_point, const T& a_delta) const noexcept { + + Vec3T n = Vec3T::zero(); + + const T id = 1./(2*a_delta); + + for (size_t dir = 0; dir < 3; dir++){ + const T hi = this->signedDistance(a_point + a_delta * Vec3T::unit(dir)); + const T lo = this->signedDistance(a_point - a_delta * Vec3T::unit(dir)); + + n[dir] = (hi - lo)/id; + } + + n /= n.length(); + + return n; +} + #include "EBGeometry_NamespaceFooter.hpp" #endif diff --git a/Source/EBGeometry_Vec.hpp b/Source/EBGeometry_Vec.hpp index b363fc66..a968a6c1 100644 --- a/Source/EBGeometry_Vec.hpp +++ b/Source/EBGeometry_Vec.hpp @@ -258,6 +258,13 @@ class Vec3T { inline static constexpr Vec3T one() noexcept; + /*! + @brief Return av vector with x = y = z = 1 + @param[in] a_dir Dircetion + */ + inline + static constexpr Vec3T unit(const int a_dir) noexcept; + /*! @brief Return a vector with minimum representable components. */ @@ -513,7 +520,7 @@ inline Vec3T operator/(const T& s, const Vec3T& u) noexcept; /*! - @brief Minimum fucntion. Returns new vector with component-wise minimums. + @brief Minimum function. Returns new vector with component-wise minimums. @param[in] u Vector @param[in] v Other vector @return Returns new vector with components X[0] = std::min(u.X[0], v.X[0]) and so on @@ -523,7 +530,7 @@ inline Vec3T min(const Vec3T& u, const Vec3T& v) noexcept; /*! - @brief Minimum fucntion. Returns new vector with component-wise minimums. + @brief Maximum function. Returns new vector with component-wise minimums. @param[in] u Vector @param[in] v Other vector @return Returns new vector with components X[0] = std::max(u.X[0], v.X[0]) and so on @@ -532,6 +539,60 @@ template inline Vec3T max(const Vec3T& u, const Vec3T& v) noexcept; +/*! + @brief Dot product function. + @param[in] u Vector + @param[in] v Other vector +*/ +template +inline +T dot(const Vec3T& u, const Vec3T& v) noexcept; + +/*! + @brief Length function + @param[in] v Vector. +*/ +template +inline +T length(const Vec3T& v) noexcept; + +/*! + @brief Minimum function. Returns new vector with component-wise minimums. + @param[in] u Vector + @param[in] v Other vector + @return Returns new vector with components x = std::min(u.x, v.x). +*/ +template +inline +Vec2T min(const Vec2T& u, const Vec2T& v) noexcept; + +/*! + @brief Maximum function. Returns new vector with component-wise minimums. + @param[in] u Vector + @param[in] v Other vector + @return Returns new vector with components x = std::max(u.x, v.x). +*/ +template +inline +Vec2T max(const Vec2T& u, const Vec2T& v) noexcept; + +/*! + @brief Dot product function. + @param[in] u Vector + @param[in] v Other vector +*/ +template +inline +T dot(const Vec2T& u, const Vec2T& v) noexcept; + +/*! + @brief Length function + @param[in] v Vector. +*/ +template +inline +T length(const Vec2T& v) noexcept; + #include "EBGeometry_NamespaceFooter.hpp" #include "EBGeometry_VecImplem.hpp" diff --git a/Source/EBGeometry_VecImplem.hpp b/Source/EBGeometry_VecImplem.hpp index 5e3565c4..cc997dff 100644 --- a/Source/EBGeometry_VecImplem.hpp +++ b/Source/EBGeometry_VecImplem.hpp @@ -212,6 +212,15 @@ constexpr Vec3T Vec3T::one() noexcept { return Vec3T(1, 1, 1); } +template +inline +constexpr Vec3T Vec3T::unit(const int a_dir) noexcept { + Vec3T v = Vec3T::zero(); + v[a_dir] = 1.0; + + return v; +} + template inline constexpr Vec3T Vec3T::min() noexcept { @@ -479,6 +488,44 @@ Vec3T max(const Vec3T& u, const Vec3T& v) noexcept { std::max(u[2], v[2])); } +template +inline +T dot(const Vec3T& u, const Vec3T& v) noexcept { + return u.dot(v); +} + +template +inline +T length(const Vec3T& v) noexcept { + return v.length(); +} + +template +inline +Vec2T min(const Vec2T& u, const Vec2T& v) noexcept { + return Vec2T(std::min(u.x, v.x), + std::min(u.y, v.y)); +} + +template +inline +Vec2T max(const Vec2T& u, const Vec2T& v) noexcept { + return Vec2T(std::max(u.x, v.x), + std::max(u.y, v.y)); +} + +template +inline +T dot(const Vec2T& u, const Vec2T& v) noexcept { + return u.dot(v); +} + +template +inline +T length(const Vec2T& v) noexcept { + return v.length(); +} + #include "EBGeometry_NamespaceFooter.hpp" #endif diff --git a/docs/.buildinfo b/docs/.buildinfo deleted file mode 100644 index 9d69e547..00000000 --- a/docs/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 8deed2bab0d72e58e2816d885c452ff7 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/BVH.doctree b/docs/.doctrees/BVH.doctree deleted file mode 100644 index 407dd5ba..00000000 Binary files a/docs/.doctrees/BVH.doctree and /dev/null differ diff --git a/docs/.doctrees/Concepts.doctree b/docs/.doctrees/Concepts.doctree deleted file mode 100644 index 612ed773..00000000 Binary files a/docs/.doctrees/Concepts.doctree and /dev/null differ diff --git a/docs/.doctrees/DCEL.doctree b/docs/.doctrees/DCEL.doctree deleted file mode 100644 index b0e2bc92..00000000 Binary files a/docs/.doctrees/DCEL.doctree and /dev/null differ diff --git a/docs/.doctrees/Example_AMReX.doctree b/docs/.doctrees/Example_AMReX.doctree deleted file mode 100644 index 44e48675..00000000 Binary files a/docs/.doctrees/Example_AMReX.doctree and /dev/null differ diff --git a/docs/.doctrees/Example_Basic.doctree b/docs/.doctrees/Example_Basic.doctree deleted file mode 100644 index efb33f80..00000000 Binary files a/docs/.doctrees/Example_Basic.doctree and /dev/null differ diff --git a/docs/.doctrees/Example_Union.doctree b/docs/.doctrees/Example_Union.doctree deleted file mode 100644 index a079c66c..00000000 Binary files a/docs/.doctrees/Example_Union.doctree and /dev/null differ diff --git a/docs/.doctrees/Examples.doctree b/docs/.doctrees/Examples.doctree deleted file mode 100644 index 15c2f66d..00000000 Binary files a/docs/.doctrees/Examples.doctree and /dev/null differ diff --git a/docs/.doctrees/ImplemBVH.doctree b/docs/.doctrees/ImplemBVH.doctree deleted file mode 100644 index c665ab7c..00000000 Binary files a/docs/.doctrees/ImplemBVH.doctree and /dev/null differ diff --git a/docs/.doctrees/ImplemDCEL.doctree b/docs/.doctrees/ImplemDCEL.doctree deleted file mode 100644 index 6310123a..00000000 Binary files a/docs/.doctrees/ImplemDCEL.doctree and /dev/null differ diff --git a/docs/.doctrees/ImplemSDF.doctree b/docs/.doctrees/ImplemSDF.doctree deleted file mode 100644 index 703064e3..00000000 Binary files a/docs/.doctrees/ImplemSDF.doctree and /dev/null differ diff --git a/docs/.doctrees/ImplemUnion.doctree b/docs/.doctrees/ImplemUnion.doctree deleted file mode 100644 index 1b25744a..00000000 Binary files a/docs/.doctrees/ImplemUnion.doctree and /dev/null differ diff --git a/docs/.doctrees/ImplemVec.doctree b/docs/.doctrees/ImplemVec.doctree deleted file mode 100644 index e4fa999e..00000000 Binary files a/docs/.doctrees/ImplemVec.doctree and /dev/null differ diff --git a/docs/.doctrees/Implementation.doctree b/docs/.doctrees/Implementation.doctree deleted file mode 100644 index ad5967e7..00000000 Binary files a/docs/.doctrees/Implementation.doctree and /dev/null differ diff --git a/docs/.doctrees/Introduction.doctree b/docs/.doctrees/Introduction.doctree deleted file mode 100644 index 7a20da17..00000000 Binary files a/docs/.doctrees/Introduction.doctree and /dev/null differ diff --git a/docs/.doctrees/ZZReferences.doctree b/docs/.doctrees/ZZReferences.doctree deleted file mode 100644 index e886d091..00000000 Binary files a/docs/.doctrees/ZZReferences.doctree and /dev/null differ diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle deleted file mode 100644 index 85d64aae..00000000 Binary files a/docs/.doctrees/environment.pickle and /dev/null differ diff --git a/docs/.doctrees/index.doctree b/docs/.doctrees/index.doctree deleted file mode 100644 index f9bfbbc0..00000000 Binary files a/docs/.doctrees/index.doctree and /dev/null differ diff --git a/docs/BVH.html b/docs/BVH.html deleted file mode 100644 index 7f107681..00000000 --- a/docs/BVH.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - - - - Bounding volume hierarchies — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Bounding volume hierarchies

-
-

Basic concept

-

Bounding Volume Hierarchies (BVHs) are comparatively simple data structures that can accelerate closest-point searches by orders of magnitude. -BVHs are tree structures where the regular nodes are bounding volumes that enclose all geometric primitives (e.g. polygon faces) further down in the hierarchy. -This means that every node in a BVH is associated with a bounding volume. -The bounding volume can, in principle, be any type of volume. -Moreover, there are two types of nodes in a BVH:

-
    -
  • Regular nodes. These do not contain any of the primitives/objects. -They are also called interior nodes, and store references to their child nodes.

  • -
  • Leaf nodes. These lie at the bottom of the BVH tree and each of them contain a subset of the geometric primitives.

  • -
-

Fig. 4 shows a concept of BVH partitioning of a set of triangles. -Here, \(P\) is a regular node whose bounding volume encloses all geometric primitives in it’s subtree. -It’s bounding volume, an axis-aligned bounding box or AABB for short, is illustrated by a dashed rectangle. -The interior node \(P\) stores references to the leaf nodes \(L\) and \(R\). -As shown in Fig. 4, \(L\) contains 5 triangles enclosed by another AABB. -The other child node \(R\) contains 6 triangles that are also enclosed by an AABB. -Note that the bounding volume for \(P\) encloses the bounding volumes of \(L\) and \(R\) and that the bounding volumes for \(L\) and \(R\) contain a small overlap.

-
-_images/TrianglesBVH.png -

Fig. 4 Example of BVH partitioning for enclosing triangles. The regular node \(P\) contains two leaf nodes \(L\) and \(R\) which contain the primitives (triangles).

-
-

There is no fundamental limitation to what type of primitives/objects can be enclosed in BVHs, which makes BVHs useful beyond triangulated data sets. -For example, analytic signed distance functions can also be embedded in BVHs, provided that we can construct a bounding volume that encloses the object.

-
-

Note

-

EBGeometry limited to binary trees, but supports \(k\) -ary trees where each regular node has \(k\) children nodes.

-
-
-
-

Construction

-

BVHs have extremely flexible rules regarding their construction. -For example, the child nodes \(L\) and \(R\) in Fig. 4 could be partitioned in any number of ways, with the only requirement being that each child node gets at least one triangle.

-

Although the rules for BVH construction are highly flexible, performant BVHs are completely reliant on having balanced trees with the following heuristic properties:

-
    -
  • Tight bounding volumes that enclose the primitives as tightly as possible.

  • -
  • Minimal overlap between the bounding volumes.

  • -
  • Balanced, in the sense that the tree depth does not vary greatly through the tree, and there is approximately the same number of primitives in each leaf node.

  • -
-

Construction of a BVH is usually done recursively, from top to bottom (so-called top-down construction). -Alternative construction methods also exist, but are not used in EBGeometry. -In this case one can represent the BVH construction of a \(k\) -ary tree is done through a single function:

-
-(2)\[\textrm{Partition}\left(\vec{O}\right): \vec{O} \rightarrow \left(\vec{O}_1, \vec{O}_2, \ldots, \vec{O}_k\right),\]
-

where \(\vec{O}\) is an input a list of objects/primitives, which is partitioned into \(k\) new list of primitives. -Note that the lists \(\vec{O}_i\) do not contain duplicates, there is a unique set of primitives associated in each new leaf node. -Top-down construction can thus be illustrated as a recursive procedure:

-
topDownConstruction(Objects):
-   partitionedObjects = Partition(Objects)
-
-   forall p in partitionedObjects:
-      child = insertChildNode(newObjects)
-
-      if(enoughPrimitives(child)):
-         child.topDownConstruction(child.objects)
-
-
-

In practice, the above procedure is supplemented by more sophisticated criteria for terminating the recursion, as well as routines for creating the bounding volumes around the newly inserted nodes. -EBGeometry provides these by letting the top-down construction calls take polymorphic lambdas as arguments for partitioning, termination, and bounding volume construction.

-
-
-

Signed distance function

-

When computing the signed distance function to objects embedded in a BVH, one takes advantage of the hierarcical embedding of the primitives. -Consider the case in Fig. 5, where the goal of the BVH traversal is to minimize the number of branches and nodes that are visited. -For the traversal algorithm we consider the following steps:

-
    -
  • When descending from node \(P\) we determine that we first investigate the left subtree (node \(A\)) since its bounding volume is closer than the bounding volumes for the other subtree. -The other subtree will is investigated after we have recursed to the bottom of the \(A\) subtree.

  • -
  • Since \(A\) is a leaf node, we find the signed distance from \(\mathbf{x}\) to the primitives in \(A\). -This requires us to iterate over all the triangles in \(A\).

  • -
  • When moving back to \(P\), we find that the distance to the primitives in \(A\) is shorter than the distance from \(\mathbf{x}\) to the bounding volume that encloses nodes \(B\) and \(C\). -This immediately permits us to prune the entire subtree containing \(B\) and \(C\).

  • -
-
-_images/TreePruning.png -

Fig. 5 Example of BVH tree pruning.

-
-
-

Warning

-

Note that all BVH traversal algorithms become inefficient when the primitives are all at approximately the same distance from the query point. -For example, it is necessary to traverse almost the entire tree when one tries to compute the signed distance at the origin of a tesselated sphere.

-
-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Concepts.html b/docs/Concepts.html deleted file mode 100644 index dfab7602..00000000 --- a/docs/Concepts.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - - - - Signed distance fields — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Signed distance fields

-

The signed distance function is defined as a function \(S: \mathbb{R}^3 \rightarrow \mathbb{R}\), and returns the signed distance to the object. -The signed distance function has the additional property:

-
-(1)\[\left|\nabla S(\mathbf{x})\right| = 1 \quad\textrm{everywhere}.\]
-

In EBGeometry we use the following convention:

-
-\[\begin{split}S(\mathbf{x}) = -\begin{cases} -> 0, & \textrm{for points outside the object}, \\ -< 0, & \textrm{for points inside the object}. -\end{cases}\end{split}\]
-

Signed distance functions are also implicit functions (but the reverse statement is not true). -For example, the signed distance function for a sphere with center \(\mathbf{x}_0\) and radius \(R\) can be written

-
-\[S_{\textrm{sph}}\left(\mathbf{x}\right) = \left|\mathbf{x} - \mathbf{x}_0\right| - R.\]
-

An example of an implicit function for the same sphere is

-
-\[I_{\textrm{sph}}\left(\mathbf{x}\right) = \left|\mathbf{x} - \mathbf{x}_0\right|^2 - R^2.\]
-

An important difference between these is the Eikonal property in Eq. 1, ensuring that the signed distance function always returns the exact distance to the object.

-
-
-

Transformations

-

Signed distance functions retain the Eikonal property for the following set of transformations:

-
    -
  • Rotations.

  • -
  • Translations.

  • -
-
-
-

Unions

-

Unions of signed distance fields are also signed distance fields provided that the objects do not intersect or touch. -For overlapping objects the signed distance function is not well-defined (since the interior and exterior are not well-defined).

-

For non-overlapping objects represented as signed distance fields \(\left(S_1\left(\mathbf{x}\right), S_2\left(\mathbf{x}\right), \ldots\right)\), the composite signed distance field is

-
-\[S\left(\mathbf{x}\right) = S_k\left(\mathbf{x}\right),\]
-

where \(k\) is index of the closest object (which is found by evaluating \(\left|S_i\left(\mathbf{x}\right)\right|\).

-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/DCEL.html b/docs/DCEL.html deleted file mode 100644 index 5e407a17..00000000 --- a/docs/DCEL.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - DCEL mesh structure — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

DCEL mesh structure

-
-

Basic concept

-

EBGeometry uses a doubly-connected edge list (DCEL) structure for storing surface meshes. -The DCEL structures consist of the following objects:

-
    -
  • Planar polygons (facets).

  • -
  • Half-edges.

  • -
  • Vertices.

  • -
-

As shown in Fig. 1, the half-edge is the most important data structure. -Half-edges circulate the inside of the facet, with pointer-access to the previous and next half-edge. -A half-edge also stores a reference to it’s starting vertex, as well as a reference to it’s pair-edge. -From the DCEL structure we can easily obtain all edges or vertices belonging to a single facet, and also “jump” to a neighboring facet by fetching the pair edge.

-
-_images/DCEL.png -

Fig. 1 DCEL mesh structure. Each half-edge stores references to previous/next half-edges, the pair edge, and the starting vertex. -Vertices store a coordinate as well as a reference to one of the outgoing half-edges.

-
-

In EBGeometry the half-edge data structure is implemented in it’s own namespace EBGeometry::Dcel. -This is a comparatively standard implementation of the DCEL structure, supplemented by functions that permit signed distance computations to various features on such a mesh.

-
-

Important

-

A signed distance field requires a watertight and orientable surface mesh. -If the surface mesh consists of holes or flipped facets, the signed distance function does not exist.

-
-
-
-

Signed distance

-

When computing the signed distance function, the closest point on the surface mesh can be one of the vertices, (half-) edges, or faces, see Fig. 2.

-
-_images/PolygonProjection.png -

Fig. 2 Possible closest-feature cases after projecting a point \(\mathbf{x}\) to the plane of a polygon face.

-
-

It is therefore necessary to distinguish between three cases:

-
    -
  1. Facet/Polygon face.

    -

    When computing the distance from a point \(\mathbf{x}\) to the polygon face we first determine if the projection of \(\mathbf{x}\) to the face’s plane lies inside or outside the face. -This is more involved than one might think, and it is done by first computing the two-dimensional projection of the polygon face, ignoring one of the coordinates. -Next, we determine, using 2D algorithms, if the projected point lies inside the embedded 2D representation of the polygon face. -Various algorithms for this are available, such as computing the winding number, the crossing number, or the subtended angle between the projected point and the 2D polygon.

    -
    -

    Note

    -

    EBGeometry uses the crossing number algorithm by default.

    -
    -

    If the point projects to the inside of the face, the signed distance is just \(d = \mathbf{n}_f\cdot\left(\mathbf{x} - \mathbf{x}_f\right)\) where \(\mathbf{n}_f\) is the face normal and \(\mathbf{x}_f\) is a point on the face plane (e.g., a vertex). -If the point projects to outside the polygon face, the closest feature is either an edge or a vertex.

    -
  2. -
  3. Edge.

    -

    When computing the signed distance to an edge, the edge is parametrized as \(\mathbf{e}(t) = \mathbf{x}_0 + \left(\mathbf{x}_1 - \mathbf{x}_0\right)t\), where \(\mathbf{x}_0\) and \(\mathbf{x}_1\) are the starting and ending vertex coordinates. -The point \(\mathbf{x}\) is projected to this line, and if the projection yields \(t^\prime \in [0,1]\) then the edge is the closest point. -In that case the signed distance is the projected distance and the sign is given by the sign of \(\mathbf{n}_e\cdot\left(\mathbf{x} - \mathbf{x}_0\right)\) where \(\mathbf{n}_e\) is the pseudonormal vector of the edge. -Otherwise, the closest point is one of the vertices.

    -
  4. -
  5. Vertex.

    -

    If the closest point is a vertex then the signed distance is simply \(\mathbf{n}_v\cdot\left(\mathbf{x}-\mathbf{x}_v\right)\) where \(\mathbf{n}_v\) is the vertex pseudonormal and \(\mathbf{x}_v\) is the vertex position.

    -
  6. -
-
-
-

Normal vectors

-

The normal vectors for edges \(\mathbf{n}_e\) and vertices \(\mathbf{n}_v\) are, unlike the facet normal, not uniquely defined. -For both edges and vertices we use the pseudonormals from [1]:

-
-\[\mathbf{n}_{e} = \frac{1}{2}\left(\mathbf{n}_{f} + \mathbf{n}_{f^\prime}\right).\]
-

where \(f\) and \(f^\prime\) are the two faces connecting the edge. -The vertex pseudonormal are given by

-
-\[\mathbf{n}_{v} = \frac{\sum_i\alpha_i\mathbf{n}_{f_i}}{\left|\sum_i\alpha_i\right|},\]
-

where the sum runs over all faces which share \(v\) as a vertex, and where \(\alpha_i\) is the subtended angle of the face \(f_i\), see Fig. 3.

-
-_images/Pseudonormal.png -

Fig. 3 Edge and vertex pseudonormals.

-
-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Example_AMReX.html b/docs/Example_AMReX.html deleted file mode 100644 index 5ae0d5ea..00000000 --- a/docs/Example_AMReX.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - - - - Integration with AMReX — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Integration with AMReX

-
-

Warning

-

This example requires you to install AMReX

-
-

This example is given in Examples/AMReX/main.cpp and shows how to expose EBGeometry’s DCEL and BVH functionality to AMReX.

-

We will focus on the following parts of the code:

-
namespace amrex {
-  namespace EB2 {
-
-    /*!
-      @brief This is an AMReX-capable version of the EBGeometry BVH accelerator. It is templated as T, BV, K which indicate
-      the EBGeometry precision, bounding volume, and tree degree. 
-    */
-    template <class T, class BV, int K>
-    class SignedDistanceBVH {
-    public:
-
-      using BuilderNode = EBGeometry::BVH::NodeT<T, EBGeometry::Dcel::FaceT<T>, BV, K>;
-      using LinearNode = EBGeometry::BVH::LinearBVH<T, EBGeometry::Dcel::FaceT<T>, BV, K>;
-      using Vec3 = EBGeometry::Vec3T<T>;
-
-      SignedDistanceBVH(const std::string a_filename, const bool a_flipSign) {
-
-	// 1. Read mesh from file. 
-	auto mesh = EBGeometry::Dcel::Parser::PLY<T>::readASCII(a_filename);
-
-	// 2. Create a standard BVH hierarchy. This is not a compact ree. 
-	auto root = std::make_shared<BuilderNode>(mesh->getFaces());
-	root->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor<T, BV>,
-						EBGeometry::Dcel::defaultPartitioner<T, BV, K>,
-						EBGeometry::Dcel::defaultStopFunction<T, BV, K>);
-
-	// 3. Flatten the tree onto a tighter memory representation. 
-	m_rootNode = root->flattenTree();
-      }
-
-      Real operator() (AMREX_D_DECL(Real x, Real y, Real z)) const noexcept {
-	const Real sign = (m_flipSign) ? -1.0 : 1.0;
-
-	return sign * m_rootNode->signedDistance(Vec3(x,y,z));
-      };
-
-      inline Real operator() (const RealArray& p) const noexcept {
-        return this->operator()(AMREX_D_DECL(p[0],p[1],p[2]));
-      }
-
-  }
-}
-
-
-
-

Constructing the BVH

-

When constructing the signed distance function we use the DCEL and BVH functionality directly in the constructor:

-
      SignedDistanceBVH(const std::string a_filename, const bool a_flipSign) {
-	auto mesh = EBGeometry::Dcel::Parser::PLY<T>::readASCII(a_filename);
-	auto root = std::make_shared<BuilderNode>(mesh->getFaces());
-	root->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor<T, BV>,
-						EBGeometry::Dcel::defaultPartitioner<T, BV, K>,
-						EBGeometry::Dcel::defaultStopFunction<T, BV, K>);
-	m_rootNode = root->flattenTree();
-      }
-
-
-

Note that we are performing the following steps:

-
    -
  • Using the PLY parser for creating a DCEL mesh.

  • -
  • Constructing a BVH for the DCEL faces.

  • -
  • Flattening the BVH tree for performance.

  • -
-
-
-

Exposing signed distance functions

-

Next, we expose the signed distance function to AMReX by implementing the functions

-
      Real operator() (AMREX_D_DECL(Real x, Real y, Real z)) const noexcept {
-	const Real sign = (m_flipSign) ? -1.0 : 1.0;
-
-	return sign * m_rootNode->signedDistance(Vec3(x,y,z));
-      };
-
-      inline Real operator() (const RealArray& p) const noexcept {
-        return this->operator()(AMREX_D_DECL(p[0],p[1],p[2]));
-      }
-
-
-

Note that the AMReX DECL macros expand to (Real x, Real y) in 2D, but here we assume that the user has compiled for 3D.

-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Example_Basic.html b/docs/Example_Basic.html deleted file mode 100644 index 716fcf23..00000000 --- a/docs/Example_Basic.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - - - - Reading mesh files — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Reading mesh files

-

This example is given in Examples/Basic/main.cpp and shows the following steps:

-
    -
  1. How to read a PLY file into a DCEL mesh.

  2. -
  3. How to partition and flatten a BVH tree.

  4. -
  5. How to call the signed distance function and provide a performance comparison between SDF representations.

  6. -
-

We will focus on the following parts of the code:

-
int main(int argc, char *argv[]) {
-
-  // Parse the mesh from file. One can call the signed distance function directly on the mesh, but it will
-  // iterate through every facet. 
-  std::shared_ptr<EBGeometry::Dcel::MeshT<T> > directSDF = EBGeometry::Dcel::Parser::PLY<T>::readASCII(file);
-
-  // Create a bounding-volume hierarchy of the same mesh type. We begin by create the root node and supplying all the mesh faces to it. Here,
-  // our bounding volume hierarchy bounds the facets in a binary tree.
-  auto bvhSDF = std::make_shared<BVH::NodeT<T, FaceT<T>, BV, K> > (directSDF->getFaces());
-  bvhSDF->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor<T, BV>,
-					    EBGeometry::Dcel::defaultPartitioner<T, BV, K>,
-					    EBGeometry::Dcel::defaultStopFunction<T, BV, K>);
-
-  auto linSDF = bvhSDF->flattenTree();  
-
-}
-
-
-
-

Reading the surface mesh

-

The first block of code parser a PLY file (here called file) and returns a DCEL mesh description of the PLY file. -We point out that the parser will issue errors if the PLY file is not watertight and orientable.

-
-
-

Constructing the BVH

-

The second block of code, which begins with

-
  auto bvhSDF = std::make_shared<BVH::NodeT<T, FaceT<T>, BV, K> > (directSDF->getFaces());
-
-
-

creates a BVH root node and provides it with all the DCEL faces. -The next block of code

-
  bvhSDF->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor<T, BV>,
-					    EBGeometry::Dcel::defaultPartitioner<T, BV, K>,
-					    EBGeometry::Dcel::defaultStopFunction<T, BV, K>);
-
-
-

partitions the BVH using pre-defined partitioning functions (see BVH integration for details).

-

Finally, the BVH tree is flatten by

-
  auto linSDF = bvhSDF->flattenTree();  
-
-
-
-
-

Summary

-

Note that all the objects directSDF, bvhSDF, and linSDF represent precisely the same distance field. -The objects differ in how they compute it:

-
    -
  • directSDF will iterate through all faces in the mesh.

  • -
  • bvhSDF uses full BVH tree representation, pruning branches during the tree traversal.

  • -
  • linSDF uses compact BVH tree representation, also pruning branches during the tree traversal.

  • -
-

All the above functions give the same result, but with widely different performance metrics.

-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Example_Union.html b/docs/Example_Union.html deleted file mode 100644 index 74240ddb..00000000 --- a/docs/Example_Union.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - - - - - - Unions — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Unions

-

This example is given in Examples/Union/main.cpp and shows the following steps:

-
    -
  1. The creation of scene composed of an array of spheres.

  2. -
  3. Instantiation of a standard union for the signed distance (see Unions).

  4. -
  5. Instantiation of a BVH-enabled union for the signed distance (see Unions).

  6. -
-

We focus on the following parts of the code:

-
int main() {
-
-  // Make a sphere array consisting of about 10^6 spheres. The distance between the spheres is 2*radius
-  std::vector<std::shared_ptr<SDF> > spheres;
-
-  constexpr T radius = 1.0;
-  constexpr int N  = 100;
-
-  for (int i = 0; i < N; i++){
-    for (int j = 0; j < N; j++){
-      for (int k = 0; k < N; k++){
-
-	const T x = i * (3 * radius);
-	const T y = j * (3 * radius);
-	const T z = k * (3 * radius);
-
-	const Vec3 center(x,y,z);
-	
-	spheres.emplace_back(std::make_shared<Sphere>(center, radius, false));
-      }
-    }
-  }
-
-  // Make a standard union of these spheres. This is the union object which iterates through each and every
-  // object in the scene. 
-  EBGeometry::Union<T> slowUnion(spheres, false);
-
-  // Make a fast union. To do this we must have the SDF objects (our vector of spheres) as well as a way for enclosing
-  // these objects. We need to define ourselves a lambda that creates an appropriate bounding volumes for each SDF. 
-  EBGeometry::BVH::BVConstructorT<SDF, AABB> aabbConstructor = [](const std::shared_ptr<const SDF>& a_prim){
-    const Sphere& sph = static_cast<const Sphere&> (*a_prim);
-
-    const Vec3& c = sph.getCenter();
-    const T&    r = sph.getRadius();
-    
-    const Vec3 lo = c - r*Vec3::one();
-    const Vec3 hi = c + r*Vec3::one();
-
-    return AABB(lo, hi);
-  };
-
-  EBGeometry::UnionBVH<T, AABB, K> fastUnion(spheres, false, aabbConstructor);
-
-
-
-

Creating the spheres

-

In the first block of code we are defining one million spheres that lie on a three-dimensional lattice, where each sphere has a radius of one:

-
  // Make a sphere array consisting of about 10^6 spheres. The distance between the spheres is 2*radius
-  std::vector<std::shared_ptr<SDF> > spheres;
-
-  constexpr T radius = 1.0;
-  constexpr int N  = 100;
-
-  for (int i = 0; i < N; i++){
-    for (int j = 0; j < N; j++){
-      for (int k = 0; k < N; k++){
-
-	const T x = i * (3 * radius);
-	const T y = j * (3 * radius);
-	const T z = k * (3 * radius);
-
-	const Vec3 center(x,y,z);
-	
-	spheres.emplace_back(std::make_shared<Sphere>(center, radius, false));
-      }
-    }
-  }
-
-
-
-
-

Creating standard union

-

In the second block of code we are simply creating a standard signed distance function union:

-
  EBGeometry::Union<T> slowUnion(spheres, false);
-
-
-

For implementation details regarding the standard union, see Unions.

-
-
-

Creating BVH-enabled union

-

In the third block of code we create a BVH-enabled union. -To do so, we must first provide a function which can create bounding volumes around each object:

-
  EBGeometry::BVH::BVConstructorT<SDF, AABB> aabbConstructor = [](const std::shared_ptr<const SDF>& a_prim){
-    const Sphere& sph = static_cast<const Sphere&> (*a_prim);
-
-    const Vec3& c = sph.getCenter();
-    const T&    r = sph.getRadius();
-    
-    const Vec3 lo = c - r*Vec3::one();
-    const Vec3 hi = c + r*Vec3::one();
-
-    return AABB(lo, hi);
-  };
-
-
-

Here, we use axis-aligned boxes but we could also have used other types of bounding volumes.

-
-
-

Typical output

-

The above example shows two methods of creating unions. -When running the example the typical output is something like:

-
Partitioning spheres
-Computing distance with slow union
-Computing distance with fast union
-Distance and time using standard union = -1, which took 26.7353 ms
-Distance and time using optimize union = -1, which took 0.003527 ms
-Speedup = 7580.19
-
-
-

where we note that the optimized union was about 7500 times faster than the “standard” union.

-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Examples.html b/docs/Examples.html deleted file mode 100644 index 30b633d7..00000000 --- a/docs/Examples.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - - - - <no title> — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -

Below, we consider a few examples that show how to use EBGeometry. -All the examples are located in the examples folder. -For instructions on how to compile and run the examples, refer to the README file in the example folder.

- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/ImplemBVH.html b/docs/ImplemBVH.html deleted file mode 100644 index 133306b4..00000000 --- a/docs/ImplemBVH.html +++ /dev/null @@ -1,518 +0,0 @@ - - - - - - - - - - - Bounding volume hierarchy — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Bounding volume hierarchy

-

The BVH functionality is encapsulated in the namespace EBGeometry::BVH. -For the full API, see the doxygen API -There are two types of BVHs supported.

-
    -
  • Direct BVHs where the nodes are stored in build order and contain references to their children, and the leaf holds primitives.

  • -
  • Compact BVHs where the nodes are stored in depth-first order and contain index offsets to children and primitives.

  • -
-

The direct BVH is encapsulated by a class

-
template <class T, class P, class BV, int K>
-class NodeT;
-
-
-

The above template parameters are:

-
    -
  • T Floating-point precision.

  • -
  • P Primitive type to be partitioned.

  • -
  • BV Bounding volume type.

  • -
  • K BVH degree. K=2 will yield a binary tree, K=3 yields a tertiary tree and so on.

  • -
-

NodeT describes regular and leaf nodes in the BVH, and has member functions for setting primitives, bounding volumes, and so on. -Importantly, NodeT is the BVH builder node, i.e. it is the class through which we recursively build the BVH, see Construction. -The compact BVH is discussed below in Compact form.

-

For getting the signed distance, NodeT has provides the following function:

-
  template <class T, class P, class BV, int K>
-  class NodeT {
-  public:
-
-    inline
-    T signedDistance(const Vec3T<T>& a_point) const noexcept;
-
-
-
-

Template constraints

-
    -
  • The primitive type P must have the following function:

    -
      -
    • T signedDistance(const Vec3T<T>& x), which returns the signed distance to the primitive.

    • -
    -
  • -
  • The bounding volume type BV must have the following functions:

    -
      -
    • T getDistance(const Vec3T<T>& x) which returns the distance from the point x to the bounding volume. -Note that if x lies within the bounding volume, the function should return a value of zero.

    • -
    • A constructor BV(const std::vector<BV>& a_otherBVs) that permit creation of a bounding volume that encloses other bounding volumes of the same type.

    • -
    -
  • -
  • K should be greater or equal to 2.

  • -
  • Currently, we do not support variable-sized trees (i.e., mixing branching ratios).

  • -
-

Note that the above constraints apply only to the BVH itself. -Partitioning functions (which are, in principle, supplied by the user) may impose extra constraints.

-
-

Important

-

EBGeometry’s BVH implementations fulfill their own template requirements on the primitive type P. -This means that objects that are themselves described by BVHs (such as triangulations) can be embedded in another BVH, permitting BVH-of-BVH type of scenes.

-
-
-
-

Bounding volumes

-

EBGeometry supports the following bounding volumes, which are defined in EBGeometry_BoundingVolumes.hpp`:

-
    -
  • BoundingSphere, templated as EBGeometry::BoundingVolumes::BoundingSphereT<T> and describes a bounding sphere. -Various constructors are available.

  • -
  • Axis-aligned bounding box, or AABB for short. -This is templated as EBGeometry::BoundingVolumes::AABBT<T>.

  • -
-

For full API details, see the doxygen API.

-
-
-

Construction

-

Constructing a BVH is done by

-
    -
  • Creating a root node and providing it with the geometric primitives.

  • -
  • Partitioning the BVH by providing.

  • -
-

The first step is usually a matter of simply constructing the root node using the following constructor:

-
template <class T, class P, class BV, int K>
-NodeT(const std::vector<std::shared_ptr<P> >& a_primitives).
-
-
-

That is, the constructor takes a list of primitives to be put in the node. -For example:

-
using T    = float;
-using Node = EBGeometry::BVH::NodeT<T>;
-
-std::vector<std::shared_ptr<MyPrimitives> > primitives;
-
-auto root = std::make_shared<Node>(primitives);
-
-
-

The second step is to recursively build the BVH, which is done through the function

-
template <class T, class P, class BV, int K>
-using StopFunctionT = std::function<bool(const NodeT<T, P, BV, K>& a_node)>;
-
-template <class P, class BV>
-using BVConstructorT = std::function<BV(const std::shared_ptr<const P>& a_primitive)>;
-
-template <class P, int K>
-using PartitionerT = std::function<std::array<PrimitiveListT<P>, K>(const PrimitiveListT<P>& a_primitives)>;
-
-template <class T, class P, class BV, int K>
-NodeT<T, P, BV, K>::topDownSortAndPartitionPrimitives(const BVConstructorT<P, BV>,
-                                                      const PartitionerT<P, K>,
-                                                      const StopFunction<T, P, BV, K>);
-
-
-

Although seemingly complicated, the input arguments are simply polymorphic functions of the type indicated above, and have the following responsibilities:

-
    -
  • StopFunctionT simply takes a NodeT as input argument and determines if the node should be partitioned further. -A basic implementation which terminates the recursion when the leaf node has reached the minimum number of primitives is

    -
    EBGeometry::BVH::StopFunction<T, P, BV, K> stopFunc = [](const NodeT<T, P, BV, K>& a_node) -> bool {
    -   return a_node.getNumPrimitives() < K;
    -};
    -
    -
    -

    This will terminate the partitioning when the node has less than K primitives (in which case it can’t be partitioned further).

    -
  • -
  • BVConstructorT takes a single primitive (or strictly speaking a pointer to the primitive) and returns a bounding volume that encloses it. -For example, if the primitives P are signed distance function spheres (see Analytic functions), the BV constructor can be implemented -with AABB bounding volumes as;

    -
    using T      = float;
    -using Vec3   = EBGeometry::Vec3T<T>;
    -using AABB   = EBGeometry::BoundingVolumes::AABBT<T>;
    -using Sphere = EBGeometry::SphereSDF<T>;
    -
    -EBGeometry::BVH::BVConstructor<SDF, AABB> bvConstructor = [](const std::shared_ptr<const SDF>& a_sdf){
    -   const Sphere& sph = static_cast<const Sphere&> (*a_sdf);
    -
    -   const Vec3& sphereCenter = sph.getCenter();
    -   const T&    sphereRadius = sph.getRadius();
    -
    -   const Vec3  lo = sphereCenter - r*Vec3::one();
    -   const Vec3  hi = sphereCenter + r*Vec3::one();
    -
    -   return AABB(lo, hi);
    -};
    -
    -
    -
  • -
  • PartitionerT is the partitioner function when splitting a leaf node into K new leaves. -The function takes an list of primitives which it partitions into K new list of primitives, i.e. it encapsulates Eq. 2. -As an example, we include a partitioner that is provided for integrating BVH and DCEL functionality.

    -
      template <class T, class BV, int K>
    -  EBGeometry::BVH::PartitionerT<EBGeometry::Dcel::FaceT<T>, BV, K> chunkPartitioner = [](const PrimitiveList<T>& a_primitives) -> std::array<PrimitiveList<T>, K> {
    -    Vec3T<T> lo =  Vec3T<T>::max();
    -    Vec3T<T> hi = -Vec3T<T>::max();
    -    for (const auto& p : a_primitives){
    -      lo = min(lo, p->getCentroid());
    -      hi = max(hi, p->getCentroid());
    -    }
    -    
    -    const int splitDir = (hi-lo).maxDir(true);
    -
    -    // Sort the primitives along the above coordinate direction. 
    -    PrimitiveList<T> sortedPrimitives(a_primitives);
    -    
    -    std::sort(sortedPrimitives.begin(), sortedPrimitives.end(),
    -	      [splitDir](const std::shared_ptr<const FaceT<T> >& f1,
    -			 const std::shared_ptr<const FaceT<T> >& f2) -> bool {
    -		return f1->getCentroid(splitDir) < f2->getCentroid(splitDir);
    -	      });
    -
    -    return EBGeometry::Dcel::equalCounts<T, K>(sortedPrimitives);
    -  };
    -
    -
    -

    In the above, we are taking a list of DCEL facets in the input argument (PrimitiveList<T> expands to std::vector<std::shared_ptr<const FaceT<T> >). -We then compute the centroid locations of each facet and figure out along which coordinate axis we partition the objects (called splitDir above). -The input primitives are then sorted based on the facet centroid locations in the splitDir direction, and they are partitioned into K almost-equal chunks. -These partitions are returned and become primitives in the new leaf nodes.

    -

    There is also an example of the same type of partitioning for the BVH-accelerated union, see UnionBVH

    -
  • -
-

In general, users are free to construct their BVHs in their own way if they choose. -For the most part this will include the construction of their own bounding volumes and/or partitioners.

-
-
-

Compact form

-

In addition to the standard BVH node NodeT<T, P, BV, K>, EBGeometry provides a more compact formulation of the BVH hierarchy where the nodes are stored in depth-first order. -The “linearized” BVH can be automatically constructed from the standard BVH but not vice versa.

-
-_images/CompactBVH.png -

Fig. 6 Compact BVH representation. -The original BVH is traversed from top-to-bottom along the branches and laid out in linear memory. -Each interior node gets a reference (index offset) to their children nodes.

-
-

The rationale for reorganizing the BVH in compact form is it’s tighter memory footprint and depth-first ordering which allows more efficient traversal downwards in the BVH tree. -To encapsulate the compact BVH we provide two classes:

-
    -
  • LinearNodeT which encapsulates a node, but rather than storing the primitives and pointers to child nodes it stores offsets along the 1D arrays. -Just like NodeT the class is templated:

    -
      class LinearNodeT {
    -  public:
    -
    -
    -

    LinearNodeT has a smaller memory footprint and should fit in one CPU word in floating-point precision and two CPU words in double point precision. -The performance benefits of further memory alignment have not been investigated.

    -

    Note that LinearNodeT only stores offsets to child nodes and primitives, which are assumed to be stored (somewhere) as

    -
    std::vector<std::shared_ptr<LinearNodeT<T, P, BV, K> > > linearNodes;
    -std::vector<std::shared_ptr<const P> > primitives;
    -
    -
    -

    Thus, for a given node we can check if it is a leaf node (m_numPrimitives > 0) and if it is we can get the children through the m_childOffsets array. -Primitives can likewise be obtained; they are stored in the primitives array from index m_primitivesOffset to m_primitivesOffset + m_numPrimities - 1.

    -
  • -
  • LinearBVH which stores the compact BVH and primitives as class members. -That is, LinearBVH contains the nodes and primitives as class members.

    -
      template<class T, class P, class BV, int K>
    -  class LinearBVH {
    -  public:
    -
    -    inline
    -    T signedDistance(const Vec3& a_point) const noexcept;
    -
    -  protected:
    -
    -    std::vector<std::shared_ptr<const LinearNodeT<T, P, BV, K> > > m_linearNodes;
    -}
    -
    -
    -

    The root node is, of course, found at the front of the m_linearNodes vector. -Note that the list of primitives m_primitives is stored in the order in which the leaf nodes appear in m_linearNodes.

    -
  • -
-

Constructing the compact BVH is simply a matter of letting NodeT aggregate the nodes and primitives into arrays, and return a LinearBVH. -This is done by calling the NodeT member function flattenTree():

-
  template <class T, class P, class BV, int K>
-  class NodeT {
-  public:
-    inline
-    std::shared_ptr<LinearBVH<T, P, BV, K> > flattenTree() const noexcept;    
-  };
-
-
-

which returns a pointer to a LinearBVH. -For example:

-
// Assume that we have built the conventional BVH already
-std::shared_ptr<EBGeometry::BVH::NodeT<T, P, BV, K> > builderBVH;
-
-// Flatten the tree.
-std::shared_ptr<LinearBVH> compactBVH = builderBVH.flattenTree();
-
-// Release the original BVH.
-builderBVH = nullptr;
-
-
-
-

Warning

-

When calling flattenTree, the original BVH tree is not destroyed. -To release the memory, deallocate the original BVH tree. -E.g., the set pointer to the root node to nullptr if using a smart pointer.

-
-

Note that the primitives live in LinearBVH and not LinearNodeT, and the signed distance function is therefore implemented in the LinearBVH member functions:

-
-
-

Signed distance

-

The signed distance can be obtained from both the full BVH storage and the compact BVH storage. -Replicating the code above, we can do:

-
// Assume that we have built the conventional BVH already
-std::shared_ptr<EBGeometry::BVH::NodeT<T, P, BV, K> > fullBVH;
-
-// Flatten the tree.
-std::shared_ptr<EBGeometry::BVH::LinearBVH<T, P, BV, K> > compactBVH = fullBVH.flattenTree();
-
-// These give the same result.
-const T s1 = fullBVH   ->signedDistance(Vec3T<T>::zero());
-const T s2 = compactBVH->signedDistance(Vec3T<T>::zero());
-
-
-

We point out that the compact BVH only supports:

-
    -
  • Recursive, unordered traversal through the tree.

  • -
  • Recursive, ordered traversal through the tree.

  • -
  • Stack-based ordered traversal through the tree.

  • -
-

Out of these, the ordered traversals (discussed in Bounding volume hierarchies) are faster.

-

The compact BVH only supports stack-based ordered traversal (which tends to be faster).

-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/ImplemDCEL.html b/docs/ImplemDCEL.html deleted file mode 100644 index 1416bb3f..00000000 --- a/docs/ImplemDCEL.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - - - - - - - - DCEL — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

DCEL

-

The DCEL functionality exists under the namespace EBGeometry::Dcel and contains the following functionality:

-
    -
  • Fundamental data types like vertices, half-edges, polygons, and entire surface grids.

  • -
  • Signed distance functionality for the above types.

  • -
  • File parsers for reading files into DCEL structures.

  • -
  • BVH functionality for putting DCEL grids into bounding volume hierarchies.

  • -
-
-

Note

-

The DCEL functionality is not restricted to triangles, but supports N-sided polygons.

-
-
-

Classes

-

The main DCEL functionality (vertices, edges, faces) is provided by the following classes:

-
    -
  • Vertices are implemented as a template EBGeometry::Dcel::EdgeT

  • -
-
-
  template <class T>
-  class VertexT {
-  public:
-
-
-

The DCEL vertex class stores the vertex position, normal vector, and the outgoing half-edge from the vertex. -Note that the class has member functions for computing the vertex pseudonormal, see Normal vectors.

-

The full API is given in the doxygen documentation here.

-
-
    -
  • Edges are implemented as a template EBGeometry::Dcel::EdgeT

  • -
-
-
  template<class T>
-  class EdgeT {
-  public:
-
-
-

The half-edges store a reference to their face, as well as pointers to the previous edge, next edge, pair edge, and starting vertex. -For performance reasons, the edge also stores the length and inverse length of the edge.

-

The full API is given in the doxygen documentation here.

-
-
    -
  • Faces are implemented as a template EBGeometry::Dcel::FaceT

  • -
-
-
  template <class T>
-  class FaceT {
-  public:
-
-
-

For performance reasons, a polygon face stores all it’s half-edges (to avoid iteration when computing the signed distance). -It also stores:

-
    -
  • The normal vector.

  • -
  • A 2D embedding of the polygon face.

  • -
  • Centroid position.

  • -
-

The normal vector and 2D embedding of the facet exist because the signed distance computation requires them. -The centroid position exists only because BVH partitioners will use it for partitioning the surface mesh.

-

The full API is given in the doxygen documentation here.

-
-
    -
  • Mesh is implemented as a template EBGeometry::Dcel::MeshT

  • -
-
-
  template <class T>
-  class MeshT {
-  public:
-
-
-

The Mesh stores all the vertices, half-edges, and faces. -For example, to obtain all the facets one can call EBGeometry::Dcel::MeshT<T>::getFaces() which will return all the DCEL faces of the surface mesh. -Typically, the mesh is not created by the user but automatically created when reading the mesh from an input file.

-

The full API is given in the doxygen documentation here.

-
-

All of the above DCEL classes have member functions of the type:

-
T signedDistance(const Vec3T<T>& a_point) const noexcept;
-T unsignedDistance2(const Vec3T<T>& a_point) const noexcept;
-
-
-

Thus, they fulfill the template requirements of the primitive type for the BVH implementation, see Template constraints. -See BVH integration for details regarding DCEL integration with BVHs.

-
-
-

File parsers

-

Routines for parsing surface files from grids into EBGeometry’s DCEL grids are given in the namespace EBGeometry::Dcel::Parser. -Currently, this is limited to the following file formats:

-
    -
  • PLY Only ASCII formats currently supported, https://en.wikipedia.org/wiki/PLY_(file_format).

    -

    When reading a PLY file into the DCEL data structures, it is sufficient to call the following static function:

    -
    template<class T>
    -using Mesh = EBGeometry::Dcel::MeshT<T>;
    -
    -template<class T>
    -std::shared_ptr<Mesh> EBGeometry::Parser::PLY<T>::readASCII(const std::string a_filename);
    -
    -
    -
    -

    Warning

    -

    Although the parser will do it’s best to read files that contains holes or incomplete faces, success will fluctuate. -Moreover, the signed distance function is not well-defined for such cases.

    -
    -

    Calling the readASCII function will read the input file (which is assumed to be a PLY file) and create the DCEL data structures.

    -
  • -
-
-

Note

-

If the file format of your surface mesh file is not one of the above, consider either providing a new plugin or convert your file (e.g. to PLY) using MeshLab, Blender, etc.

-
-
-
-

BVH integration

-

DCEL functionality can easily be embedded in BVHs. -In this case it is the facets that are embedded in the BVHs, and we require that we can create bounding volumes that contain all the vertices in a facet. -Moreover, partitioning functions that partition a set of polygon faces into K new sets of faces are also required.

-
-

Construction methods

-

EBGeometry provides some simplistic functions that are needed (see Construction) when building BVHs for DCEL geometries .

-
-

Note

-

The functions are defined in Source/EBGeometry_DcelBVH.hpp.

-
-

For the bounding volume constructor, we provide a function

-
  template <class T, class BV>
-  EBGeometry::BVH::BVConstructorT<EBGeometry::Dcel::FaceT<T>, BV> defaultBVConstructor = [](const std::shared_ptr<const EBGeometry::Dcel::FaceT<T> >& a_primitive) -> BV {
-    return BV(a_primitive->getAllVertexCoordinates());
-  };  
-
-
-

Note the extra template constraint on the bounding volume type BV, which must be able to construct a bounding volume from a finite point set (the vertex coordinates).

-

For the stop function we provide a simple function

-
  template <class T, class BV, int K> 
-  EBGeometry::BVH::StopFunctionT<T, EBGeometry::Dcel::FaceT<T>, BV, K> defaultStopFunction = [](const BVH::NodeT<T, EBGeometry::Dcel::FaceT<T>, BV, K>& a_node) -> bool {
-    return (a_node.getPrimitives()).size() < K;
-  };
-
-
-

Note that this simply terminates the leaf partitioning if there are not enough primitives (polygon faces) available, or there are fewer than a pre-defined number of primitives.

-

For the partitioning function we include a simple function that partitions the primites along the longest axis:

-
  template <class T, class BV, int K>
-  EBGeometry::BVH::PartitionerT<EBGeometry::Dcel::FaceT<T>, BV, K> defaultPartitioner = EBGeometry::Dcel::chunkPartitioner<T, BV, K>;
-
-
-

Note that this function is just an alias for a different partitioner which splits the bounding volumes into equal-sized chunks. -See Source/EBGeometry_DcelBVH.hpp for details.

-
-
-

Code example

-

Constructing a compact BVH representation of polygon mesh is therefore done as follows:

-
using T    = float;
-using BV   = EBGeometry::BoundingVolumes::AABBT<T>;
-using Vec3 = EBGeometry::Vec3T<T>;
-using Face = EBGeometry::Dcel::FaceT<T>;
-
-constexpr int K = 4;
-
-// Read the mesh from file and put it in a DCEL format.
-std::shared_ptr<EBGeometry::Dcel::Mesh<T> > mesh = EBGeometry::Dcel::Parser::Ply("MyFile.ply");
-
-// Make a BVH node and build the BVH.
-auto root = std::make_shared<EBGeometry::BVH::NodeT<T, Face, BV, K> >(mesh->getFaces());
-
-// Build the BVH hierarchy
-root->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor<T, BV>,
-                                        EBGeometry::Dcel::spatialSplitPartitioner<T, K>,
-                                        EBGeometry::Dcel::defaultStopFunction<T, BV, K>);
-
-// Flatten the tree onto a tighter representation. Then delete the old tree.
-auto compactBVH = root->flattenTree();
-
-root = nullptr;
-
-
-
-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/ImplemSDF.html b/docs/ImplemSDF.html deleted file mode 100644 index 64ac40d4..00000000 --- a/docs/ImplemSDF.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - - - - Signed distance function — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Signed distance function

-

In EBGeometry we have encapsulated the concept of a signed distance function in an abstract class

-
template <class T>
-class SignedDistanceFunction {
-public:
-
-   void translate(const Vec3T<T>& a_translation) noexcept;
-   void rotate(const T a_angle, const int a_axis) noexcept;
-
-   T signedDistance(const Vec3T<T>& a_point) const noexcept = 0;
-
-protected:
-
-   Vec3T<T> transformPoint(const Vec3T<T>& a_point) const noexcept;
-};
-
-
-

We point out that the BVH and DCEL functionalities are fundamentally also signed distance functions. -The SignedDistanceFunction class exists so that we have a common entry point for performing distance field manipulations like rotations and translations.

-

When implementing the signedDistance function, one can transform the input point by first calling transformPoint.

-

For example, in order to rotate a DCEL mesh (without using the BVH accelerator) we can implement the following signed distance function:

-
template <class T>
-class MySignedDistanceFunction : public SignedDistanceFunction<T> {
-public:
-   T signedDistance(const Vec3T<T>& a_point) const noexcept override {
-      return m_mesh->signedDistance(this->transformPoint(a_point));
-   }
-
-protected:
-   // DCEL mesh object, must be constructed externally and
-   // supplied to MyDistanceFunction (e.g. through the constructor).
-   std::shared_ptr<EBGeometry::Dcel::MeshT<T> > m_mesh;
-};
-
-
-

Alternatively, using a BVH structure:

-
template <class T, class P, class BV, int K>
-class MySignedDistanceFunction : public SignedDistanceFunction<T> {
-public:
-   T signedDistance(const Vec3T<T>& a_point) const noexcept override {
-      return m_bvh->signedDistance(this->transformPoint(a_point));
-   }
-
-protected:
-   // BVH object, must be constructed externally
-   // and supplied to MyDistanceFunction (e.g. through the constructor).
-   std::shared_ptr<EBGeometry::BVH::LinearBVH<T, P, BV, K> > m_bvh;
-};
-
-
-
-

Transformations

-

The following transformations are possible:

-
    -
  • Translation, which defines the operation \(\mathbf{x}^\prime = \mathbf{x} - \mathbf{t}\) where \(\mathbf{t}\) is a translation vector.

  • -
  • Rotation, which defines the operation \(\mathbf{x}^\prime = R\left(\mathbf{x}, \theta, a\right)\) where \(\mathbf{x}\) is rotated an angle \(\theta\) around the coordinate axis \(a\).

  • -
-

Transformations are applied sequentially. -The APIs are as follows:

-
void translate(const Vec3T<T>& a_translation) noexcept;  // a_translation are Cartesian translations vector
-void rotate(const T a_angle, const int a_axis) noexcept; // a_angle in degrees, and a_axis being the Cartesian axis
-
-
-

E.g. the following code will first translate, then 90 degrees about the \(x\)-axis.

-
MySignedDistanceFunction<float> sdf;
-
-sdf.translate({1,0,0});
-sdf.rotate(90, 0);
-
-
-

Note that if the transformations are to be applied, the implementation of signedDistance(...) must transform the input point, as shown in the examples above.

-
-
-

Analytic functions

-

Above, we have shown how users can supply a DCEL or BVH structure to implement SignedDistanceFunction. -In addition, the file Source/EBGeometry_AnalyticSignedDistanceFunctions.hpp defines various other analytic shapes such as:

-
    -
  • Sphere

    -
    template<class T>
    -class EBGeometry::SphereSDF : public EBGeometry::SignedDistanceFunction<T>;
    -
    -
    -
  • -
  • Box

    -
    template<class T>
    -class EBGeometry::BoxSDF : public EBGeometry::SignedDistanceFunction<T>;
    -
    -
    -
  • -
  • Torus

    -
    template<class T>
    -class EBGeometry::TorusSDF : public EBGeometry::SignedDistanceFunction<T>;
    -
    -
    -
  • -
  • Cylinder

    -
    template<class T>
    -class EBGeometry::CylinderSDF : public EBGeometry::SignedDistanceFunction<T>;
    -
    -
    -
  • -
-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/ImplemUnion.html b/docs/ImplemUnion.html deleted file mode 100644 index 9f8e315c..00000000 --- a/docs/ImplemUnion.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - - - - Unions — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Unions

-

As discussed in Signed distance fields, a union of signed distance fields can be created provided that the objects do not touch or overlap. -EBGeometry provides two implementations:

-
    -
  • Standard union where one looks through every primitive in the union.

  • -
  • BVH-enabled union where bounding volume hierarchies are used to find the closest object.

  • -
-
-

Standard union

-

The standard union is template as

-
template <class T>
-class Union : public SignedDistanceFunction<T> {
-public:
-
-  using SDF = SignedDistanceFunction<T>;
-
-  Union(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions, const bool a_flipSign);
-
-
-

Note that EBGeometry::Union inherits from EBGeometry::SignedDistanceFunction and thus provides a signedDistance(...) function. -The implementation of the standard union is

-
template <class T>
-T Union<T>::signedDistance(const Vec3T<T>& a_point) const noexcept {
-  const int numDistanceFunctions = m_distanceFunctions.size();
-
-  T ret = std::numeric_limits<T>::infinity();
-  
-  for (const auto & sdf : m_distanceFunctions){
-    const T cur = sdf->signedDistance(a_point);
-
-    ret = (std::abs(cur) < std::abs(ret)) ? cur : ret;
-  }
-
-  T sign = (m_flipSign) ? -1.0 : 1.0;  
-  
-  return sign * ret;
-}
-
-
-

That is, it iterates through all the objects in order to find the signed distance.

-
-
-

BVH-enabled union

-

The BVH-enabled union is implemented by EBGeometry::UnionBVH as follows:

-
template <class T, class BV, int K>
-class UnionBVH : public SignedDistanceFunction<T> {
-public:
-
-  using SDF = SignedDistanceFunction<T>;
-
-  using BVConstructor = EBGeometry::BVH::BVConstructorT<SDF, BV>;
-
-  UnionBVH(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions,
-	   const bool                                a_flipSign,
-	   const BVConstructor&                      a_bvConstructor);  
-
-  T signedDistance(const Vec3T<T>& a_point) const noexcept override;  
-  
-protected:
-
-  using LinearNode = EBGeometry::BVH::LinearBVH<T, SDF, BV, K>;  
-
-  std::shared_ptr<LinearNode> m_rootNode;
-};
-
-
-

As always, the template parameter T indicates the precision, BV the bounding volume type and K the tree degree. -UnionBVH takes a bounding volume constructor in addition to the list of primitives, see Construction.

-

Internally, UnionBVH defines its own partitioning function which is identical to the implementation for DCEL meshes (see BVH integration), with the exception that the partitioning is based on the centroids of the bounding volumes rather than the centroid of the primitives. -After partitioning the primitives, the original BVH tree is flattened onto the compact representation.

-

The implementation of the signed distance function for the BVH-enabled union is

-
template <class T, class BV, int K>
-T UnionBVH<T, BV, K>::signedDistance(const Vec3T<T>& a_point) const noexcept {
-  const T sign = (m_flipSign) ? -1.0 : 1.0;
-
-  return sign * m_rootNode->signedDistance(a_point);  
-}
-
-
-

That is, it relies on pruning from the BVH functionality for finding the signed distance to the closest object.

-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/ImplemVec.html b/docs/ImplemVec.html deleted file mode 100644 index 8c04472f..00000000 --- a/docs/ImplemVec.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - - - Vector types — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

Vector types

-

EBGeometry runs it’s own vector types Vec2T and Vec3T.

-

Vec2T is a two-dimensional Cartesian vector. -It is templated as

-
namespace EBGeometry {
-   template<class T>
-   class Vec2T {
-   public:
-      T x; // First component.
-      T y; // Second component.
-   };
-}
-
-
-

Most of EBGeometry is written as three-dimensional code, but Vec2T is needed for DCEL functionality when determining if a point projects onto the interior or exterior of a planar polygon, see DCEL mesh structure. -Vec2T has “most” common arithmetic operators like the dot product, length, multiplication operators and so on.

-

Vec3T is a three-dimensional Cartesian vector type with precision T. -It is templated as

-
namespace EBGeometry {
-   template<class T>
-   class Vec3T {
-   public:
-      T[3] x;
-   };
-}
-
-
-

Like Vec2T, Vec3T has numerous routines for performing most vector-related operations like addition, subtraction, dot products and so on.

-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Implementation.html b/docs/Implementation.html deleted file mode 100644 index a3532e90..00000000 --- a/docs/Implementation.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - - - - <no title> — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -

Here, we consider the basic EBGeometry API. -EBGeometry is a header-only library, implemented under it’s own namespace EBGeometry. -Various major components, like BVHs and DCEL, are implemented under namespaces EBGeometry::BVH and EBGeometry::Dcel. -Below, we consider a brief introduction to the API and implementation details of EBGeometry.

- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Introduction.html b/docs/Introduction.html deleted file mode 100644 index e0282e7d..00000000 --- a/docs/Introduction.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - Requirements — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -

EBGeometry is a comparatively compact code for computing signed distance functions to watertight and orientable surface grids. -Originally, it was written to be used with embedded-boundary (EB) codes like Chombo or AMReX.

-
-

Requirements

-
    -
  • A C++ compiler which supports C++14.

  • -
  • An analytic signed distance function, or a watertight and orientable surface grid.

  • -
-
-
-

Quickstart

-

To obtained EBGeometry, clone the code from github:

-
git clone git@github.com:rmrsk/EBGeometry.git
-
-
-

EBGeometry is a header-only library and is simple to use. -To use it, make EBGeometry.hpp (stored at the top level) visible to your code and include it.

-

To compile the examples, navigate to the examples folder. -The following two examples show two usages of EBGeometry:

-
    -
  1. Examples/Basic shows how to construct signed distance fields from surface grids, and how to perform signed distance calculations.

  2. -
  3. Examples/Union shows how to create multi-object scenes and embed them in bounding volume hierarchies.

  4. -
-
-
-

Features

-

The basic features of EBGeometry are as follows:

-
    -
  • Representation of water-tight surface grids as signed distance fields. -EBGeometry uses a doubly-connected edge list (DCEL) representation of the mesh.

  • -
  • Straightforward implementations of bounding volume hierarchies (BVHs) for use as acceleration structures. -The BVHs can be represented in full or compact (i.e., linearized) forms.

  • -
  • Support for signed distance calculations and transformations (rotations, translations, and scaling).

  • -
  • Heavy use of metaprogramming, which exists e.g. in order to permit higher-order trees and flexibility in BVH partitioning.

  • -
  • Examples of how to couple EBGeometry to AMReX and Chombo.

  • -
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/ZZReferences.html b/docs/ZZReferences.html deleted file mode 100644 index 4e31932b..00000000 --- a/docs/ZZReferences.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - - - - References — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

References

-

-
1
-

J.A. Baerentzen and H. Aanaes. Signed distance computation using the angle weighted pseudonormal. IEEE Transactions on Visualization and Computer Graphics, 11(3):243–253, 2005. doi:10.1109/TVCG.2005.49.

-
-
-

-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/_images/CompactBVH.png b/docs/_images/CompactBVH.png deleted file mode 100644 index 755fa2b5..00000000 Binary files a/docs/_images/CompactBVH.png and /dev/null differ diff --git a/docs/_images/DCEL.png b/docs/_images/DCEL.png deleted file mode 100644 index e19ee411..00000000 Binary files a/docs/_images/DCEL.png and /dev/null differ diff --git a/docs/_images/PolygonProjection.png b/docs/_images/PolygonProjection.png deleted file mode 100644 index 7843300f..00000000 Binary files a/docs/_images/PolygonProjection.png and /dev/null differ diff --git a/docs/_images/Pseudonormal.png b/docs/_images/Pseudonormal.png deleted file mode 100644 index 85950a11..00000000 Binary files a/docs/_images/Pseudonormal.png and /dev/null differ diff --git a/docs/_images/TreePruning.png b/docs/_images/TreePruning.png deleted file mode 100644 index 2cc562fe..00000000 Binary files a/docs/_images/TreePruning.png and /dev/null differ diff --git a/docs/_images/TrianglesBVH.png b/docs/_images/TrianglesBVH.png deleted file mode 100644 index f8dfbfc2..00000000 Binary files a/docs/_images/TrianglesBVH.png and /dev/null differ diff --git a/docs/_sources/BVH.rst.txt b/docs/_sources/BVH.rst.txt deleted file mode 100644 index 044c7d44..00000000 --- a/docs/_sources/BVH.rst.txt +++ /dev/null @@ -1,107 +0,0 @@ -.. _Chap:BVH: - -Bounding volume hierarchies -=========================== - -Basic concept -------------- - -Bounding Volume Hierarchies (BVHs) are comparatively simple data structures that can accelerate closest-point searches by orders of magnitude. -BVHs are tree structures where the regular nodes are bounding volumes that enclose all geometric primitives (e.g. polygon faces) further down in the hierarchy. -This means that every node in a BVH is associated with a *bounding volume*. -The bounding volume can, in principle, be any type of volume. -Moreover, there are two types of nodes in a BVH: - -* **Regular nodes.** These do not contain any of the primitives/objects. - They are also called interior nodes, and store references to their child nodes. -* **Leaf nodes.** These lie at the bottom of the BVH tree and each of them contain a subset of the geometric primitives. - -:numref:`Fig:TrianglesBVH` shows a concept of BVH partitioning of a set of triangles. -Here, :math:`P` is a regular node whose bounding volume encloses all geometric primitives in it's subtree. -It's bounding volume, an axis-aligned bounding box or AABB for short, is illustrated by a dashed rectangle. -The interior node :math:`P` stores references to the leaf nodes :math:`L` and :math:`R`. -As shown in :numref:`Fig:TrianglesBVH`, :math:`L` contains 5 triangles enclosed by another AABB. -The other child node :math:`R` contains 6 triangles that are also enclosed by an AABB. -Note that the bounding volume for :math:`P` encloses the bounding volumes of :math:`L` and :math:`R` and that the bounding volumes for :math:`L` and :math:`R` contain a small overlap. - -.. _Fig:TrianglesBVH: -.. figure:: /_static/TrianglesBVH.png - :width: 480px - :align: center - - Example of BVH partitioning for enclosing triangles. The regular node :math:`P` contains two leaf nodes :math:`L` and :math:`R` which contain the primitives (triangles). - -There is no fundamental limitation to what type of primitives/objects can be enclosed in BVHs, which makes BVHs useful beyond triangulated data sets. -For example, analytic signed distance functions can also be embedded in BVHs, provided that we can construct a bounding volume that encloses the object. - -.. note:: - - EBGeometry limited to binary trees, but supports :math:`k` -ary trees where each regular node has :math:`k` children nodes. - -Construction ------------- - -BVHs have extremely flexible rules regarding their construction. -For example, the child nodes :math:`L` and :math:`R` in :numref:`Fig:TrianglesBVH` could be partitioned in any number of ways, with the only requirement being that each child node gets at least one triangle. - -Although the rules for BVH construction are highly flexible, performant BVHs are completely reliant on having balanced trees with the following heuristic properties: - -* **Tight bounding volumes** that enclose the primitives as tightly as possible. -* **Minimal overlap** between the bounding volumes. -* **Balanced**, in the sense that the tree depth does not vary greatly through the tree, and there is approximately the same number of primitives in each leaf node. - -Construction of a BVH is usually done recursively, from top to bottom (so-called top-down construction). -Alternative construction methods also exist, but are not used in EBGeometry. -In this case one can represent the BVH construction of a :math:`k` -ary tree is done through a single function: - -.. math:: - :label: Partition - - \textrm{Partition}\left(\vec{O}\right): \vec{O} \rightarrow \left(\vec{O}_1, \vec{O}_2, \ldots, \vec{O}_k\right), - -where :math:`\vec{O}` is an input a list of objects/primitives, which is *partitioned* into :math:`k` new list of primitives. -Note that the lists :math:`\vec{O}_i` do not contain duplicates, there is a unique set of primitives associated in each new leaf node. -Top-down construction can thus be illustrated as a recursive procedure: - -.. code-block:: text - - topDownConstruction(Objects): - partitionedObjects = Partition(Objects) - - forall p in partitionedObjects: - child = insertChildNode(newObjects) - - if(enoughPrimitives(child)): - child.topDownConstruction(child.objects) - -In practice, the above procedure is supplemented by more sophisticated criteria for terminating the recursion, as well as routines for creating the bounding volumes around the newly inserted nodes. -EBGeometry provides these by letting the top-down construction calls take polymorphic lambdas as arguments for partitioning, termination, and bounding volume construction. - -Signed distance function ------------------------- - -When computing the signed distance function to objects embedded in a BVH, one takes advantage of the hierarcical embedding of the primitives. -Consider the case in :numref:`Fig:TreePruning`, where the goal of the BVH traversal is to minimize the number of branches and nodes that are visited. -For the traversal algorithm we consider the following steps: - -* When descending from node :math:`P` we determine that we first investigate the left subtree (node :math:`A`) since its bounding volume is closer than the bounding volumes for the other subtree. - The other subtree will is investigated after we have recursed to the bottom of the :math:`A` subtree. -* Since :math:`A` is a leaf node, we find the signed distance from :math:`\mathbf{x}` to the primitives in :math:`A`. - This requires us to iterate over all the triangles in :math:`A`. -* When moving back to :math:`P`, we find that the distance to the primitives in :math:`A` is shorter than the distance from :math:`\mathbf{x}` to the bounding volume that encloses nodes :math:`B` and :math:`C`. - This immediately permits us to prune the entire subtree containing :math:`B` and :math:`C`. - -.. _Fig:TreePruning: -.. figure:: /_static/TreePruning.png - :width: 480px - :align: center - - Example of BVH tree pruning. - - -.. warning:: - - Note that all BVH traversal algorithms become inefficient when the primitives are all at approximately the same distance from the query point. - For example, it is necessary to traverse almost the entire tree when one tries to compute the signed distance at the origin of a tesselated sphere. - - diff --git a/docs/_sources/Concepts.rst.txt b/docs/_sources/Concepts.rst.txt deleted file mode 100644 index 6fc926a9..00000000 --- a/docs/_sources/Concepts.rst.txt +++ /dev/null @@ -1,63 +0,0 @@ -.. _Chap:Concepts: - -Signed distance fields ----------------------- - -The signed distance function is defined as a function :math:`S: \mathbb{R}^3 \rightarrow \mathbb{R}`, and returns the *signed distance* to the object. -The signed distance function has the additional property: - -.. math:: - :label: Eikonal - - \left|\nabla S(\mathbf{x})\right| = 1 \quad\textrm{everywhere}. - -In EBGeometry we use the following convention: - -.. math:: - - S(\mathbf{x}) = - \begin{cases} - > 0, & \textrm{for points outside the object}, \\ - < 0, & \textrm{for points inside the object}. - \end{cases} - -Signed distance functions are also *implicit functions* (but the reverse statement is not true). -For example, the signed distance function for a sphere with center :math:`\mathbf{x}_0` and radius :math:`R` can be written - -.. math:: - - S_{\textrm{sph}}\left(\mathbf{x}\right) = \left|\mathbf{x} - \mathbf{x}_0\right| - R. - -An example of an implicit function for the same sphere is - -.. math:: - - I_{\textrm{sph}}\left(\mathbf{x}\right) = \left|\mathbf{x} - \mathbf{x}_0\right|^2 - R^2. - -An important difference between these is the Eikonal property in :eq:`Eikonal`, ensuring that the signed distance function always returns the exact distance to the object. - -Transformations ---------------- - -Signed distance functions retain the Eikonal property for the following set of transformations: - -* Rotations. -* Translations. - -Unions ------- - -Unions of signed distance fields are also signed distance fields *provided that the objects do not intersect or touch*. -For overlapping objects the signed distance function is not well-defined (since the interior and exterior are not well-defined). - -For non-overlapping objects represented as signed distance fields :math:`\left(S_1\left(\mathbf{x}\right), S_2\left(\mathbf{x}\right), \ldots\right)`, the composite signed distance field is - -.. math:: - - S\left(\mathbf{x}\right) = S_k\left(\mathbf{x}\right), - -where :math:`k` is index of the closest object (which is found by evaluating :math:`\left|S_i\left(\mathbf{x}\right)\right|`. - -.. important:: - - diff --git a/docs/_sources/DCEL.rst.txt b/docs/_sources/DCEL.rst.txt deleted file mode 100644 index 8c56ce59..00000000 --- a/docs/_sources/DCEL.rst.txt +++ /dev/null @@ -1,103 +0,0 @@ -.. _Chap:DCEL: - -DCEL mesh structure -=================== - -Basic concept -------------- - -EBGeometry uses a doubly-connected edge list (DCEL) structure for storing surface meshes. -The DCEL structures consist of the following objects: - -* Planar polygons (facets). -* Half-edges. -* Vertices. - -As shown in :numref:`Fig:DCEL`, the half-edge is the most important data structure. -Half-edges circulate the inside of the facet, with pointer-access to the previous and next half-edge. -A half-edge also stores a reference to it's starting vertex, as well as a reference to it's pair-edge. -From the DCEL structure we can easily obtain all edges or vertices belonging to a single facet, and also "jump" to a neighboring facet by fetching the pair edge. - -.. _Fig:DCEL: -.. figure:: /_static/DCEL.png - :width: 480px - :align: center - - DCEL mesh structure. Each half-edge stores references to previous/next half-edges, the pair edge, and the starting vertex. - Vertices store a coordinate as well as a reference to one of the outgoing half-edges. - -In EBGeometry the half-edge data structure is implemented in it's own namespace ``EBGeometry::Dcel``. -This is a comparatively standard implementation of the DCEL structure, supplemented by functions that permit signed distance computations to various features on such a mesh. - -.. important:: - - A signed distance field requires a *watertight and orientable* surface mesh. - If the surface mesh consists of holes or flipped facets, the signed distance function does not exist. - -Signed distance ---------------- - -When computing the signed distance function, the closest point on the surface mesh can be one of the vertices, (half-) edges, or faces, see :numref:`Fig:PolygonProjection`. - -.. _Fig:PolygonProjection: -.. figure:: /_static/PolygonProjection.png - :width: 240px - :align: center - - Possible closest-feature cases after projecting a point :math:`\mathbf{x}` to the plane of a polygon face. - -It is therefore necessary to distinguish between three cases: - -#. **Facet/Polygon face**. - - When computing the distance from a point :math:`\mathbf{x}` to the polygon face we first determine if the projection of :math:`\mathbf{x}` to the face's plane lies inside or outside the face. - This is more involved than one might think, and it is done by first computing the two-dimensional projection of the polygon face, ignoring one of the coordinates. - Next, we determine, using 2D algorithms, if the projected point lies inside the embedded 2D representation of the polygon face. - Various algorithms for this are available, such as computing the winding number, the crossing number, or the subtended angle between the projected point and the 2D polygon. - - .. note:: - - EBGeometry uses the crossing number algorithm by default. - - If the point projects to the inside of the face, the signed distance is just :math:`d = \mathbf{n}_f\cdot\left(\mathbf{x} - \mathbf{x}_f\right)` where :math:`\mathbf{n}_f` is the face normal and :math:`\mathbf{x}_f` is a point on the face plane (e.g., a vertex). - If the point projects to *outside* the polygon face, the closest feature is either an edge or a vertex. - -#. **Edge**. - - When computing the signed distance to an edge, the edge is parametrized as :math:`\mathbf{e}(t) = \mathbf{x}_0 + \left(\mathbf{x}_1 - \mathbf{x}_0\right)t`, where :math:`\mathbf{x}_0` and :math:`\mathbf{x}_1` are the starting and ending vertex coordinates. - The point :math:`\mathbf{x}` is projected to this line, and if the projection yields :math:`t^\prime \in [0,1]` then the edge is the closest point. - In that case the signed distance is the projected distance and the sign is given by the sign of :math:`\mathbf{n}_e\cdot\left(\mathbf{x} - \mathbf{x}_0\right)` where :math:`\mathbf{n}_e` is the pseudonormal vector of the edge. - Otherwise, the closest point is one of the vertices. - -#. **Vertex**. - - If the closest point is a vertex then the signed distance is simply :math:`\mathbf{n}_v\cdot\left(\mathbf{x}-\mathbf{x}_v\right)` where :math:`\mathbf{n}_v` is the vertex pseudonormal and :math:`\mathbf{x}_v` is the vertex position. - -.. _Chap:NormalDCEL: - -Normal vectors --------------- - -The normal vectors for edges :math:`\mathbf{n}_e` and vertices :math:`\mathbf{n}_v` are, unlike the facet normal, not uniquely defined. -For both edges and vertices we use the pseudonormals from :cite:`1407857`: - -.. math:: - - \mathbf{n}_{e} = \frac{1}{2}\left(\mathbf{n}_{f} + \mathbf{n}_{f^\prime}\right). - -where :math:`f` and :math:`f^\prime` are the two faces connecting the edge. -The vertex pseudonormal are given by - -.. math:: - - \mathbf{n}_{v} = \frac{\sum_i\alpha_i\mathbf{n}_{f_i}}{\left|\sum_i\alpha_i\right|}, - -where the sum runs over all faces which share :math:`v` as a vertex, and where :math:`\alpha_i` is the subtended angle of the face :math:`f_i`, see :numref:`Fig:Pseudonormal`. - -.. _Fig:Pseudonormal: -.. figure:: /_static/Pseudonormal.png - :width: 240px - :align: center - - Edge and vertex pseudonormals. - diff --git a/docs/_sources/Example_AMReX.rst.txt b/docs/_sources/Example_AMReX.rst.txt deleted file mode 100644 index 2e9b6443..00000000 --- a/docs/_sources/Example_AMReX.rst.txt +++ /dev/null @@ -1,38 +0,0 @@ -Integration with AMReX -====================== - -.. warning:: This example requires you to install `AMReX `_ - -This example is given in :file:`Examples/AMReX/main.cpp` and shows how to expose EBGeometry's DCEL and BVH functionality to AMReX. - -We will focus on the following parts of the code: - -.. literalinclude:: ../../Examples/AMReX/main.cpp - :language: c++ - :lines: 18-28, 32,37,42-43,49-63, 76-81, 85-88, 101-102 - -Constructing the BVH --------------------- - -When constructing the signed distance function we use the DCEL and BVH functionality directly in the constructor: - -.. literalinclude:: ../../Examples/AMReX/main.cpp - :language: c++ - :lines: 49,52,55,56-58,61-62 - -Note that we are performing the following steps: - -* Using the PLY parser for creating a DCEL mesh. -* Constructing a BVH for the DCEL faces. -* Flattening the BVH tree for performance. - -Exposing signed distance functions ----------------------------------- - -Next, we expose the signed distance function to AMReX by implementing the functions - -.. literalinclude:: ../../Examples/AMReX/main.cpp - :language: c++ - :lines: 76-81, 85-87 - -Note that the AMReX ``DECL`` macros expand to ``(Real x, Real y)`` in 2D, but here we assume that the user has compiled for 3D. diff --git a/docs/_sources/Example_Basic.rst.txt b/docs/_sources/Example_Basic.rst.txt deleted file mode 100644 index f6f7c094..00000000 --- a/docs/_sources/Example_Basic.rst.txt +++ /dev/null @@ -1,58 +0,0 @@ -.. _Chap:ExamplePLY: - -Reading mesh files -================== - -This example is given in :file:`Examples/Basic/main.cpp` and shows the following steps: - -#. How to read a PLY file into a DCEL mesh. -#. How to partition and flatten a BVH tree. -#. How to call the signed distance function and provide a performance comparison between SDF representations. - -We will focus on the following parts of the code: - -.. literalinclude:: ../../Examples/Basic/main.cpp - :language: c++ - :lines: 19-20, 41-42,44-45, 46-47,49-53, 56-57, 88 - -Reading the surface mesh ------------------------- - -The first block of code parser a PLY file (here called *file*) and returns a DCEL mesh description of the PLY file. -We point out that the parser will issue errors if the PLY file is not watertight and orientable. - -Constructing the BVH --------------------- - -The second block of code, which begins with - -.. literalinclude:: ../../Examples/Basic/main.cpp - :language: c++ - :lines: 49 - -creates a BVH root node and provides it with all the DCEL faces. -The next block of code - -.. literalinclude:: ../../Examples/Basic/main.cpp - :language: c++ - :lines: 50-53 - -partitions the BVH using pre-defined partitioning functions (see :ref:`Chap:BVHIntegration` for details). - -Finally, the BVH tree is flatten by - -.. literalinclude:: ../../Examples/Basic/main.cpp - :language: c++ - :lines: 56 - -Summary --------- - -Note that all the objects ``directSDF``, ``bvhSDF``, and ``linSDF`` represent precisely the same distance field. -The objects differ in how they compute it: - -* ``directSDF`` will iterate through all faces in the mesh. -* ``bvhSDF`` uses *full BVH tree representation*, pruning branches during the tree traversal. -* ``linSDF`` uses *compact BVH tree representation*, also pruning branches during the tree traversal. - -All the above functions give the same result, but with widely different performance metrics. diff --git a/docs/_sources/Example_Union.rst.txt b/docs/_sources/Example_Union.rst.txt deleted file mode 100644 index e1adf132..00000000 --- a/docs/_sources/Example_Union.rst.txt +++ /dev/null @@ -1,65 +0,0 @@ -.. _Chap:ExampleUnion: - -Unions -====== - -This example is given in :file:`Examples/Union/main.cpp` and shows the following steps: - -#. The creation of scene composed of an array of spheres. -#. Instantiation of a standard union for the signed distance (see :ref:`Chap:Union`). -#. Instantiation of a BVH-enabled union for the signed distance (see :ref:`Chap:Union`). - -We focus on the following parts of the code: - -.. literalinclude:: ../../Examples/Union/main.cpp - :language: c++ - :lines: 24-25, 29-67,69-70 - -Creating the spheres --------------------- - -In the first block of code we are defining one million spheres that lie on a three-dimensional lattice, where each sphere has a radius of one: - -.. literalinclude:: ../../Examples/Union/main.cpp - :language: c++ - :lines: 29-48 - -Creating standard union ------------------------ - -In the second block of code we are simply creating a standard signed distance function union: - -.. literalinclude:: ../../Examples/Union/main.cpp - :language: c++ - :lines: 52 - -For implementation details regarding the standard union, see :ref:`Chap:Union`. - -Creating BVH-enabled union --------------------------- - -In the third block of code we create a BVH-enabled union. -To do so, we must first provide a function which can create bounding volumes around each object: - -.. literalinclude:: ../../Examples/Union/main.cpp - :language: c++ - :lines: 56-66 - -Here, we use axis-aligned boxes but we could also have used other types of bounding volumes. - -Typical output --------------- - -The above example shows two methods of creating unions. -When running the example the typical output is something like: - -.. code-block:: text - - Partitioning spheres - Computing distance with slow union - Computing distance with fast union - Distance and time using standard union = -1, which took 26.7353 ms - Distance and time using optimize union = -1, which took 0.003527 ms - Speedup = 7580.19 - -where we note that the optimized union was about 7500 times faster than the "standard" union. diff --git a/docs/_sources/Examples.rst.txt b/docs/_sources/Examples.rst.txt deleted file mode 100644 index 8c6c7b99..00000000 --- a/docs/_sources/Examples.rst.txt +++ /dev/null @@ -1,5 +0,0 @@ -.. _Chap:Examples: - -Below, we consider a few examples that show how to use EBGeometry. -All the examples are located in the examples folder. -For instructions on how to compile and run the examples, refer to the README file in the example folder. diff --git a/docs/_sources/ImplemBVH.rst.txt b/docs/_sources/ImplemBVH.rst.txt deleted file mode 100644 index caf2fc1e..00000000 --- a/docs/_sources/ImplemBVH.rst.txt +++ /dev/null @@ -1,288 +0,0 @@ -.. _Chap:ImplemBVH: - -Bounding volume hierarchy -========================= - -The BVH functionality is encapsulated in the namespace ``EBGeometry::BVH``. -For the full API, see `the doxygen API `_ -There are two types of BVHs supported. - -* **Direct BVHs** where the nodes are stored in build order and contain references to their children, and the leaf holds primitives. -* **Compact BVHs** where the nodes are stored in depth-first order and contain index offsets to children and primitives. - -The direct BVH is encapsulated by a class - -.. code-block:: c++ - - template - class NodeT; - -The above template parameters are: - -* ``T`` Floating-point precision. -* ``P`` Primitive type to be partitioned. -* ``BV`` Bounding volume type. -* ``K`` BVH degree. ``K=2`` will yield a binary tree, ``K=3`` yields a tertiary tree and so on. - -``NodeT`` describes regular and leaf nodes in the BVH, and has member functions for setting primitives, bounding volumes, and so on. -Importantly, ``NodeT`` is the BVH builder node, i.e. it is the class through which we recursively build the BVH, see :ref:`Chap:BVHConstruction`. -The compact BVH is discussed below in :ref:`Chap:LinearBVH`. - -For getting the signed distance, ``NodeT`` has provides the following function: - -.. literalinclude:: ../../Source/EBGeometry_BVH.hpp - :language: c++ - :lines: 112-115,220-221,330 - - -.. _Chap:BVHConstraints: - -Template constraints --------------------- - -* The primitive type ``P`` must have the following function: - - * ``T signedDistance(const Vec3T& x)``, which returns the signed distance to the primitive. - -* The bounding volume type ``BV`` must have the following functions: - - * ``T getDistance(const Vec3T& x)`` which returns the distance from the point ``x`` to the bounding volume. - Note that if ``x`` lies within the bounding volume, the function should return a value of zero. - - * A constructor ``BV(const std::vector& a_otherBVs)`` that permit creation of a bounding volume that encloses other bounding volumes of the same type. - -* ``K`` should be greater or equal to 2. - -* Currently, we do not support variable-sized trees (i.e., mixing branching ratios). - -Note that the above constraints apply only to the BVH itself. -Partitioning functions (which are, in principle, supplied by the user) may impose extra constraints. - -.. important:: - - EBGeometry's BVH implementations fulfill their own template requirements on the primitive type ``P``. - This means that objects that are themselves described by BVHs (such as triangulations) can be embedded in another BVH, permitting BVH-of-BVH type of scenes. - -Bounding volumes ----------------- - -EBGeometry supports the following bounding volumes, which are defined in :file:`EBGeometry_BoundingVolumes.hpp``: - -* **BoundingSphere**, templated as ``EBGeometry::BoundingVolumes::BoundingSphereT`` and describes a bounding sphere. - Various constructors are available. - -* **Axis-aligned bounding box**, or AABB for short. - This is templated as ``EBGeometry::BoundingVolumes::AABBT``. - -For full API details, see `the doxygen API `_. - -.. _Chap:BVHConstruction: - -Construction ------------- - -Constructing a BVH is done by - -* Creating a root node and providing it with the geometric primitives. -* Partitioning the BVH by providing. - -The first step is usually a matter of simply constructing the root node using the following constructor: - -.. code-block:: c++ - - template - NodeT(const std::vector >& a_primitives). - -That is, the constructor takes a list of primitives to be put in the node. -For example: - -.. code-block:: c++ - - using T = float; - using Node = EBGeometry::BVH::NodeT; - - std::vector > primitives; - - auto root = std::make_shared(primitives); - -The second step is to recursively build the BVH, which is done through the function - -.. code-block:: c++ - - template - using StopFunctionT = std::function& a_node)>; - - template - using BVConstructorT = std::function& a_primitive)>; - - template - using PartitionerT = std::function, K>(const PrimitiveListT

& a_primitives)>; - - template - NodeT::topDownSortAndPartitionPrimitives(const BVConstructorT, - const PartitionerT, - const StopFunction); - -Although seemingly complicated, the input arguments are simply polymorphic functions of the type indicated above, and have the following responsibilities: - -* ``StopFunctionT`` simply takes a ``NodeT`` as input argument and determines if the node should be partitioned further. - A basic implementation which terminates the recursion when the leaf node has reached the minimum number of primitives is - - .. code-block:: c++ - - EBGeometry::BVH::StopFunction stopFunc = [](const NodeT& a_node) -> bool { - return a_node.getNumPrimitives() < K; - }; - - This will terminate the partitioning when the node has less than ``K`` primitives (in which case it *can't* be partitioned further). - -* ``BVConstructorT`` takes a single primitive (or strictly speaking a pointer to the primitive) and returns a bounding volume that encloses it. - For example, if the primitives ``P`` are signed distance function spheres (see :ref:`Chap:AnalyticSDF`), the BV constructor can be implemented - with AABB bounding volumes as; - - .. code-block:: c++ - - using T = float; - using Vec3 = EBGeometry::Vec3T; - using AABB = EBGeometry::BoundingVolumes::AABBT; - using Sphere = EBGeometry::SphereSDF; - - EBGeometry::BVH::BVConstructor bvConstructor = [](const std::shared_ptr& a_sdf){ - const Sphere& sph = static_cast (*a_sdf); - - const Vec3& sphereCenter = sph.getCenter(); - const T& sphereRadius = sph.getRadius(); - - const Vec3 lo = sphereCenter - r*Vec3::one(); - const Vec3 hi = sphereCenter + r*Vec3::one(); - - return AABB(lo, hi); - }; - -* ``PartitionerT`` is the partitioner function when splitting a leaf node into ``K`` new leaves. - The function takes an list of primitives which it partitions into ``K`` new list of primitives, i.e. it encapsulates :eq:`Partition`. - As an example, we include a partitioner that is provided for integrating BVH and DCEL functionality. - - .. literalinclude:: ../../Source/EBGeometry_DcelBVH.hpp - :language: c++ - :lines: 100-121 - - In the above, we are taking a list of DCEL facets in the input argument (``PrimitiveList`` expands to ``std::vector >``). - We then compute the centroid locations of each facet and figure out along which coordinate axis we partition the objects (called ``splitDir`` above). - The input primitives are then sorted based on the facet centroid locations in the ``splitDir`` direction, and they are partitioned into ``K`` almost-equal chunks. - These partitions are returned and become primitives in the new leaf nodes. - - There is also an example of the same type of partitioning for the BVH-accelerated union, see `UnionBVH `_ - -In general, users are free to construct their BVHs in their own way if they choose. -For the most part this will include the construction of their own bounding volumes and/or partitioners. - -.. _Chap:LinearBVH: - -Compact form ------------- - -In addition to the standard BVH node ``NodeT``, EBGeometry provides a more compact formulation of the BVH hierarchy where the nodes are stored in depth-first order. -The "linearized" BVH can be automatically constructed from the standard BVH but not vice versa. - -.. figure:: /_static/CompactBVH.png - :width: 240px - :align: center - - Compact BVH representation. - The original BVH is traversed from top-to-bottom along the branches and laid out in linear memory. - Each interior node gets a reference (index offset) to their children nodes. - -The rationale for reorganizing the BVH in compact form is it's tighter memory footprint and depth-first ordering which allows more efficient traversal downwards in the BVH tree. -To encapsulate the compact BVH we provide two classes: - -* ``LinearNodeT`` which encapsulates a node, but rather than storing the primitives and pointers to child nodes it stores offsets along the 1D arrays. - Just like ``NodeT`` the class is templated: - - .. literalinclude:: ../../Source/EBGeometry_BVH.hpp - :language: c++ - :lines: 352-354, 473 - - ``LinearNodeT`` has a smaller memory footprint and should fit in one CPU word in floating-point precision and two CPU words in double point precision. - The performance benefits of further memory alignment have not been investigated. - - Note that ``LinearNodeT`` only stores offsets to child nodes and primitives, which are assumed to be stored (somewhere) as - - .. code-block:: c++ - - std::vector > > linearNodes; - std::vector > primitives; - - Thus, for a given node we can check if it is a leaf node (``m_numPrimitives > 0``) and if it is we can get the children through the ``m_childOffsets`` array. - Primitives can likewise be obtained; they are stored in the primitives array from index ``m_primitivesOffset`` to ``m_primitivesOffset + m_numPrimities - 1``. - -* ``LinearBVH`` which stores the compact BVH *and* primitives as class members. - That is, ``LinearBVH`` contains the nodes and primitives as class members. - - .. literalinclude:: ../../Source/EBGeometry_BVH.hpp - :language: c++ - :lines: 477-480,529-533,537,544 - - The root node is, of course, found at the front of the ``m_linearNodes`` vector. - Note that the list of primitives ``m_primitives`` is stored in the order in which the leaf nodes appear in ``m_linearNodes``. - -Constructing the compact BVH is simply a matter of letting ``NodeT`` aggregate the nodes and primitives into arrays, and return a ``LinearBVH``. -This is done by calling the ``NodeT`` member function ``flattenTree()``: - -.. literalinclude:: ../../Source/EBGeometry_BVH.hpp - :language: c++ - :lines: 112-114,236-237,329 - -which returns a pointer to a ``LinearBVH``. -For example: - -.. code-block:: c++ - - // Assume that we have built the conventional BVH already - std::shared_ptr > builderBVH; - - // Flatten the tree. - std::shared_ptr compactBVH = builderBVH.flattenTree(); - - // Release the original BVH. - builderBVH = nullptr; - -.. warning:: - - When calling ``flattenTree``, the original BVH tree is *not* destroyed. - To release the memory, deallocate the original BVH tree. - E.g., the set pointer to the root node to ``nullptr`` if using a smart pointer. - -Note that the primitives live in ``LinearBVH`` and not ``LinearNodeT``, and the signed distance function is therefore implemented in the ``LinearBVH`` member functions: - -.. literalinclude:: ../../Source/EBGeometry_BVH.hpp - :language: c++ - :lines: 630-631,673-674,680-681,702 - -Signed distance ---------------- - -The signed distance can be obtained from both the full BVH storage and the compact BVH storage. -Replicating the code above, we can do: - -.. code-block:: c++ - - // Assume that we have built the conventional BVH already - std::shared_ptr > fullBVH; - - // Flatten the tree. - std::shared_ptr > compactBVH = fullBVH.flattenTree(); - - // These give the same result. - const T s1 = fullBVH ->signedDistance(Vec3T::zero()); - const T s2 = compactBVH->signedDistance(Vec3T::zero()); - -We point out that the compact BVH only supports: - -* Recursive, unordered traversal through the tree. -* Recursive, ordered traversal through the tree. -* Stack-based ordered traversal through the tree. - -Out of these, the ordered traversals (discussed in :ref:`Chap:BVH`) are faster. - -The compact BVH only supports stack-based ordered traversal (which tends to be faster). diff --git a/docs/_sources/ImplemDCEL.rst.txt b/docs/_sources/ImplemDCEL.rst.txt deleted file mode 100644 index c029fcf8..00000000 --- a/docs/_sources/ImplemDCEL.rst.txt +++ /dev/null @@ -1,185 +0,0 @@ -.. _Chap:ImplemDCEL: - -DCEL -==== - -The DCEL functionality exists under the namespace ``EBGeometry::Dcel`` and contains the following functionality: - -* **Fundamental data types** like vertices, half-edges, polygons, and entire surface grids. -* **Signed distance functionality** for the above types. -* **File parsers for reading files** into DCEL structures. -* **BVH functionality** for putting DCEL grids into bounding volume hierarchies. - -.. note:: - - The DCEL functionality is *not* restricted to triangles, but supports N-sided polygons. - -Classes -------- - -The main DCEL functionality (vertices, edges, faces) is provided by the following classes: - -* **Vertices** are implemented as a template ``EBGeometry::Dcel::EdgeT`` - - .. literalinclude:: ../../Source/EBGeometry_DcelVertex.hpp - :language: c++ - :lines: 41-43 - - The DCEL vertex class stores the vertex position, normal vector, and the outgoing half-edge from the vertex. - Note that the class has member functions for computing the vertex pseudonormal, see :ref:`Chap:NormalDCEL`. - - The full API is given in the doxygen documentation `here `_. - -* **Edges** are implemented as a template ``EBGeometry::Dcel::EdgeT`` - - .. literalinclude:: ../../Source/EBGeometry_DcelEdge.hpp - :language: c++ - :lines: 43-45 - - The half-edges store a reference to their face, as well as pointers to the previous edge, next edge, pair edge, and starting vertex. - For performance reasons, the edge also stores the length and inverse length of the edge. - - The full API is given in the doxygen documentation `here `_. - -* **Faces** are implemented as a template ``EBGeometry::Dcel::FaceT`` - - .. literalinclude:: ../../Source/EBGeometry_DcelFace.hpp - :language: c++ - :lines: 44-46 - - For performance reasons, a polygon face stores all it's half-edges (to avoid iteration when computing the signed distance). - It also stores: - - * The normal vector. - * A 2D embedding of the polygon face. - * Centroid position. - - The normal vector and 2D embedding of the facet exist because the signed distance computation requires them. - The centroid position exists only because BVH partitioners will use it for partitioning the surface mesh. - - The full API is given in the doxygen documentation `here `_. - -* **Mesh** is implemented as a template ``EBGeometry::Dcel::MeshT`` - - .. literalinclude:: ../../Source/EBGeometry_DcelMesh.hpp - :language: c++ - :lines: 42-44 - - The Mesh stores all the vertices, half-edges, and faces. - For example, to obtain all the facets one can call ``EBGeometry::Dcel::MeshT::getFaces()`` which will return all the DCEL faces of the surface mesh. - Typically, the mesh is not created by the user but automatically created when reading the mesh from an input file. - - The full API is given in the doxygen documentation `here `_. - -All of the above DCEL classes have member functions of the type: - -.. code-block:: c++ - - T signedDistance(const Vec3T& a_point) const noexcept; - T unsignedDistance2(const Vec3T& a_point) const noexcept; - -Thus, they fulfill the template requirements of the primitive type for the BVH implementation, see :ref:`Chap:BVHConstraints`. -See :ref:`Chap:BVHIntegration` for details regarding DCEL integration with BVHs. - - -File parsers ------------- - -Routines for parsing surface files from grids into EBGeometry's DCEL grids are given in the namespace ``EBGeometry::Dcel::Parser``. -Currently, this is limited to the following file formats: - -* **PLY** Only ASCII formats currently supported, ``_. - - When reading a PLY file into the DCEL data structures, it is sufficient to call the following static function: - - .. code-block:: - - template - using Mesh = EBGeometry::Dcel::MeshT; - - template - std::shared_ptr EBGeometry::Parser::PLY::readASCII(const std::string a_filename); - - .. warning:: - - Although the parser will do it's best to read files that contains holes or incomplete faces, success will fluctuate. - Moreover, the signed distance function is not well-defined for such cases. - - Calling the ``readASCII`` function will read the input file (which is assumed to be a PLY file) and create the DCEL data structures. - -.. note:: - - If the file format of your surface mesh file is not one of the above, consider either providing a new plugin or convert your file (e.g. to PLY) using MeshLab, Blender, etc. - -.. _Chap:BVHIntegration: - -BVH integration ---------------- - -DCEL functionality can easily be embedded in BVHs. -In this case it is the facets that are embedded in the BVHs, and we require that we can create bounding volumes that contain all the vertices in a facet. -Moreover, partitioning functions that partition a set of polygon faces into ``K`` new sets of faces are also required. - -Construction methods -____________________ - -EBGeometry provides some simplistic functions that are needed (see :ref:`Chap:BVHConstruction`) when building BVHs for DCEL geometries . - -.. note:: - - The functions are defined in :file:`Source/EBGeometry_DcelBVH.hpp`. - -For the bounding volume constructor, we provide a function - -.. literalinclude:: ../../Source/EBGeometry_DcelBVH.hpp - :language: c++ - :lines: 40-43 - -Note the extra template constraint on the bounding volume type ``BV``, which must be able to construct a bounding volume from a finite point set (the vertex coordinates). - -For the stop function we provide a simple function - -.. literalinclude:: ../../Source/EBGeometry_DcelBVH.hpp - :language: c++ - :lines: 52-55 - -Note that this simply terminates the leaf partitioning if there are not enough primitives (polygon faces) available, or there are fewer than a pre-defined number of primitives. - -For the partitioning function we include a simple function that partitions the primites along the longest axis: - -.. literalinclude:: ../../Source/EBGeometry_DcelBVH.hpp - :language: c++ - :lines: 221-222 - -Note that this function is just an alias for a different partitioner which splits the bounding volumes into equal-sized chunks. -See :file:`Source/EBGeometry_DcelBVH.hpp` for details. - -Code example -____________ - -Constructing a compact BVH representation of polygon mesh is therefore done as follows: - -.. code-block:: c++ - - using T = float; - using BV = EBGeometry::BoundingVolumes::AABBT; - using Vec3 = EBGeometry::Vec3T; - using Face = EBGeometry::Dcel::FaceT; - - constexpr int K = 4; - - // Read the mesh from file and put it in a DCEL format. - std::shared_ptr > mesh = EBGeometry::Dcel::Parser::Ply("MyFile.ply"); - - // Make a BVH node and build the BVH. - auto root = std::make_shared >(mesh->getFaces()); - - // Build the BVH hierarchy - root->topDownSortAndPartitionPrimitives(EBGeometry::Dcel::defaultBVConstructor, - EBGeometry::Dcel::spatialSplitPartitioner, - EBGeometry::Dcel::defaultStopFunction); - - // Flatten the tree onto a tighter representation. Then delete the old tree. - auto compactBVH = root->flattenTree(); - - root = nullptr; diff --git a/docs/_sources/ImplemSDF.rst.txt b/docs/_sources/ImplemSDF.rst.txt deleted file mode 100644 index 4db69bbe..00000000 --- a/docs/_sources/ImplemSDF.rst.txt +++ /dev/null @@ -1,126 +0,0 @@ -.. _Chap:ImplemSDF: - -Signed distance function -======================== - -In EBGeometry we have encapsulated the concept of a signed distance function in an abstract class - -.. code-block:: c++ - - template - class SignedDistanceFunction { - public: - - void translate(const Vec3T& a_translation) noexcept; - void rotate(const T a_angle, const int a_axis) noexcept; - - T signedDistance(const Vec3T& a_point) const noexcept = 0; - - protected: - - Vec3T transformPoint(const Vec3T& a_point) const noexcept; - }; - -We point out that the BVH and DCEL functionalities are fundamentally also signed distance functions. -The ``SignedDistanceFunction`` class exists so that we have a common entry point for performing distance field manipulations like rotations and translations. - -.. note:: - -When implementing the ``signedDistance`` function, one can transform the input point by first calling ``transformPoint``. - -For example, in order to rotate a DCEL mesh (without using the BVH accelerator) we can implement the following signed distance function: - -.. code-block:: c++ - - template - class MySignedDistanceFunction : public SignedDistanceFunction { - public: - T signedDistance(const Vec3T& a_point) const noexcept override { - return m_mesh->signedDistance(this->transformPoint(a_point)); - } - - protected: - // DCEL mesh object, must be constructed externally and - // supplied to MyDistanceFunction (e.g. through the constructor). - std::shared_ptr > m_mesh; - }; - -Alternatively, using a BVH structure: - -.. code-block:: c++ - - template - class MySignedDistanceFunction : public SignedDistanceFunction { - public: - T signedDistance(const Vec3T& a_point) const noexcept override { - return m_bvh->signedDistance(this->transformPoint(a_point)); - } - - protected: - // BVH object, must be constructed externally - // and supplied to MyDistanceFunction (e.g. through the constructor). - std::shared_ptr > m_bvh; - }; - -Transformations ---------------- - -The following transformations are possible: - -* Translation, which defines the operation :math:`\mathbf{x}^\prime = \mathbf{x} - \mathbf{t}` where :math:`\mathbf{t}` is a translation vector. -* Rotation, which defines the operation :math:`\mathbf{x}^\prime = R\left(\mathbf{x}, \theta, a\right)` where :math:`\mathbf{x}` is rotated an angle :math:`\theta` around the coordinate axis :math:`a`. - -Transformations are applied sequentially. -The APIs are as follows: - -.. code-block:: c++ - - void translate(const Vec3T& a_translation) noexcept; // a_translation are Cartesian translations vector - void rotate(const T a_angle, const int a_axis) noexcept; // a_angle in degrees, and a_axis being the Cartesian axis - -E.g. the following code will first translate, then 90 degrees about the :math:`x`-axis. - -.. code-block:: - - MySignedDistanceFunction sdf; - - sdf.translate({1,0,0}); - sdf.rotate(90, 0); - -Note that if the transformations are to be applied, the implementation of ``signedDistance(...)`` must transform the input point, as shown in the examples above. - -.. _Chap:AnalyticSDF: - -Analytic functions ------------------- - -Above, we have shown how users can supply a DCEL or BVH structure to implement ``SignedDistanceFunction``. -In addition, the file :file:`Source/EBGeometry_AnalyticSignedDistanceFunctions.hpp` defines various other analytic shapes such as: - -* **Sphere** - - .. code-block:: c++ - - template - class EBGeometry::SphereSDF : public EBGeometry::SignedDistanceFunction; - -* **Box** - - .. code-block:: c++ - - template - class EBGeometry::BoxSDF : public EBGeometry::SignedDistanceFunction; - -* **Torus** - - .. code-block:: c++ - - template - class EBGeometry::TorusSDF : public EBGeometry::SignedDistanceFunction; - -* **Cylinder** - - .. code-block:: c++ - - template - class EBGeometry::CylinderSDF : public EBGeometry::SignedDistanceFunction; diff --git a/docs/_sources/ImplemUnion.rst.txt b/docs/_sources/ImplemUnion.rst.txt deleted file mode 100644 index 4f9ee26d..00000000 --- a/docs/_sources/ImplemUnion.rst.txt +++ /dev/null @@ -1,51 +0,0 @@ -.. _Chap:Union: - -Unions -====== - -As discussed in :ref:`Chap:Concepts`, a union of signed distance fields can be created provided that the objects do not touch or overlap. -EBGeometry provides two implementations: - -* **Standard union** where one looks through every primitive in the union. -* **BVH-enabled union** where bounding volume hierarchies are used to find the closest object. - -Standard union --------------- - -The standard union is template as - -.. literalinclude:: ../../Source/EBGeometry_Union.hpp - :language: c++ - :lines: 26-29,33-34,45 - -Note that ``EBGeometry::Union`` inherits from ``EBGeometry::SignedDistanceFunction`` and thus provides a ``signedDistance(...)`` function. -The implementation of the standard union is - -.. literalinclude:: ../../Source/EBGeometry_UnionImplem.hpp - :language: c++ - :lines: 28-43 - -That is, it iterates through *all* the objects in order to find the signed distance. - -BVH-enabled union ------------------ - -The BVH-enabled union is implemented by ``EBGeometry::UnionBVH`` as follows: - -.. literalinclude:: ../../Source/EBGeometry_UnionBVH.hpp - :language: c++ - :lines: 26-29,33-34,38-39,58-61,77-80, 94-95, 104, 115 - -As always, the template parameter ``T`` indicates the precision, ``BV`` the bounding volume type and ``K`` the tree degree. -``UnionBVH`` takes a bounding volume constructor in addition to the list of primitives, see :ref:`Chap:BVHConstruction`. - -Internally, ``UnionBVH`` defines its own partitioning function which is identical to the implementation for DCEL meshes (see :ref:`Chap:BVHIntegration`), with the exception that the partitioning is based on the centroids of the bounding volumes rather than the centroid of the primitives. -After partitioning the primitives, the original BVH tree is flattened onto the compact representation. - -The implementation of the signed distance function for the BVH-enabled union is - -.. literalinclude:: ../../Source/EBGeometry_UnionBVHImplem.hpp - :language: c++ - :lines: 144-149 - -That is, it relies on pruning from the BVH functionality for finding the signed distance to the closest object. diff --git a/docs/_sources/ImplemVec.rst.txt b/docs/_sources/ImplemVec.rst.txt deleted file mode 100644 index 09d7f347..00000000 --- a/docs/_sources/ImplemVec.rst.txt +++ /dev/null @@ -1,38 +0,0 @@ -.. _Chap:Vector: - -Vector types -============ - -EBGeometry runs it's own vector types ``Vec2T`` and ``Vec3T``. - -``Vec2T`` is a two-dimensional Cartesian vector. -It is templated as - -.. code-block:: c++ - - namespace EBGeometry { - template - class Vec2T { - public: - T x; // First component. - T y; // Second component. - }; - } - -Most of EBGeometry is written as three-dimensional code, but ``Vec2T`` is needed for DCEL functionality when determining if a point projects onto the interior or exterior of a planar polygon, see :ref:`Chap:DCEL`. -``Vec2T`` has "most" common arithmetic operators like the dot product, length, multiplication operators and so on. - -``Vec3T`` is a three-dimensional Cartesian vector type with precision ``T``. -It is templated as - -.. code-block:: c++ - - namespace EBGeometry { - template - class Vec3T { - public: - T[3] x; - }; - } - -Like ``Vec2T``, ``Vec3T`` has numerous routines for performing most vector-related operations like addition, subtraction, dot products and so on. diff --git a/docs/_sources/Implementation.rst.txt b/docs/_sources/Implementation.rst.txt deleted file mode 100644 index 7c15e846..00000000 --- a/docs/_sources/Implementation.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -.. _Chap:Implementation: - -Here, we consider the basic EBGeometry API. -EBGeometry is a header-only library, implemented under it's own namespace ``EBGeometry``. -Various major components, like BVHs and DCEL, are implemented under namespaces ``EBGeometry::BVH`` and ``EBGeometry::Dcel``. -Below, we consider a brief introduction to the API and implementation details of EBGeometry. - - - - - - diff --git a/docs/_sources/Introduction.rst.txt b/docs/_sources/Introduction.rst.txt deleted file mode 100644 index c925a2f1..00000000 --- a/docs/_sources/Introduction.rst.txt +++ /dev/null @@ -1,41 +0,0 @@ -.. _Chap:Introduction: - -EBGeometry is a comparatively compact code for computing signed distance functions to watertight and orientable surface grids. -Originally, it was written to be used with embedded-boundary (EB) codes like Chombo or AMReX. - -Requirements -============ - -* A C++ compiler which supports C++14. -* An analytic signed distance function, or a watertight and orientable surface grid. - -Quickstart -========== - -To obtained EBGeometry, clone the code from `github `_: - -.. code-block:: bash - - git clone git@github.com:rmrsk/EBGeometry.git - -EBGeometry is a header-only library and is simple to use. -To use it, make :file:`EBGeometry.hpp` (stored at the top level) visible to your code and include it. - -To compile the examples, navigate to the examples folder. -The following two examples show two usages of EBGeometry: - -#. :file:`Examples/Basic` shows how to construct signed distance fields from surface grids, and how to perform signed distance calculations. -#. :file:`Examples/Union` shows how to create multi-object scenes and embed them in bounding volume hierarchies. - -Features -======== - -The basic features of EBGeometry are as follows: - -* Representation of water-tight surface grids as signed distance fields. - EBGeometry uses a doubly-connected edge list (DCEL) representation of the mesh. -* Straightforward implementations of bounding volume hierarchies (BVHs) for use as acceleration structures. - The BVHs can be represented in full or compact (i.e., linearized) forms. -* Support for signed distance calculations and transformations (rotations, translations, and scaling). -* Heavy use of metaprogramming, which exists e.g. in order to permit higher-order trees and flexibility in BVH partitioning. -* Examples of how to couple EBGeometry to AMReX and Chombo. diff --git a/docs/_sources/ZZReferences.rst.txt b/docs/_sources/ZZReferences.rst.txt deleted file mode 100644 index c66a675c..00000000 --- a/docs/_sources/ZZReferences.rst.txt +++ /dev/null @@ -1,5 +0,0 @@ -References ----------- - -.. bibliography:: references.bib - :style: plain diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt deleted file mode 100644 index 6867227b..00000000 --- a/docs/_sources/index.rst.txt +++ /dev/null @@ -1,93 +0,0 @@ -.. EBGeometry documentation master file, created by - sphinx-quickstart on Mon Mar 7 22:24:17 2022. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -EBGeometry's user documentation -=============================== - -This is the user documentation for EBGeometry, a small C++ package for computing signed distance fields from surface tesselations and analytic shapes. -Although EBGeometry is a self-contained package, it is was originally written for usage with embedded boundary (EB) and immersed boundary (IB) codes. -EBGeometry does not involve itself with the *discrete geometry generation*, i.e. the generation of cut-cells. -It only takes care of the *geometry representation*, i.e. the creation of complex geometries as numerically efficient signed distance fields. - -.. important:: - - A separate Doxygen-generated API of EBGeometry is found `here `_. - -.. This is for getting rid of the TOC in html view. -.. raw:: html - - - -Introduction -************ - -.. toctree:: - :maxdepth: 3 - :caption: Introduction - :hidden: - - Introduction.rst - -Concepts -******** - -.. toctree:: - :maxdepth: 3 - :caption: Concepts - :hidden: - - Concepts.rst - DCEL.rst - BVH.rst - -Implementation -************** - -.. toctree:: - :maxdepth: 3 - :caption: Implementation - :hidden: - - Implementation.rst - ImplemVec.rst - ImplemBVH.rst - ImplemDCEL.rst - ImplemSDF.rst - ImplemUnion.rst - -Guided examples -*************** - -.. toctree:: - :maxdepth: 3 - :caption: Guided examples - :hidden: - - Examples.rst - Example_Basic.rst - Example_Union.rst - Example_AMReX.rst - -References -********** - -.. toctree:: - :maxdepth: 3 - :caption: References - :hidden: - - ZZReferences.rst diff --git a/docs/_static/CompactBVH.png b/docs/_static/CompactBVH.png deleted file mode 100644 index 755fa2b5..00000000 Binary files a/docs/_static/CompactBVH.png and /dev/null differ diff --git a/docs/_static/CompactBVH/CompactBVH.aux b/docs/_static/CompactBVH/CompactBVH.aux deleted file mode 100644 index f23e5468..00000000 --- a/docs/_static/CompactBVH/CompactBVH.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/docs/_static/CompactBVH/CompactBVH.log b/docs/_static/CompactBVH/CompactBVH.log deleted file mode 100644 index 1e810299..00000000 --- a/docs/_static/CompactBVH/CompactBVH.log +++ /dev/null @@ -1,748 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.5.11) 9 MAR 2022 11:31 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**CompactBVH -(./CompactBVH.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 7 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks14 -\ex@=\dimen103 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count87 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count88 -\leftroot@=\count89 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count90 -\DOTSCASE@=\count91 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count92 -\c@MaxMatrixCols=\count93 -\dotsspace@=\muskip10 -\c@parentequation=\count94 -\dspbrk@lvl=\count95 -\tag@help=\toks15 -\row@=\count96 -\column@=\count97 -\maxfields@=\count98 -\andhelp@=\toks16 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks17 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks18 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks19 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 99. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen112 -\Gin@req@width=\dimen113 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty -Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package color Info: Driver file: pdftex.def on input line 147. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks20 -\pgfutil@tempdima=\dimen114 -\pgfutil@tempdimb=\dimen115 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box28 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks21 -\pgfkeys@temptoks=\toks22 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks23 -)) -\pgf@x=\dimen116 -\pgf@y=\dimen117 -\pgf@xa=\dimen118 -\pgf@ya=\dimen119 -\pgf@xb=\dimen120 -\pgf@yb=\dimen121 -\pgf@xc=\dimen122 -\pgf@yc=\dimen123 -\w@pgf@writea=\write3 -\r@pgf@reada=\read1 -\c@pgf@counta=\count99 -\c@pgf@countb=\count100 -\c@pgf@countc=\count101 -\c@pgf@countd=\count102 -\t@pgf@toka=\toks24 -\t@pgf@tokb=\toks25 -\t@pgf@tokc=\toks26 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count103 -\pgfsyssoftpath@bigbuffer@items=\count104 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -LaTeX Info: Redefining \color on input line 709. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen124 -\pgfmath@count=\count105 -\pgfmath@box=\box29 -\pgfmath@toks=\toks27 -\pgfmath@stack@operand=\toks28 -\pgfmath@stack@operation=\toks29 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count106 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen125 -\pgf@picmaxx=\dimen126 -\pgf@picminy=\dimen127 -\pgf@picmaxy=\dimen128 -\pgf@pathminx=\dimen129 -\pgf@pathmaxx=\dimen130 -\pgf@pathminy=\dimen131 -\pgf@pathmaxy=\dimen132 -\pgf@xx=\dimen133 -\pgf@xy=\dimen134 -\pgf@yx=\dimen135 -\pgf@yy=\dimen136 -\pgf@zx=\dimen137 -\pgf@zy=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen139 -\pgf@path@lasty=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen141 -\pgf@shorten@start@additional=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box30 -\pgf@hbox=\box31 -\pgf@layerbox@main=\box32 -\pgf@picture@serial@count=\count107 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen143 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen144 -\pgf@pt@y=\dimen145 -\pgf@pt@temp=\dimen146 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen147 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen148 -\pgf@sys@shading@range@num=\count108 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box33 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box34 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen149 -\pgf@nodesepend=\dimen150 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen151 -\pgffor@skip=\dimen152 -\pgffor@stack=\toks30 -\pgffor@toks=\toks31 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count109 -\pgfplotmarksize=\dimen153 -) -\tikz@lastx=\dimen154 -\tikz@lasty=\dimen155 -\tikz@lastxsaved=\dimen156 -\tikz@lastysaved=\dimen157 -\tikzleveldistance=\dimen158 -\tikzsiblingdistance=\dimen159 -\tikz@figbox=\box35 -\tikz@figbox@bg=\box36 -\tikz@tempbox=\box37 -\tikz@tempbox@bg=\box38 -\tikztreelevel=\count110 -\tikznumberofchildren=\count111 -\tikznumberofcurrentchild=\count112 -\tikz@fig@count=\count113 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count114 -\pgfmatrixcurrentcolumn=\count115 -\pgf@matrix@numberofcolumns=\count116 -) -\tikz@expandcount=\count117 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) -(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/pgfplots.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) -Package: pgfplots 2017/06/05 v1.15 Data Visualization (1.15) - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex -\t@pgfplots@toka=\toks32 -\t@pgfplots@tokb=\toks33 -\t@pgfplots@tokc=\toks34 -\pgfplots@tmpa=\dimen160 -\c@pgfplots@coordindex=\count118 -\c@pgfplots@scanlineindex=\count119 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code -.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_loader.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex -) -Package pgfplots: loading complementary arithmetics for your pgf version... - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgflibraryfpu.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count120 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructure.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructureext.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray -.code.tex -\c@pgfplotsarray@tmp=\count121 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatri -x.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshare -d.code.tex -\c@pgfplotstable@counta=\count122 -\t@pgfplotstable@a=\toks35 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.te -x -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.co -de.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.sur -fshading.code.tex -\c@pgfplotslibrarysurf@no=\count123 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surf -shading.pgfsys-pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code. -tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.t -ex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.cod -e.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code. -tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.cod -e.tex -\pgfdecoratedcompleteddistance=\dimen161 -\pgfdecoratedremainingdistance=\dimen162 -\pgfdecoratedinputsegmentcompleteddistance=\dimen163 -\pgfdecoratedinputsegmentremainingdistance=\dimen164 -\pgf@decorate@distancetomove=\dimen165 -\pgf@decorate@repeatstate=\count124 -\pgfdecorationsegmentamplitude=\dimen166 -\pgfdecorationsegmentlength=\dimen167 -) -\tikz@lib@dec@box=\box39 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathmorphing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathmorphing.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathreplacing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathreplacing.code.tex)) -\pgfplots@numplots=\count125 -\pgfplots@xmin@reg=\dimen168 -\pgfplots@xmax@reg=\dimen169 -\pgfplots@ymin@reg=\dimen170 -\pgfplots@ymax@reg=\dimen171 -\pgfplots@zmin@reg=\dimen172 -\pgfplots@zmax@reg=\dimen173 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryplotmarks.code.tex -File: tikzlibraryplotmarks.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.co -de.tex -File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14) -))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count126 -\Gm@cntv=\count127 -\c@Gm@tempcnt=\count128 -\Gm@bindingoffset=\dimen174 -\Gm@wd@mp=\dimen175 -\Gm@odd@mp=\dimen176 -\Gm@even@mp=\dimen177 -\Gm@layoutwidth=\dimen178 -\Gm@layoutheight=\dimen179 -\Gm@layouthoffset=\dimen180 -\Gm@layoutvoffset=\dimen181 -\Gm@dimlist=\toks36 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty -Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi) -\symboldoperators=\mathgroup6 -\symboldletters=\mathgroup7 -\symboldsymbols=\mathgroup8 -LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141. -LaTeX Info: Redefining \bm on input line 207. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2013/09/23 v3.0.1a (rcs-revision 1.16) -\arrowsize=\dimen182 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshadings.code.tex -File: tikzlibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryshadings.cod -e.tex -File: pgflibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.2) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.arrows.code.tex -File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.arrows.code.tex -File: pgflibraryshapes.arrows.code.tex 2008/06/26 v3.0.1a (rcs-revision 1.1) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarycalc.code.tex -File: tikzlibrarycalc.code.tex 2013/07/15 v3.0.1a (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarypositioning.code.tex -File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.1a (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fi -llbetween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillb -etween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryintersections.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersection -s.code.tex -\pgf@intersect@solutions=\count129 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecor -ations.softclip.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbe -tween.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.de -corations.softclip.code.tex)) -\dx=\skip46 -\circleRadius=\skip47 - (./CompactBVH.aux) -\openout1 = `CompactBVH.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Try loading font information for OT1+ptm on input line 34. - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen183 -\scratchbox=\box40 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen184 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -))) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -ABD: EveryShipout initializing macros -Package pgfplots notification 'compat/show suggested version=true': document ha -s been generated with the most recent feature set (\pgfplotsset{compat=1.15}). - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: custom -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: -* h-part:(L,W,R)=(0.0pt, 170.71652pt, 0.0pt) -* v-part:(T,H,B)=(0.0pt, 227.62204pt, 0.0pt) -* \paperwidth=170.71652pt -* \paperheight=227.62204pt -* \textwidth=170.71652pt -* \textheight=227.62204pt -* \oddsidemargin=-72.26999pt -* \evensidemargin=-72.26999pt -* \topmargin=-109.26999pt -* \headheight=12.0pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=65.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -[1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./CompactBVH.aux) ) -Here is how much of TeX's memory you used: - 23880 strings out of 494847 - 620839 string characters out of 6179080 - 761286 words of memory out of 5000000 - 26787 multiletter control sequences out of 15000+600000 - 5225 words of font info for 16 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 74i,6n,128p,805b,633s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/ -share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on CompactBVH.pdf (1 page, 11748 bytes). -PDF statistics: - 24 PDF objects out of 1000 (max. 8388607) - 11 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 53 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/docs/_static/CompactBVH/CompactBVH.pdf b/docs/_static/CompactBVH/CompactBVH.pdf deleted file mode 100644 index 34f935bb..00000000 Binary files a/docs/_static/CompactBVH/CompactBVH.pdf and /dev/null differ diff --git a/docs/_static/CompactBVH/CompactBVH.tex b/docs/_static/CompactBVH/CompactBVH.tex deleted file mode 100644 index 447f032e..00000000 --- a/docs/_static/CompactBVH/CompactBVH.tex +++ /dev/null @@ -1,107 +0,0 @@ -\documentclass[10pt]{article} -\usepackage{amsmath,amsfonts,times} -\usepackage{graphicx,color,tikz,pgfplots} -\usepackage[paperwidth=6cm,paperheight=8cm,lmargin=0in,rmargin=0in,tmargin=0.in,bmargin=0.in]{geometry} -\usepackage{bm} -\usetikzlibrary{arrows,shadings,shapes.arrows,decorations.pathreplacing,calc, positioning} -\usepgfplotslibrary{fillbetween} - -\pgfplotsset{ - compat=newest -} - -\newlength{\dx} -\setlength{\dx}{1.5cm} - -\newlength{\circleRadius} -\setlength{\circleRadius}{0.95\dx} - -\definecolor{outside}{rgb}{0, 1, 0} -\definecolor{cutcell}{rgb}{0, 0.5, 1} -\definecolor{inside}{rgb}{1, 0, 0} - -\tikzset{ - edge/.style={draw=black}, - tree/.style={thick, draw=black, solid, ->}, - bvh/.style={draw=black, minimum width=5mm, minimum height=5mm, rectangle, rounded corners, very thick}, - vertex/.style={circle, inner sep=0pt, minimum width=4pt, draw=black, fill=white, node contents={}}, - point/.style={circle, inner sep=0pt, minimum width=6pt, thick, draw=black, fill=white}, - root/.style={ultra thick, densely dashed, draw=black}, - R1/.style={very thick, draw=black, fill=green!50!white, solid, fill opacity=0.4}, - R2/.style={very thick, draw=black, fill=blue!50!white, solid, fill opacity=0.4}, -} - -\begin{document} -\centering -\begin{tikzpicture} - - %% \draw[root] (-2.55\dx,-1.166\dx) rectangle (1.3\dx, 1.8\dx); - %% \draw[left] (-2.25\dx,-0.766\dx) rectangle (-0.5\dx, 1.5\dx); - %% \draw[right] (-0.7\dx,-0.866\dx) rectangle (1\dx, 1.1\dx); - %% \draw[R1] (-0.7\dx,0\dx) rectangle (1\dx, 1.1\dx); - %% \draw[R2] (-0.7\dx,-0.866\dx) rectangle (1\dx, 0.134\dx); - - %% \node (v0) at (0.1\dx,0.2\dx) [vertex]; - %% \node (v1) at (\dx, 0) [vertex]; - %% \node (v2) at (0.5\dx, 0.866\dx) [vertex]; - %% \node (v3) at (-0.5\dx, 1.1\dx) [vertex]; - %% \node (v4) at (-0.7\dx, 0) [vertex]; - %% \node (v5) at (-0.5\dx, -0.766\dx) [vertex]; - %% \node (v6) at (0.5\dx, -0.866\dx) [vertex]; - - %% \node (v7) at (-1.5\dx, 0.866\dx) [vertex]; - %% \node (v8) at (-1.25\dx, 1.5\dx) [vertex]; - %% \node (v9) at (-2.25\dx, -0.5\dx) [vertex]; - - %% \draw[edge] (v0)--(v1); - %% \draw[edge] (v0)--(v2); - %% \draw[edge] (v0)--(v3); - %% \draw[edge] (v0)--(v4); - %% \draw[edge] (v0)--(v5); - %% \draw[edge] (v0)--(v6); - - %% \draw[edge] (v1)--(v2)--(v3)--(v4)--(v5)--(v6)--(v1); - - %% \draw[edge] (v3)--(v8)--(v7)--(v3); - %% \draw[edge] (v4)--(v7)--(v3)--(v4); - %% \draw[edge] (v9)--(v4); - %% \draw[edge] (v9)--(v5); - %% \draw[edge] (v9)--(v7); - - \node[bvh, alias=A ] at (3.5\dx, 1.4\dx) {A}; - \node[bvh, alias=B, below left =0.6\dx and 0.5\dx of A] {B}; - \node[bvh, alias=C, below right=0.6\dx and 0.5\dx of A] {C}; - \node[bvh, alias=D, below left =0.6\dx and 0.1\dx of B] {D}; - \node[bvh, alias=E, below right=0.6\dx and 0.1\dx of B] {E}; - \node[bvh, alias=F, below left =0.6\dx and 0.1\dx of C] {F}; - \node[bvh, alias=G, below right=0.6\dx and 0.1\dx of C] {G}; - \node[bvh, alias=H, below left =0.6\dx and 0.1\dx of D] {H}; - \node[bvh, alias=I, below right=0.6\dx and 0.1\dx of D] {I}; - - \path[tree] (A) to (B); - \path[tree] (A) to (C); - - \path[tree] (B) to (D); - \path[tree] (B) to (E); - - \path[tree] (C) to (F); - \path[tree] (C) to (G); - - \path[tree] (D) to (H); - \path[tree] (D) to (I); - - \node[bvh, alias=AA, anchor=north, below=1.5\dx of H] {A}; - \node[bvh, alias=BB, anchor=west, right=1pt of AA] {B}; - \node[bvh, alias=DD, anchor=west, right=1pt of BB] {D}; - \node[bvh, alias=HH, anchor=west, right=1pt of DD] {H}; - \node[bvh, alias=II, anchor=west, right=1pt of HH] {I}; - \node[bvh, alias=EE, anchor=west, right=1pt of II] {E}; - \node[bvh, alias=CC, anchor=west, right=1pt of EE] {C}; - \node[bvh, alias=FF, anchor=west, right=1pt of CC] {F}; - \node[bvh, alias=GG, anchor=west, right=1pt of FF] {G}; - - \draw[thick, black,->] (BB.north) to [out=90, in=90] (DD.north); - \draw[thick, black,->] (BB.north) to [out=90, in=90] (EE.north); -\end{tikzpicture} - -\end{document} diff --git a/docs/_static/DCEL.png b/docs/_static/DCEL.png deleted file mode 100644 index e19ee411..00000000 Binary files a/docs/_static/DCEL.png and /dev/null differ diff --git a/docs/_static/DCEL/DCEL.aux b/docs/_static/DCEL/DCEL.aux deleted file mode 100644 index f23e5468..00000000 --- a/docs/_static/DCEL/DCEL.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/docs/_static/DCEL/DCEL.log b/docs/_static/DCEL/DCEL.log deleted file mode 100644 index 43ce2e1c..00000000 --- a/docs/_static/DCEL/DCEL.log +++ /dev/null @@ -1,762 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.5.11) 16 AUG 2021 10:44 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**DCEL -(./DCEL.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 7 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks14 -\ex@=\dimen103 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count87 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count88 -\leftroot@=\count89 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count90 -\DOTSCASE@=\count91 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count92 -\c@MaxMatrixCols=\count93 -\dotsspace@=\muskip10 -\c@parentequation=\count94 -\dspbrk@lvl=\count95 -\tag@help=\toks15 -\row@=\count96 -\column@=\count97 -\maxfields@=\count98 -\andhelp@=\toks16 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks17 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks18 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -Package: amssymb 2013/01/14 v3.01 AMS font symbols -) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks19 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 99. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen112 -\Gin@req@width=\dimen113 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty -Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package color Info: Driver file: pdftex.def on input line 147. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks20 -\pgfutil@tempdima=\dimen114 -\pgfutil@tempdimb=\dimen115 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box28 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks21 -\pgfkeys@temptoks=\toks22 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks23 -)) -\pgf@x=\dimen116 -\pgf@y=\dimen117 -\pgf@xa=\dimen118 -\pgf@ya=\dimen119 -\pgf@xb=\dimen120 -\pgf@yb=\dimen121 -\pgf@xc=\dimen122 -\pgf@yc=\dimen123 -\w@pgf@writea=\write3 -\r@pgf@reada=\read1 -\c@pgf@counta=\count99 -\c@pgf@countb=\count100 -\c@pgf@countc=\count101 -\c@pgf@countd=\count102 -\t@pgf@toka=\toks24 -\t@pgf@tokb=\toks25 -\t@pgf@tokc=\toks26 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count103 -\pgfsyssoftpath@bigbuffer@items=\count104 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -LaTeX Info: Redefining \color on input line 709. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen124 -\pgfmath@count=\count105 -\pgfmath@box=\box29 -\pgfmath@toks=\toks27 -\pgfmath@stack@operand=\toks28 -\pgfmath@stack@operation=\toks29 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count106 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen125 -\pgf@picmaxx=\dimen126 -\pgf@picminy=\dimen127 -\pgf@picmaxy=\dimen128 -\pgf@pathminx=\dimen129 -\pgf@pathmaxx=\dimen130 -\pgf@pathminy=\dimen131 -\pgf@pathmaxy=\dimen132 -\pgf@xx=\dimen133 -\pgf@xy=\dimen134 -\pgf@yx=\dimen135 -\pgf@yy=\dimen136 -\pgf@zx=\dimen137 -\pgf@zy=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen139 -\pgf@path@lasty=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen141 -\pgf@shorten@start@additional=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box30 -\pgf@hbox=\box31 -\pgf@layerbox@main=\box32 -\pgf@picture@serial@count=\count107 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen143 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen144 -\pgf@pt@y=\dimen145 -\pgf@pt@temp=\dimen146 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen147 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen148 -\pgf@sys@shading@range@num=\count108 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box33 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box34 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen149 -\pgf@nodesepend=\dimen150 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen151 -\pgffor@skip=\dimen152 -\pgffor@stack=\toks30 -\pgffor@toks=\toks31 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count109 -\pgfplotmarksize=\dimen153 -) -\tikz@lastx=\dimen154 -\tikz@lasty=\dimen155 -\tikz@lastxsaved=\dimen156 -\tikz@lastysaved=\dimen157 -\tikzleveldistance=\dimen158 -\tikzsiblingdistance=\dimen159 -\tikz@figbox=\box35 -\tikz@figbox@bg=\box36 -\tikz@tempbox=\box37 -\tikz@tempbox@bg=\box38 -\tikztreelevel=\count110 -\tikznumberofchildren=\count111 -\tikznumberofcurrentchild=\count112 -\tikz@fig@count=\count113 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count114 -\pgfmatrixcurrentcolumn=\count115 -\pgf@matrix@numberofcolumns=\count116 -) -\tikz@expandcount=\count117 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) -(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/pgfplots.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) -Package: pgfplots 2017/06/05 v1.15 Data Visualization (1.15) - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex -\t@pgfplots@toka=\toks32 -\t@pgfplots@tokb=\toks33 -\t@pgfplots@tokc=\toks34 -\pgfplots@tmpa=\dimen160 -\c@pgfplots@coordindex=\count118 -\c@pgfplots@scanlineindex=\count119 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code -.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_loader.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex -) -Package pgfplots: loading complementary arithmetics for your pgf version... - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgflibraryfpu.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count120 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructure.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructureext.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray -.code.tex -\c@pgfplotsarray@tmp=\count121 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatri -x.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshare -d.code.tex -\c@pgfplotstable@counta=\count122 -\t@pgfplotstable@a=\toks35 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.te -x -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.co -de.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.sur -fshading.code.tex -\c@pgfplotslibrarysurf@no=\count123 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surf -shading.pgfsys-pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code. -tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.t -ex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.cod -e.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code. -tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.cod -e.tex -\pgfdecoratedcompleteddistance=\dimen161 -\pgfdecoratedremainingdistance=\dimen162 -\pgfdecoratedinputsegmentcompleteddistance=\dimen163 -\pgfdecoratedinputsegmentremainingdistance=\dimen164 -\pgf@decorate@distancetomove=\dimen165 -\pgf@decorate@repeatstate=\count124 -\pgfdecorationsegmentamplitude=\dimen166 -\pgfdecorationsegmentlength=\dimen167 -) -\tikz@lib@dec@box=\box39 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathmorphing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathmorphing.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathreplacing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathreplacing.code.tex)) -\pgfplots@numplots=\count125 -\pgfplots@xmin@reg=\dimen168 -\pgfplots@xmax@reg=\dimen169 -\pgfplots@ymin@reg=\dimen170 -\pgfplots@ymax@reg=\dimen171 -\pgfplots@zmin@reg=\dimen172 -\pgfplots@zmax@reg=\dimen173 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryplotmarks.code.tex -File: tikzlibraryplotmarks.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.co -de.tex -File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14) -))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count126 -\Gm@cntv=\count127 -\c@Gm@tempcnt=\count128 -\Gm@bindingoffset=\dimen174 -\Gm@wd@mp=\dimen175 -\Gm@odd@mp=\dimen176 -\Gm@even@mp=\dimen177 -\Gm@layoutwidth=\dimen178 -\Gm@layoutheight=\dimen179 -\Gm@layouthoffset=\dimen180 -\Gm@layoutvoffset=\dimen181 -\Gm@dimlist=\toks36 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty -Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi) -\symboldoperators=\mathgroup6 -\symboldletters=\mathgroup7 -\symboldsymbols=\mathgroup8 -LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141. -LaTeX Info: Redefining \bm on input line 207. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2013/09/23 v3.0.1a (rcs-revision 1.16) -\arrowsize=\dimen182 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshadings.code.tex -File: tikzlibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryshadings.cod -e.tex -File: pgflibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.2) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.arrows.code.tex -File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.arrows.code.tex -File: pgflibraryshapes.arrows.code.tex 2008/06/26 v3.0.1a (rcs-revision 1.1) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarycalc.code.tex -File: tikzlibrarycalc.code.tex 2013/07/15 v3.0.1a (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fi -llbetween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillb -etween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryintersections.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersection -s.code.tex -\pgf@intersect@solutions=\count129 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecor -ations.softclip.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbe -tween.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.de -corations.softclip.code.tex)) -\h=\skip46 -\rad=\skip47 -\shorten=\skip48 - - -LaTeX Warning: Unused global option(s): - [9pt]. - -(./DCEL.aux) -\openout1 = `DCEL.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 28. -LaTeX Font Info: ... okay on input line 28. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 28. -LaTeX Font Info: ... okay on input line 28. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 28. -LaTeX Font Info: ... okay on input line 28. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 28. -LaTeX Font Info: ... okay on input line 28. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 28. -LaTeX Font Info: ... okay on input line 28. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 28. -LaTeX Font Info: ... okay on input line 28. -LaTeX Font Info: Try loading font information for OT1+ptm on input line 28. - (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen183 -\scratchbox=\box40 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen184 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -))) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -ABD: EveryShipout initializing macros -Package pgfplots notification 'compat/show suggested version=true': document ha -s been generated with the most recent feature set (\pgfplotsset{compat=1.15}). - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: custom -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: -* h-part:(L,W,R)=(0.0pt, 227.62204pt, 0.0pt) -* v-part:(T,H,B)=(10.00002pt, 194.85973pt, 0.0pt) -* \paperwidth=227.62204pt -* \paperheight=204.85974pt -* \textwidth=227.62204pt -* \textheight=194.85973pt -* \oddsidemargin=-72.26999pt -* \evensidemargin=-72.26999pt -* \topmargin=-99.26997pt -* \headheight=12.0pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=65.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -LaTeX Font Info: Try loading font information for U+msa on input line 42. -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Try loading font information for U+msb on input line 42. - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./DCEL.aux) ) -Here is how much of TeX's memory you used: - 24051 strings out of 494847 - 622062 string characters out of 6179080 - 754921 words of memory out of 5000000 - 26936 multiletter control sequences out of 15000+600000 - 10695 words of font info for 35 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 74i,6n,128p,800b,609s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/ -texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on DCEL.pdf (1 page, 27716 bytes). -PDF statistics: - 34 PDF objects out of 1000 (max. 8388607) - 18 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 59 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/docs/_static/DCEL/DCEL.pdf b/docs/_static/DCEL/DCEL.pdf deleted file mode 100644 index 1bac8986..00000000 Binary files a/docs/_static/DCEL/DCEL.pdf and /dev/null differ diff --git a/docs/_static/DCEL/DCEL.png b/docs/_static/DCEL/DCEL.png deleted file mode 100644 index e19ee411..00000000 Binary files a/docs/_static/DCEL/DCEL.png and /dev/null differ diff --git a/docs/_static/DCEL/DCEL.tex b/docs/_static/DCEL/DCEL.tex deleted file mode 100644 index 24691398..00000000 --- a/docs/_static/DCEL/DCEL.tex +++ /dev/null @@ -1,75 +0,0 @@ -\documentclass[9pt]{article} -\usepackage{amsmath,amsfonts,amssymb,times} -\usepackage{graphicx,color,tikz,pgfplots} -\usepackage[paperwidth=8cm,paperheight=7.2cm,lmargin=0in,rmargin=0in,tmargin=1em,bmargin=0.in]{geometry} -\usepackage{bm} -\usetikzlibrary{arrows,shadings,shapes.arrows,decorations.pathreplacing,calc} -\usepgfplotslibrary{fillbetween} - - -\pagestyle{empty} -\pgfplotsset{compat=newest} -\definecolor{applered}{RGB}{255,8,0} -\definecolor{azure}{RGB}{0,127,255} -\definecolor{violet}{RGB}{159,0,255} - -\pgfdeclareverticalshading{rainbow}{100bp} -{color(0bp)=(applered); color(25bp)=(red); color(40bp)=(yellow); - color(47bp)=(green); color(51bp)=(cyan); color(60bp)=(blue); - color(65bp)=(violet); color(100bp)=(violet)} - -\newlength{\h} -\newlength{\rad} -\newlength{\shorten} -\setlength{\h}{3cm} -\setlength{\rad}{4pt} -\setlength{\shorten}{2pt} - -\begin{document} -\centering -\begin{tikzpicture}[ - vertex/.style={circle, minimum width=\rad, inner sep=0pt, fill=black}, - insideEdge/.style ={thick, red!75!white, -latex', shorten <=\shorten, shorten >= \shorten}, - outsideEdge/.style={thin, blue!75!white, -latex', shorten <=\shorten, shorten >= \shorten}, - ] - - \node[vertex, alias=v1] at (0,0) {}; - \node[vertex, alias=v2] at (\h, 0) {}; - \node[vertex, alias=v3] at (1.3\h,1.1\h) {}; - \node[vertex, alias=v4] at (0.5\h,1.\h) {}; - \node[vertex, alias=v5] at (-0.1\h,1.2\h) {}; - - \draw[insideEdge] (v1.north east) -- (v2.north west) node [midway, above] {Half-edge $e$}; - \draw[insideEdge] (v2.north west) -- (v3.south west) node [midway,left, anchor=east] {$\textrm{Next}(e)$}; - \draw[insideEdge] (v3.south west) -- (v4.south east); - \draw[insideEdge] (v4.south west) -- (v5.south east); - \draw[insideEdge] (v5.south east) -- (v1.north east) node [midway,right, anchor=west] {$\textrm{Previous}(e)$}; - - \draw[outsideEdge](v2.south west) -- (v1.south east) node [midway,below, anchor=north] {$\textrm{Pair}(e)$}; - \draw[outsideEdge](v1.north west) -- (v5.south west); - \draw[outsideEdge](v5.north east) -- (v4.north west); - \draw[outsideEdge](v4.north east) -- (v3.north west); - \draw[outsideEdge](v3.south east) -- (v2.north east); - - \node[vertex, alias=u1] at (-0.5\h, -0.5\h) {}; - \node[vertex, alias=u2] at ( 1.5\h, -0.5\h) {}; - \node[vertex, alias=u3] at ( 1.6\h, 1.5\h) {}; - \node[vertex, alias=u5] at (-0.6\h, 1.6\h) {}; - - \draw[outsideEdge] (u1.north) -- (v1.west); - \draw[outsideEdge] (v1.south) -- (u1.east); - - \draw[outsideEdge] (u2.west) -- (v2.south); - \draw[outsideEdge] (v2.east) -- (u2.north); - - \draw[outsideEdge] (u3.south) -- (v3.east); - \draw[outsideEdge] (v3.north) -- (u3.west); - - \draw[outsideEdge] (u5.east) -- (v5.north); - \draw[outsideEdge] (v5.west) -- (u5.south); - - \node[anchor=south east, alias=vert,inner sep=0pt,xshift=-0.2\h,yshift=0.2\h] at (v1.north west) {$\textrm{Vertex}(e)$}; - \draw[shorten >= 2pt] (vert.south) -- (v1.west); - -\end{tikzpicture} -\end{document} diff --git a/docs/_static/PolygonProjection.png b/docs/_static/PolygonProjection.png deleted file mode 100644 index 7843300f..00000000 Binary files a/docs/_static/PolygonProjection.png and /dev/null differ diff --git a/docs/_static/PolygonProjection/PolygonProjection.aux b/docs/_static/PolygonProjection/PolygonProjection.aux deleted file mode 100644 index f23e5468..00000000 --- a/docs/_static/PolygonProjection/PolygonProjection.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/docs/_static/PolygonProjection/PolygonProjection.log b/docs/_static/PolygonProjection/PolygonProjection.log deleted file mode 100644 index 8bbecad2..00000000 --- a/docs/_static/PolygonProjection/PolygonProjection.log +++ /dev/null @@ -1,749 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.5.11) 16 AUG 2021 12:00 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**PolygonProjection.tex -(./PolygonProjection.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 7 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks14 -\ex@=\dimen103 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count87 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count88 -\leftroot@=\count89 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count90 -\DOTSCASE@=\count91 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count92 -\c@MaxMatrixCols=\count93 -\dotsspace@=\muskip10 -\c@parentequation=\count94 -\dspbrk@lvl=\count95 -\tag@help=\toks15 -\row@=\count96 -\column@=\count97 -\maxfields@=\count98 -\andhelp@=\toks16 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks17 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks18 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks19 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 99. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen112 -\Gin@req@width=\dimen113 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty -Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package color Info: Driver file: pdftex.def on input line 147. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks20 -\pgfutil@tempdima=\dimen114 -\pgfutil@tempdimb=\dimen115 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box28 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks21 -\pgfkeys@temptoks=\toks22 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks23 -)) -\pgf@x=\dimen116 -\pgf@y=\dimen117 -\pgf@xa=\dimen118 -\pgf@ya=\dimen119 -\pgf@xb=\dimen120 -\pgf@yb=\dimen121 -\pgf@xc=\dimen122 -\pgf@yc=\dimen123 -\w@pgf@writea=\write3 -\r@pgf@reada=\read1 -\c@pgf@counta=\count99 -\c@pgf@countb=\count100 -\c@pgf@countc=\count101 -\c@pgf@countd=\count102 -\t@pgf@toka=\toks24 -\t@pgf@tokb=\toks25 -\t@pgf@tokc=\toks26 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count103 -\pgfsyssoftpath@bigbuffer@items=\count104 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -LaTeX Info: Redefining \color on input line 709. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen124 -\pgfmath@count=\count105 -\pgfmath@box=\box29 -\pgfmath@toks=\toks27 -\pgfmath@stack@operand=\toks28 -\pgfmath@stack@operation=\toks29 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count106 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen125 -\pgf@picmaxx=\dimen126 -\pgf@picminy=\dimen127 -\pgf@picmaxy=\dimen128 -\pgf@pathminx=\dimen129 -\pgf@pathmaxx=\dimen130 -\pgf@pathminy=\dimen131 -\pgf@pathmaxy=\dimen132 -\pgf@xx=\dimen133 -\pgf@xy=\dimen134 -\pgf@yx=\dimen135 -\pgf@yy=\dimen136 -\pgf@zx=\dimen137 -\pgf@zy=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen139 -\pgf@path@lasty=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen141 -\pgf@shorten@start@additional=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box30 -\pgf@hbox=\box31 -\pgf@layerbox@main=\box32 -\pgf@picture@serial@count=\count107 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen143 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen144 -\pgf@pt@y=\dimen145 -\pgf@pt@temp=\dimen146 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen147 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen148 -\pgf@sys@shading@range@num=\count108 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box33 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box34 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen149 -\pgf@nodesepend=\dimen150 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen151 -\pgffor@skip=\dimen152 -\pgffor@stack=\toks30 -\pgffor@toks=\toks31 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count109 -\pgfplotmarksize=\dimen153 -) -\tikz@lastx=\dimen154 -\tikz@lasty=\dimen155 -\tikz@lastxsaved=\dimen156 -\tikz@lastysaved=\dimen157 -\tikzleveldistance=\dimen158 -\tikzsiblingdistance=\dimen159 -\tikz@figbox=\box35 -\tikz@figbox@bg=\box36 -\tikz@tempbox=\box37 -\tikz@tempbox@bg=\box38 -\tikztreelevel=\count110 -\tikznumberofchildren=\count111 -\tikznumberofcurrentchild=\count112 -\tikz@fig@count=\count113 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count114 -\pgfmatrixcurrentcolumn=\count115 -\pgf@matrix@numberofcolumns=\count116 -) -\tikz@expandcount=\count117 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) -(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/pgfplots.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) -Package: pgfplots 2017/06/05 v1.15 Data Visualization (1.15) - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex -\t@pgfplots@toka=\toks32 -\t@pgfplots@tokb=\toks33 -\t@pgfplots@tokc=\toks34 -\pgfplots@tmpa=\dimen160 -\c@pgfplots@coordindex=\count118 -\c@pgfplots@scanlineindex=\count119 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code -.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_loader.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex -) -Package pgfplots: loading complementary arithmetics for your pgf version... - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgflibraryfpu.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count120 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructure.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructureext.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray -.code.tex -\c@pgfplotsarray@tmp=\count121 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatri -x.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshare -d.code.tex -\c@pgfplotstable@counta=\count122 -\t@pgfplotstable@a=\toks35 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.te -x -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.co -de.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.sur -fshading.code.tex -\c@pgfplotslibrarysurf@no=\count123 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surf -shading.pgfsys-pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code. -tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.t -ex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.cod -e.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code. -tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.cod -e.tex -\pgfdecoratedcompleteddistance=\dimen161 -\pgfdecoratedremainingdistance=\dimen162 -\pgfdecoratedinputsegmentcompleteddistance=\dimen163 -\pgfdecoratedinputsegmentremainingdistance=\dimen164 -\pgf@decorate@distancetomove=\dimen165 -\pgf@decorate@repeatstate=\count124 -\pgfdecorationsegmentamplitude=\dimen166 -\pgfdecorationsegmentlength=\dimen167 -) -\tikz@lib@dec@box=\box39 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathmorphing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathmorphing.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathreplacing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathreplacing.code.tex)) -\pgfplots@numplots=\count125 -\pgfplots@xmin@reg=\dimen168 -\pgfplots@xmax@reg=\dimen169 -\pgfplots@ymin@reg=\dimen170 -\pgfplots@ymax@reg=\dimen171 -\pgfplots@zmin@reg=\dimen172 -\pgfplots@zmax@reg=\dimen173 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryplotmarks.code.tex -File: tikzlibraryplotmarks.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.co -de.tex -File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14) -))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count126 -\Gm@cntv=\count127 -\c@Gm@tempcnt=\count128 -\Gm@bindingoffset=\dimen174 -\Gm@wd@mp=\dimen175 -\Gm@odd@mp=\dimen176 -\Gm@even@mp=\dimen177 -\Gm@layoutwidth=\dimen178 -\Gm@layoutheight=\dimen179 -\Gm@layouthoffset=\dimen180 -\Gm@layoutvoffset=\dimen181 -\Gm@dimlist=\toks36 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty -Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi) -\symboldoperators=\mathgroup6 -\symboldletters=\mathgroup7 -\symboldsymbols=\mathgroup8 -LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141. -LaTeX Info: Redefining \bm on input line 207. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2013/09/23 v3.0.1a (rcs-revision 1.16) -\arrowsize=\dimen182 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshadings.code.tex -File: tikzlibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryshadings.cod -e.tex -File: pgflibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.2) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.arrows.code.tex -File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.arrows.code.tex -File: pgflibraryshapes.arrows.code.tex 2008/06/26 v3.0.1a (rcs-revision 1.1) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarycalc.code.tex -File: tikzlibrarycalc.code.tex 2013/07/15 v3.0.1a (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarypositioning.code.tex -File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.1a (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fi -llbetween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillb -etween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryintersections.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersection -s.code.tex -\pgf@intersect@solutions=\count129 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecor -ations.softclip.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbe -tween.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.de -corations.softclip.code.tex)) -\dx=\skip46 -\dy=\skip47 -\circleRadius=\skip48 - (./PolygonProjection.aux) -\openout1 = `PolygonProjection.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 37. -LaTeX Font Info: ... okay on input line 37. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 37. -LaTeX Font Info: ... okay on input line 37. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 37. -LaTeX Font Info: ... okay on input line 37. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 37. -LaTeX Font Info: ... okay on input line 37. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 37. -LaTeX Font Info: ... okay on input line 37. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 37. -LaTeX Font Info: ... okay on input line 37. -LaTeX Font Info: Try loading font information for OT1+ptm on input line 37. - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen183 -\scratchbox=\box40 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen184 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -))) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -ABD: EveryShipout initializing macros -Package pgfplots notification 'compat/show suggested version=true': document ha -s been generated with the most recent feature set (\pgfplotsset{compat=1.15}). - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: custom -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: -* h-part:(L,W,R)=(0.0pt, 136.5733pt, 0.0pt) -* v-part:(T,H,B)=(0.0pt, 119.50148pt, 0.0pt) -* \paperwidth=136.5733pt -* \paperheight=119.50148pt -* \textwidth=136.5733pt -* \textheight=119.50148pt -* \oddsidemargin=-72.26999pt -* \evensidemargin=-72.26999pt -* \topmargin=-109.26999pt -* \headheight=12.0pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=65.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -[1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./PolygonProjection.aux) -) -Here is how much of TeX's memory you used: - 23697 strings out of 494847 - 618068 string characters out of 6179080 - 753871 words of memory out of 5000000 - 26604 multiletter control sequences out of 15000+600000 - 5225 words of font info for 16 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 74i,6n,128p,820b,609s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on PolygonProjection.pdf (1 page, 10227 bytes). -PDF statistics: - 24 PDF objects out of 1000 (max. 8388607) - 11 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 53 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/docs/_static/PolygonProjection/PolygonProjection.pdf b/docs/_static/PolygonProjection/PolygonProjection.pdf deleted file mode 100644 index 2e4747f2..00000000 Binary files a/docs/_static/PolygonProjection/PolygonProjection.pdf and /dev/null differ diff --git a/docs/_static/PolygonProjection/PolygonProjection.png b/docs/_static/PolygonProjection/PolygonProjection.png deleted file mode 100644 index 7843300f..00000000 Binary files a/docs/_static/PolygonProjection/PolygonProjection.png and /dev/null differ diff --git a/docs/_static/PolygonProjection/PolygonProjection.tex b/docs/_static/PolygonProjection/PolygonProjection.tex deleted file mode 100644 index 414c7f0e..00000000 --- a/docs/_static/PolygonProjection/PolygonProjection.tex +++ /dev/null @@ -1,74 +0,0 @@ -\documentclass[10pt]{article} -\usepackage{amsmath,amsfonts,times} -\usepackage{graphicx,color,tikz,pgfplots} -\usepackage[paperwidth=4.8cm,paperheight=4.2cm,lmargin=0in,rmargin=0in,tmargin=0.in,bmargin=0.in]{geometry} -\usepackage{bm} -\usetikzlibrary{arrows,shadings,shapes.arrows,decorations.pathreplacing,calc, positioning} -\usepgfplotslibrary{fillbetween} - -\pgfplotsset{ - compat=newest -} - -\newlength{\dx} -\setlength{\dx}{2cm} - -\newlength{\dy} -\setlength{\dy}{1.cm} - -\newlength{\circleRadius} -\setlength{\circleRadius}{0.95\dx} - -\definecolor{outside}{rgb}{0, 1, 0} -\definecolor{cutcell}{rgb}{0, 0.5, 1} -\definecolor{inside}{rgb}{1, 0, 0} - -\tikzset{ - edge/.style={thick, draw=black}, - tree/.style={thick, draw=black, densely dotted}, - bvh/.style={draw=black, minimum width=5mm, minimum height=5mm, rectangle, very thick}, - vertex/.style={circle, inner sep=0pt, minimum width=4pt, draw=black, fill=black, node contents={}}, - point/.style={circle, inner sep=0pt, minimum width=6pt, thick, draw=black, fill=white}, - root/.style={ultra thick, densely dashed, draw=black}, - left/.style={very thick, draw=black, solid, fill=blue, fill opacity=0.2}, - right/.style={very thick, draw=black, solid, fill=red, fill opacity=0.2}, -} - -\begin{document} -\centering -\begin{tikzpicture} - - \draw[left] (0,0) rectangle (\dx, \dx); - - \node (v0) at (0,0) [vertex]; - \node (v1) at (\dx,0) [vertex]; - \node (v2) at (\dx,\dx) [vertex]; - \node (v3) at (0, \dx) [vertex]; - - \draw[tree] (v0) --++(-\dy, 0); - \draw[tree] (v0) --++(0,-\dy); - - \draw[tree] (v1) --++(\dy, 0); - \draw[tree] (v1) --++(0,-\dy); - - \draw[tree] (v2) --++(\dy, 0); - \draw[tree] (v2) --++(0,\dy); - - \draw[tree] (v3) --++(-\dy, 0); - \draw[tree] (v3) --++(0,\dy); - - \node[anchor=north east] at (-0.1\dx, -0.1\dx) {Vertex}; - \node[anchor=north west] at (1.1\dx, -0.1\dx) {Vertex}; - \node[anchor=south east] at (-0.1\dx, 1.1\dx) {Vertex}; - \node[anchor=south west] at (1.1\dx, 1.1\dx) {Vertex}; - - \node[anchor=north] at (0.5\dx, -0.1\dx) {Edge}; - \node[anchor=west] at (1.1\dx, 0.5\dx) {Edge}; - \node[anchor=east] at (-0.1\dx, 0.5\dx) {Edge}; - \node[anchor=south] at (0.5\dx, 1.1\dx) {Edge}; - - \node at (0.5\dx, 0.5\dx) {Face}; - -\end{tikzpicture} - -\end{document} diff --git a/docs/_static/Pseudonormal.png b/docs/_static/Pseudonormal.png deleted file mode 100644 index 85950a11..00000000 Binary files a/docs/_static/Pseudonormal.png and /dev/null differ diff --git a/docs/_static/Pseudonormal/Pseudonormal.aux b/docs/_static/Pseudonormal/Pseudonormal.aux deleted file mode 100644 index f23e5468..00000000 --- a/docs/_static/Pseudonormal/Pseudonormal.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/docs/_static/Pseudonormal/Pseudonormal.log b/docs/_static/Pseudonormal/Pseudonormal.log deleted file mode 100644 index 5631f202..00000000 --- a/docs/_static/Pseudonormal/Pseudonormal.log +++ /dev/null @@ -1,760 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.5.11) 16 AUG 2021 12:47 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**Pseudonormal.tex -(./Pseudonormal.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 7 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks14 -\ex@=\dimen103 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count87 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count88 -\leftroot@=\count89 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count90 -\DOTSCASE@=\count91 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count92 -\c@MaxMatrixCols=\count93 -\dotsspace@=\muskip10 -\c@parentequation=\count94 -\dspbrk@lvl=\count95 -\tag@help=\toks15 -\row@=\count96 -\column@=\count97 -\maxfields@=\count98 -\andhelp@=\toks16 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks17 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks18 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks19 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 99. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen112 -\Gin@req@width=\dimen113 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty -Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package color Info: Driver file: pdftex.def on input line 147. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks20 -\pgfutil@tempdima=\dimen114 -\pgfutil@tempdimb=\dimen115 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box28 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks21 -\pgfkeys@temptoks=\toks22 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks23 -)) -\pgf@x=\dimen116 -\pgf@y=\dimen117 -\pgf@xa=\dimen118 -\pgf@ya=\dimen119 -\pgf@xb=\dimen120 -\pgf@yb=\dimen121 -\pgf@xc=\dimen122 -\pgf@yc=\dimen123 -\w@pgf@writea=\write3 -\r@pgf@reada=\read1 -\c@pgf@counta=\count99 -\c@pgf@countb=\count100 -\c@pgf@countc=\count101 -\c@pgf@countd=\count102 -\t@pgf@toka=\toks24 -\t@pgf@tokb=\toks25 -\t@pgf@tokc=\toks26 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count103 -\pgfsyssoftpath@bigbuffer@items=\count104 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -LaTeX Info: Redefining \color on input line 709. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen124 -\pgfmath@count=\count105 -\pgfmath@box=\box29 -\pgfmath@toks=\toks27 -\pgfmath@stack@operand=\toks28 -\pgfmath@stack@operation=\toks29 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count106 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen125 -\pgf@picmaxx=\dimen126 -\pgf@picminy=\dimen127 -\pgf@picmaxy=\dimen128 -\pgf@pathminx=\dimen129 -\pgf@pathmaxx=\dimen130 -\pgf@pathminy=\dimen131 -\pgf@pathmaxy=\dimen132 -\pgf@xx=\dimen133 -\pgf@xy=\dimen134 -\pgf@yx=\dimen135 -\pgf@yy=\dimen136 -\pgf@zx=\dimen137 -\pgf@zy=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen139 -\pgf@path@lasty=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen141 -\pgf@shorten@start@additional=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box30 -\pgf@hbox=\box31 -\pgf@layerbox@main=\box32 -\pgf@picture@serial@count=\count107 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen143 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen144 -\pgf@pt@y=\dimen145 -\pgf@pt@temp=\dimen146 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen147 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen148 -\pgf@sys@shading@range@num=\count108 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box33 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box34 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen149 -\pgf@nodesepend=\dimen150 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen151 -\pgffor@skip=\dimen152 -\pgffor@stack=\toks30 -\pgffor@toks=\toks31 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count109 -\pgfplotmarksize=\dimen153 -) -\tikz@lastx=\dimen154 -\tikz@lasty=\dimen155 -\tikz@lastxsaved=\dimen156 -\tikz@lastysaved=\dimen157 -\tikzleveldistance=\dimen158 -\tikzsiblingdistance=\dimen159 -\tikz@figbox=\box35 -\tikz@figbox@bg=\box36 -\tikz@tempbox=\box37 -\tikz@tempbox@bg=\box38 -\tikztreelevel=\count110 -\tikznumberofchildren=\count111 -\tikznumberofcurrentchild=\count112 -\tikz@fig@count=\count113 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count114 -\pgfmatrixcurrentcolumn=\count115 -\pgf@matrix@numberofcolumns=\count116 -) -\tikz@expandcount=\count117 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) -(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/pgfplots.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) -Package: pgfplots 2017/06/05 v1.15 Data Visualization (1.15) - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex -\t@pgfplots@toka=\toks32 -\t@pgfplots@tokb=\toks33 -\t@pgfplots@tokc=\toks34 -\pgfplots@tmpa=\dimen160 -\c@pgfplots@coordindex=\count118 -\c@pgfplots@scanlineindex=\count119 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code -.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_loader.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex -) -Package pgfplots: loading complementary arithmetics for your pgf version... - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgflibraryfpu.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count120 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructure.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructureext.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray -.code.tex -\c@pgfplotsarray@tmp=\count121 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatri -x.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshare -d.code.tex -\c@pgfplotstable@counta=\count122 -\t@pgfplotstable@a=\toks35 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.te -x -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.co -de.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.sur -fshading.code.tex -\c@pgfplotslibrarysurf@no=\count123 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surf -shading.pgfsys-pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code. -tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.t -ex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.cod -e.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code. -tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.cod -e.tex -\pgfdecoratedcompleteddistance=\dimen161 -\pgfdecoratedremainingdistance=\dimen162 -\pgfdecoratedinputsegmentcompleteddistance=\dimen163 -\pgfdecoratedinputsegmentremainingdistance=\dimen164 -\pgf@decorate@distancetomove=\dimen165 -\pgf@decorate@repeatstate=\count124 -\pgfdecorationsegmentamplitude=\dimen166 -\pgfdecorationsegmentlength=\dimen167 -) -\tikz@lib@dec@box=\box39 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathmorphing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathmorphing.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathreplacing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathreplacing.code.tex)) -\pgfplots@numplots=\count125 -\pgfplots@xmin@reg=\dimen168 -\pgfplots@xmax@reg=\dimen169 -\pgfplots@ymin@reg=\dimen170 -\pgfplots@ymax@reg=\dimen171 -\pgfplots@zmin@reg=\dimen172 -\pgfplots@zmax@reg=\dimen173 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryplotmarks.code.tex -File: tikzlibraryplotmarks.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.co -de.tex -File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14) -))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count126 -\Gm@cntv=\count127 -\c@Gm@tempcnt=\count128 -\Gm@bindingoffset=\dimen174 -\Gm@wd@mp=\dimen175 -\Gm@odd@mp=\dimen176 -\Gm@even@mp=\dimen177 -\Gm@layoutwidth=\dimen178 -\Gm@layoutheight=\dimen179 -\Gm@layouthoffset=\dimen180 -\Gm@layoutvoffset=\dimen181 -\Gm@dimlist=\toks36 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty -Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi) -\symboldoperators=\mathgroup6 -\symboldletters=\mathgroup7 -\symboldsymbols=\mathgroup8 -LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141. -LaTeX Info: Redefining \bm on input line 207. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2013/09/23 v3.0.1a (rcs-revision 1.16) -\arrowsize=\dimen182 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshadings.code.tex -File: tikzlibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryshadings.cod -e.tex -File: pgflibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.2) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.arrows.code.tex -File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.arrows.code.tex -File: pgflibraryshapes.arrows.code.tex 2008/06/26 v3.0.1a (rcs-revision 1.1) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarycalc.code.tex -File: tikzlibrarycalc.code.tex 2013/07/15 v3.0.1a (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarypositioning.code.tex -File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.1a (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fi -llbetween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillb -etween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryintersections.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersection -s.code.tex -\pgf@intersect@solutions=\count129 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecor -ations.softclip.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbe -tween.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.de -corations.softclip.code.tex)) -\dx=\skip46 -\dy=\skip47 -\circleRadius=\skip48 - -No file Pseudonormal.aux. -\openout1 = `Pseudonormal.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Try loading font information for OT1+ptm on input line 32. -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen183 -\scratchbox=\box40 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen184 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -))) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -ABD: EveryShipout initializing macros -Package pgfplots notification 'compat/show suggested version=true': document ha -s been generated with the most recent feature set (\pgfplotsset{compat=1.15}). - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: custom -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: -* h-part:(L,W,R)=(0.0pt, 136.5733pt, 0.0pt) -* v-part:(T,H,B)=(0.0pt, 130.88284pt, 0.0pt) -* \paperwidth=136.5733pt -* \paperheight=130.88284pt -* \textwidth=136.5733pt -* \textheight=130.88284pt -* \oddsidemargin=-72.26999pt -* \evensidemargin=-72.26999pt -* \topmargin=-109.26999pt -* \headheight=12.0pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=65.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -LaTeX Font Info: Try loading font information for U+msa on input line 45. -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Try loading font information for U+msb on input line 45. - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./Pseudonormal.aux) ) -Here is how much of TeX's memory you used: - 23790 strings out of 494847 - 619749 string characters out of 6179080 - 752871 words of memory out of 5000000 - 26677 multiletter control sequences out of 15000+600000 - 9681 words of font info for 33 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 74i,6n,128p,815b,614s stack positions out of 5000i,500n,10000p,200000b,80000s -{/us -r/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on Pseudonormal.pdf (1 page, 21147 bytes). -PDF statistics: - 36 PDF objects out of 1000 (max. 8388607) - 20 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 53 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/docs/_static/Pseudonormal/Pseudonormal.pdf b/docs/_static/Pseudonormal/Pseudonormal.pdf deleted file mode 100644 index ac08627a..00000000 Binary files a/docs/_static/Pseudonormal/Pseudonormal.pdf and /dev/null differ diff --git a/docs/_static/Pseudonormal/Pseudonormal.png b/docs/_static/Pseudonormal/Pseudonormal.png deleted file mode 100644 index 85950a11..00000000 Binary files a/docs/_static/Pseudonormal/Pseudonormal.png and /dev/null differ diff --git a/docs/_static/Pseudonormal/Pseudonormal.tex b/docs/_static/Pseudonormal/Pseudonormal.tex deleted file mode 100644 index 603ea0f3..00000000 --- a/docs/_static/Pseudonormal/Pseudonormal.tex +++ /dev/null @@ -1,53 +0,0 @@ -\documentclass[10pt]{article} -\usepackage{amsmath,amsfonts,times} -\usepackage{graphicx,color,tikz,pgfplots} -\usepackage[paperwidth=4.8cm,paperheight=4.6cm,lmargin=0in,rmargin=0in,tmargin=0.in,bmargin=0.in]{geometry} -\usepackage{bm} -\usetikzlibrary{arrows,shadings,shapes.arrows,decorations.pathreplacing,calc, positioning} -\usepgfplotslibrary{fillbetween} - -\pgfplotsset{ - compat=newest -} - -\newlength{\dx} -\setlength{\dx}{1.5cm} - -\newlength{\dy} -\setlength{\dy}{1.cm} - -\newlength{\circleRadius} -\setlength{\circleRadius}{0.95\dx} - -\definecolor{outside}{rgb}{0, 1, 0} -\definecolor{cutcell}{rgb}{0, 0.5, 1} -\definecolor{inside}{rgb}{1, 0, 0} - -\tikzset{ - edge/.style={thick, draw=black}, - normal/.style={very thick, draw=black, ->}, - vertex/.style={circle, inner sep=0pt, minimum width=4pt, draw=black, fill=black, node contents={}}, -} - -\begin{document} -\centering -\begin{tikzpicture} - - - \node (v0) at (0,0) [vertex]; - \node (v1) at (-\dx, -2\dx) [vertex]; - \node (v2) at (\dx,-2\dx) [vertex]; - \node (v3) at (0,-2.5\dx) [vertex]; - - \draw[edge] (v0) -- (v1) -- (v3) -- (v2) -- (v0); - \draw[edge] (v0) -- (v3); - - \draw[normal] (-0.4\dx, -1.6\dx) --++(-0.5\dx, 0.25\dx) node[above, left] {$\bm{n}$}; - \draw[normal] (0.4\dx, -1.6\dx) --++(0.5\dx, 0.25\dx) node[above, right] {$\bm{n}$}; - \node[anchor=south] at (v0.north) {$\mathbb{V}$}; - - \draw[thick] (0, -\dx) arc (220:350:0.25\dx) node [midway, above] {$\alpha$}; - -\end{tikzpicture} - -\end{document} diff --git a/docs/_static/TreePruning.png b/docs/_static/TreePruning.png deleted file mode 100644 index 2cc562fe..00000000 Binary files a/docs/_static/TreePruning.png and /dev/null differ diff --git a/docs/_static/TreePruning/TreePruning.aux b/docs/_static/TreePruning/TreePruning.aux deleted file mode 100644 index f23e5468..00000000 --- a/docs/_static/TreePruning/TreePruning.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/docs/_static/TreePruning/TreePruning.log b/docs/_static/TreePruning/TreePruning.log deleted file mode 100644 index 098bbe96..00000000 --- a/docs/_static/TreePruning/TreePruning.log +++ /dev/null @@ -1,757 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.5.11) 16 AUG 2021 12:36 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**TreePruning -(./TreePruning.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 7 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks14 -\ex@=\dimen103 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count87 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count88 -\leftroot@=\count89 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count90 -\DOTSCASE@=\count91 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count92 -\c@MaxMatrixCols=\count93 -\dotsspace@=\muskip10 -\c@parentequation=\count94 -\dspbrk@lvl=\count95 -\tag@help=\toks15 -\row@=\count96 -\column@=\count97 -\maxfields@=\count98 -\andhelp@=\toks16 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks17 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks18 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks19 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 99. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen112 -\Gin@req@width=\dimen113 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty -Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package color Info: Driver file: pdftex.def on input line 147. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks20 -\pgfutil@tempdima=\dimen114 -\pgfutil@tempdimb=\dimen115 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box28 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks21 -\pgfkeys@temptoks=\toks22 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks23 -)) -\pgf@x=\dimen116 -\pgf@y=\dimen117 -\pgf@xa=\dimen118 -\pgf@ya=\dimen119 -\pgf@xb=\dimen120 -\pgf@yb=\dimen121 -\pgf@xc=\dimen122 -\pgf@yc=\dimen123 -\w@pgf@writea=\write3 -\r@pgf@reada=\read1 -\c@pgf@counta=\count99 -\c@pgf@countb=\count100 -\c@pgf@countc=\count101 -\c@pgf@countd=\count102 -\t@pgf@toka=\toks24 -\t@pgf@tokb=\toks25 -\t@pgf@tokc=\toks26 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count103 -\pgfsyssoftpath@bigbuffer@items=\count104 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -LaTeX Info: Redefining \color on input line 709. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen124 -\pgfmath@count=\count105 -\pgfmath@box=\box29 -\pgfmath@toks=\toks27 -\pgfmath@stack@operand=\toks28 -\pgfmath@stack@operation=\toks29 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count106 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen125 -\pgf@picmaxx=\dimen126 -\pgf@picminy=\dimen127 -\pgf@picmaxy=\dimen128 -\pgf@pathminx=\dimen129 -\pgf@pathmaxx=\dimen130 -\pgf@pathminy=\dimen131 -\pgf@pathmaxy=\dimen132 -\pgf@xx=\dimen133 -\pgf@xy=\dimen134 -\pgf@yx=\dimen135 -\pgf@yy=\dimen136 -\pgf@zx=\dimen137 -\pgf@zy=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen139 -\pgf@path@lasty=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen141 -\pgf@shorten@start@additional=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box30 -\pgf@hbox=\box31 -\pgf@layerbox@main=\box32 -\pgf@picture@serial@count=\count107 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen143 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen144 -\pgf@pt@y=\dimen145 -\pgf@pt@temp=\dimen146 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen147 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen148 -\pgf@sys@shading@range@num=\count108 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box33 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box34 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen149 -\pgf@nodesepend=\dimen150 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen151 -\pgffor@skip=\dimen152 -\pgffor@stack=\toks30 -\pgffor@toks=\toks31 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count109 -\pgfplotmarksize=\dimen153 -) -\tikz@lastx=\dimen154 -\tikz@lasty=\dimen155 -\tikz@lastxsaved=\dimen156 -\tikz@lastysaved=\dimen157 -\tikzleveldistance=\dimen158 -\tikzsiblingdistance=\dimen159 -\tikz@figbox=\box35 -\tikz@figbox@bg=\box36 -\tikz@tempbox=\box37 -\tikz@tempbox@bg=\box38 -\tikztreelevel=\count110 -\tikznumberofchildren=\count111 -\tikznumberofcurrentchild=\count112 -\tikz@fig@count=\count113 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count114 -\pgfmatrixcurrentcolumn=\count115 -\pgf@matrix@numberofcolumns=\count116 -) -\tikz@expandcount=\count117 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) -(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/pgfplots.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) -Package: pgfplots 2017/06/05 v1.15 Data Visualization (1.15) - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex -\t@pgfplots@toka=\toks32 -\t@pgfplots@tokb=\toks33 -\t@pgfplots@tokc=\toks34 -\pgfplots@tmpa=\dimen160 -\c@pgfplots@coordindex=\count118 -\c@pgfplots@scanlineindex=\count119 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code -.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_loader.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex -) -Package pgfplots: loading complementary arithmetics for your pgf version... - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgflibraryfpu.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count120 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructure.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructureext.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray -.code.tex -\c@pgfplotsarray@tmp=\count121 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatri -x.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshare -d.code.tex -\c@pgfplotstable@counta=\count122 -\t@pgfplotstable@a=\toks35 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.te -x -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.co -de.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.sur -fshading.code.tex -\c@pgfplotslibrarysurf@no=\count123 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surf -shading.pgfsys-pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code. -tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.t -ex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.cod -e.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code. -tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.cod -e.tex -\pgfdecoratedcompleteddistance=\dimen161 -\pgfdecoratedremainingdistance=\dimen162 -\pgfdecoratedinputsegmentcompleteddistance=\dimen163 -\pgfdecoratedinputsegmentremainingdistance=\dimen164 -\pgf@decorate@distancetomove=\dimen165 -\pgf@decorate@repeatstate=\count124 -\pgfdecorationsegmentamplitude=\dimen166 -\pgfdecorationsegmentlength=\dimen167 -) -\tikz@lib@dec@box=\box39 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathmorphing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathmorphing.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathreplacing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathreplacing.code.tex)) -\pgfplots@numplots=\count125 -\pgfplots@xmin@reg=\dimen168 -\pgfplots@xmax@reg=\dimen169 -\pgfplots@ymin@reg=\dimen170 -\pgfplots@ymax@reg=\dimen171 -\pgfplots@zmin@reg=\dimen172 -\pgfplots@zmax@reg=\dimen173 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryplotmarks.code.tex -File: tikzlibraryplotmarks.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.co -de.tex -File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14) -))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count126 -\Gm@cntv=\count127 -\c@Gm@tempcnt=\count128 -\Gm@bindingoffset=\dimen174 -\Gm@wd@mp=\dimen175 -\Gm@odd@mp=\dimen176 -\Gm@even@mp=\dimen177 -\Gm@layoutwidth=\dimen178 -\Gm@layoutheight=\dimen179 -\Gm@layouthoffset=\dimen180 -\Gm@layoutvoffset=\dimen181 -\Gm@dimlist=\toks36 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty -Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi) -\symboldoperators=\mathgroup6 -\symboldletters=\mathgroup7 -\symboldsymbols=\mathgroup8 -LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141. -LaTeX Info: Redefining \bm on input line 207. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2013/09/23 v3.0.1a (rcs-revision 1.16) -\arrowsize=\dimen182 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshadings.code.tex -File: tikzlibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryshadings.cod -e.tex -File: pgflibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.2) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.arrows.code.tex -File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.arrows.code.tex -File: pgflibraryshapes.arrows.code.tex 2008/06/26 v3.0.1a (rcs-revision 1.1) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarycalc.code.tex -File: tikzlibrarycalc.code.tex 2013/07/15 v3.0.1a (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarypositioning.code.tex -File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.1a (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fi -llbetween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillb -etween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryintersections.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersection -s.code.tex -\pgf@intersect@solutions=\count129 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecor -ations.softclip.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbe -tween.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.de -corations.softclip.code.tex)) -\dx=\skip46 -\circleRadius=\skip47 - (./TreePruning.aux) -\openout1 = `TreePruning.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 36. -LaTeX Font Info: ... okay on input line 36. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 36. -LaTeX Font Info: ... okay on input line 36. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 36. -LaTeX Font Info: ... okay on input line 36. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 36. -LaTeX Font Info: ... okay on input line 36. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 36. -LaTeX Font Info: ... okay on input line 36. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 36. -LaTeX Font Info: ... okay on input line 36. -LaTeX Font Info: Try loading font information for OT1+ptm on input line 36. - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen183 -\scratchbox=\box40 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen184 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -))) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -ABD: EveryShipout initializing macros -Package pgfplots notification 'compat/show suggested version=true': document ha -s been generated with the most recent feature set (\pgfplotsset{compat=1.15}). - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: custom -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: -* h-part:(L,W,R)=(0.0pt, 412.56496pt, 0.0pt) -* v-part:(T,H,B)=(0.0pt, 187.78836pt, 0.0pt) -* \paperwidth=412.56496pt -* \paperheight=187.78836pt -* \textwidth=412.56496pt -* \textheight=187.78836pt -* \oddsidemargin=-72.26999pt -* \evensidemargin=-72.26999pt -* \topmargin=-109.26999pt -* \headheight=12.0pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=65.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -LaTeX Font Info: Try loading font information for U+msa on input line 94. -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Try loading font information for U+msb on input line 94. - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./TreePruning.aux) ) -Here is how much of TeX's memory you used: - 23884 strings out of 494847 - 620776 string characters out of 6179080 - 756904 words of memory out of 5000000 - 26769 multiletter control sequences out of 15000+600000 - 9681 words of font info for 33 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 74i,6n,128p,811b,609s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr -/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on TreePruning.pdf (1 page, 17820 bytes). -PDF statistics: - 28 PDF objects out of 1000 (max. 8388607) - 14 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 53 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/docs/_static/TreePruning/TreePruning.pdf b/docs/_static/TreePruning/TreePruning.pdf deleted file mode 100644 index aa1b0b1f..00000000 Binary files a/docs/_static/TreePruning/TreePruning.pdf and /dev/null differ diff --git a/docs/_static/TreePruning/TreePruning.png b/docs/_static/TreePruning/TreePruning.png deleted file mode 100644 index 2cc562fe..00000000 Binary files a/docs/_static/TreePruning/TreePruning.png and /dev/null differ diff --git a/docs/_static/TreePruning/TreePruning.tex b/docs/_static/TreePruning/TreePruning.tex deleted file mode 100644 index aceae822..00000000 --- a/docs/_static/TreePruning/TreePruning.tex +++ /dev/null @@ -1,98 +0,0 @@ -\documentclass[10pt]{article} -\usepackage{amsmath,amsfonts,times} -\usepackage{graphicx,color,tikz,pgfplots} -\usepackage[paperwidth=14.5cm,paperheight=6.6cm,lmargin=0in,rmargin=0in,tmargin=0.in,bmargin=0.in]{geometry} -\usepackage{bm} -\usetikzlibrary{arrows,shadings,shapes.arrows,decorations.pathreplacing,calc, positioning} -\usepgfplotslibrary{fillbetween} - -\pgfplotsset{ - compat=newest -} - -\newlength{\dx} -\setlength{\dx}{1.5cm} - -\newlength{\circleRadius} -\setlength{\circleRadius}{0.95\dx} - -\definecolor{outside}{rgb}{0, 1, 0} -\definecolor{cutcell}{rgb}{0, 0.5, 1} -\definecolor{inside}{rgb}{1, 0, 0} - -\tikzset{ - edge/.style={draw=black}, - tree/.style={thick, draw=black, solid}, - bvh/.style={draw=black, minimum width=5mm, minimum height=5mm, rectangle, very thick}, - vertex/.style={circle, inner sep=0pt, minimum width=4pt, draw=black, fill=white, node contents={}}, - point/.style={circle, inner sep=0pt, minimum width=6pt, thick, draw=black, fill=white}, - root/.style={ultra thick, densely dashed, draw=black}, - left/.style={very thick, draw=black, solid, fill=red!50!white, fill opacity=0.4}, - right/.style={very thick, draw=black, solid, fill=red, fill opacity=0.0}, - R1/.style={very thick, draw=black, fill=green!50!white, solid, fill opacity=0.4}, - R2/.style={very thick, draw=black, fill=blue!50!white, solid, fill opacity=0.4}, -} - -\begin{document} -\centering -\begin{tikzpicture} - - \draw[root] (-2.55\dx,-1.166\dx) rectangle (1.3\dx, 1.8\dx); - \draw[left] (-2.25\dx,-0.766\dx) rectangle (-0.5\dx, 1.5\dx); - \draw[right] (-0.7\dx,-0.866\dx) rectangle (1\dx, 1.1\dx); - \draw[R1] (-0.7\dx,0\dx) rectangle (1\dx, 1.1\dx); - \draw[R2] (-0.7\dx,-0.866\dx) rectangle (1\dx, 0.134\dx); - - \node (v0) at (0.1\dx,0.2\dx) [vertex]; - \node (v1) at (\dx, 0) [vertex]; - \node (v2) at (0.5\dx, 0.866\dx) [vertex]; - \node (v3) at (-0.5\dx, 1.1\dx) [vertex]; - \node (v4) at (-0.7\dx, 0) [vertex]; - \node (v5) at (-0.5\dx, -0.766\dx) [vertex]; - \node (v6) at (0.5\dx, -0.866\dx) [vertex]; - - \node (v7) at (-1.5\dx, 0.866\dx) [vertex]; - \node (v8) at (-1.25\dx, 1.5\dx) [vertex]; - \node (v9) at (-2.25\dx, -0.5\dx) [vertex]; - - \draw[edge] (v0)--(v1); - \draw[edge] (v0)--(v2); - \draw[edge] (v0)--(v3); - \draw[edge] (v0)--(v4); - \draw[edge] (v0)--(v5); - \draw[edge] (v0)--(v6); - - \draw[edge] (v1)--(v2)--(v3)--(v4)--(v5)--(v6)--(v1); - - \draw[edge] (v3)--(v8)--(v7)--(v3); - \draw[edge] (v4)--(v7)--(v3)--(v4); - \draw[edge] (v9)--(v4); - \draw[edge] (v9)--(v5); - \draw[edge] (v9)--(v7); - - \node[bvh, alias=ROOT] at (3.5\dx, 1.4\dx) {}; - \node[bvh, alias=subtree, below right=0.6\dx and 0.3\dx of ROOT] {}; - \node[bvh, alias=P, below left=0.6\dx and 0.3\dx of ROOT] {P}; - \node[bvh, alias=L, below left=0.6\dx and 0.3\dx of P] {A}; - \node[bvh, alias=R, below right=0.6\dx and 0.3\dx of P] {}; - \node[bvh, alias=B, below left=0.6\dx and 0.3\dx of R] {B}; - \node[bvh, alias=C, below right=0.6\dx and 0.3\dx of R] {C}; - - \node[anchor=north east] at (1.3\dx, 1.8\dx) {P}; - \node[anchor=north west] at (-2.25\dx,1.5\dx) {A}; - \node[anchor=north east] at (\dx, 1.1\dx) {B}; - \node[anchor=south east] at (\dx, -0.866\dx) {C}; - - \draw[tree] (P) -- (L); - \draw[tree] (P) -- (R); - \draw[tree] (ROOT) -- (P); - \draw[tree] (ROOT) -- (subtree); - \draw[tree] (R) -- (B); - \draw[tree] (R) -- (C); - - \node[point, alias=x] at (-4\dx, 0.1\dx) {}; - \node[anchor=south west] at (x.north east) {$\bm{x}$}; - \draw[very thick, <->] (x) -- (v9); -\end{tikzpicture} - -\end{document} diff --git a/docs/_static/TrianglesBVH.png b/docs/_static/TrianglesBVH.png deleted file mode 100644 index f8dfbfc2..00000000 Binary files a/docs/_static/TrianglesBVH.png and /dev/null differ diff --git a/docs/_static/TrianglesBVH/TrianglesBVH.aux b/docs/_static/TrianglesBVH/TrianglesBVH.aux deleted file mode 100644 index f23e5468..00000000 --- a/docs/_static/TrianglesBVH/TrianglesBVH.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/docs/_static/TrianglesBVH/TrianglesBVH.log b/docs/_static/TrianglesBVH/TrianglesBVH.log deleted file mode 100644 index f6df753d..00000000 --- a/docs/_static/TrianglesBVH/TrianglesBVH.log +++ /dev/null @@ -1,757 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.5.11) 16 AUG 2021 11:17 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**TrianglesBVH.tex -(./TrianglesBVH.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 7 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks14 -\ex@=\dimen103 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count87 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count88 -\leftroot@=\count89 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count90 -\DOTSCASE@=\count91 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count92 -\c@MaxMatrixCols=\count93 -\dotsspace@=\muskip10 -\c@parentequation=\count94 -\dspbrk@lvl=\count95 -\tag@help=\toks15 -\row@=\count96 -\column@=\count97 -\maxfields@=\count98 -\andhelp@=\toks16 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks17 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks18 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks19 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 99. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen112 -\Gin@req@width=\dimen113 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty -Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package color Info: Driver file: pdftex.def on input line 147. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks20 -\pgfutil@tempdima=\dimen114 -\pgfutil@tempdimb=\dimen115 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box28 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks21 -\pgfkeys@temptoks=\toks22 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks23 -)) -\pgf@x=\dimen116 -\pgf@y=\dimen117 -\pgf@xa=\dimen118 -\pgf@ya=\dimen119 -\pgf@xb=\dimen120 -\pgf@yb=\dimen121 -\pgf@xc=\dimen122 -\pgf@yc=\dimen123 -\w@pgf@writea=\write3 -\r@pgf@reada=\read1 -\c@pgf@counta=\count99 -\c@pgf@countb=\count100 -\c@pgf@countc=\count101 -\c@pgf@countd=\count102 -\t@pgf@toka=\toks24 -\t@pgf@tokb=\toks25 -\t@pgf@tokc=\toks26 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count103 -\pgfsyssoftpath@bigbuffer@items=\count104 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -LaTeX Info: Redefining \color on input line 709. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen124 -\pgfmath@count=\count105 -\pgfmath@box=\box29 -\pgfmath@toks=\toks27 -\pgfmath@stack@operand=\toks28 -\pgfmath@stack@operation=\toks29 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count106 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen125 -\pgf@picmaxx=\dimen126 -\pgf@picminy=\dimen127 -\pgf@picmaxy=\dimen128 -\pgf@pathminx=\dimen129 -\pgf@pathmaxx=\dimen130 -\pgf@pathminy=\dimen131 -\pgf@pathmaxy=\dimen132 -\pgf@xx=\dimen133 -\pgf@xy=\dimen134 -\pgf@yx=\dimen135 -\pgf@yy=\dimen136 -\pgf@zx=\dimen137 -\pgf@zy=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen139 -\pgf@path@lasty=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen141 -\pgf@shorten@start@additional=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box30 -\pgf@hbox=\box31 -\pgf@layerbox@main=\box32 -\pgf@picture@serial@count=\count107 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen143 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen144 -\pgf@pt@y=\dimen145 -\pgf@pt@temp=\dimen146 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen147 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen148 -\pgf@sys@shading@range@num=\count108 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box33 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box34 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen149 -\pgf@nodesepend=\dimen150 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen151 -\pgffor@skip=\dimen152 -\pgffor@stack=\toks30 -\pgffor@toks=\toks31 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count109 -\pgfplotmarksize=\dimen153 -) -\tikz@lastx=\dimen154 -\tikz@lasty=\dimen155 -\tikz@lastxsaved=\dimen156 -\tikz@lastysaved=\dimen157 -\tikzleveldistance=\dimen158 -\tikzsiblingdistance=\dimen159 -\tikz@figbox=\box35 -\tikz@figbox@bg=\box36 -\tikz@tempbox=\box37 -\tikz@tempbox@bg=\box38 -\tikztreelevel=\count110 -\tikznumberofchildren=\count111 -\tikznumberofcurrentchild=\count112 -\tikz@fig@count=\count113 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count114 -\pgfmatrixcurrentcolumn=\count115 -\pgf@matrix@numberofcolumns=\count116 -) -\tikz@expandcount=\count117 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) -(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/pgfplots.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) -Package: pgfplots 2017/06/05 v1.15 Data Visualization (1.15) - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex -\t@pgfplots@toka=\toks32 -\t@pgfplots@tokb=\toks33 -\t@pgfplots@tokc=\toks34 -\pgfplots@tmpa=\dimen160 -\c@pgfplots@coordindex=\count118 -\c@pgfplots@scanlineindex=\count119 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code -.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_loader.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex -) -Package pgfplots: loading complementary arithmetics for your pgf version... - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgflibraryfpu.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldp -gfsupp_pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count120 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructure.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotslists -tructureext.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray -.code.tex -\c@pgfplotsarray@tmp=\count121 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatri -x.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshare -d.code.tex -\c@pgfplotstable@counta=\count122 -\t@pgfplotstable@a=\toks35 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.te -x -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.co -de.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.sur -fshading.code.tex -\c@pgfplotslibrarysurf@no=\count123 - -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surf -shading.pgfsys-pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code. -tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.t -ex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.t -ex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.cod -e.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code. -tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex -) (/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.cod -e.tex -\pgfdecoratedcompleteddistance=\dimen161 -\pgfdecoratedremainingdistance=\dimen162 -\pgfdecoratedinputsegmentcompleteddistance=\dimen163 -\pgfdecoratedinputsegmentremainingdistance=\dimen164 -\pgf@decorate@distancetomove=\dimen165 -\pgf@decorate@repeatstate=\count124 -\pgfdecorationsegmentamplitude=\dimen166 -\pgfdecorationsegmentlength=\dimen167 -) -\tikz@lib@dec@box=\box39 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathmorphing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathmorphing.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarydecorations.pathreplacing.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrary -decorations.pathreplacing.code.tex)) -\pgfplots@numplots=\count125 -\pgfplots@xmin@reg=\dimen168 -\pgfplots@xmax@reg=\dimen169 -\pgfplots@ymin@reg=\dimen170 -\pgfplots@ymax@reg=\dimen171 -\pgfplots@zmin@reg=\dimen172 -\pgfplots@zmax@reg=\dimen173 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryplotmarks.code.tex -File: tikzlibraryplotmarks.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.co -de.tex -File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14) -))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count126 -\Gm@cntv=\count127 -\c@Gm@tempcnt=\count128 -\Gm@bindingoffset=\dimen174 -\Gm@wd@mp=\dimen175 -\Gm@odd@mp=\dimen176 -\Gm@even@mp=\dimen177 -\Gm@layoutwidth=\dimen178 -\Gm@layoutheight=\dimen179 -\Gm@layouthoffset=\dimen180 -\Gm@layoutvoffset=\dimen181 -\Gm@dimlist=\toks36 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty -Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi) -\symboldoperators=\mathgroup6 -\symboldletters=\mathgroup7 -\symboldsymbols=\mathgroup8 -LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141. -LaTeX Info: Redefining \bm on input line 207. -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2013/09/23 v3.0.1a (rcs-revision 1.16) -\arrowsize=\dimen182 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshadings.code.tex -File: tikzlibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryshadings.cod -e.tex -File: pgflibraryshadings.code.tex 2008/10/29 v3.0.1a (rcs-revision 1.2) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.arrows.code.tex -File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v3.0.1a (rcs-revision 1.1) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.arrows.code.tex -File: pgflibraryshapes.arrows.code.tex 2008/06/26 v3.0.1a (rcs-revision 1.1) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarycalc.code.tex -File: tikzlibrarycalc.code.tex 2013/07/15 v3.0.1a (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarypositioning.code.tex -File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.1a (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fi -llbetween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillb -etween.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryintersections.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersection -s.code.tex -\pgf@intersect@solutions=\count129 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecor -ations.softclip.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbe -tween.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.de -corations.softclip.code.tex)) -\dx=\skip46 -\circleRadius=\skip47 - -No file TrianglesBVH.aux. -\openout1 = `TrianglesBVH.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Try loading font information for OT1+ptm on input line 34. -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen183 -\scratchbox=\box40 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen184 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -))) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -ABD: EveryShipout initializing macros -Package pgfplots notification 'compat/show suggested version=true': document ha -s been generated with the most recent feature set (\pgfplotsset{compat=1.15}). - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: custom -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: -* h-part:(L,W,R)=(0.0pt, 412.56496pt, 0.0pt) -* v-part:(T,H,B)=(0.0pt, 130.88284pt, 0.0pt) -* \paperwidth=412.56496pt -* \paperheight=130.88284pt -* \textwidth=412.56496pt -* \textheight=130.88284pt -* \oddsidemargin=-72.26999pt -* \evensidemargin=-72.26999pt -* \topmargin=-109.26999pt -* \headheight=12.0pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=65.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -LaTeX Font Info: Try loading font information for U+msa on input line 85. -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Try loading font information for U+msb on input line 85. - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./TrianglesBVH.aux) ) -Here is how much of TeX's memory you used: - 23857 strings out of 494847 - 620405 string characters out of 6179080 - 756871 words of memory out of 5000000 - 26744 multiletter control sequences out of 15000+600000 - 9681 words of font info for 33 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 74i,6n,128p,816b,609s stack positions out of 5000i,500n,10000p,200000b,80000s -{/us -r/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on TrianglesBVH.pdf (1 page, 17432 bytes). -PDF statistics: - 28 PDF objects out of 1000 (max. 8388607) - 14 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 53 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/docs/_static/TrianglesBVH/TrianglesBVH.pdf b/docs/_static/TrianglesBVH/TrianglesBVH.pdf deleted file mode 100644 index 1725adfa..00000000 Binary files a/docs/_static/TrianglesBVH/TrianglesBVH.pdf and /dev/null differ diff --git a/docs/_static/TrianglesBVH/TrianglesBVH.png b/docs/_static/TrianglesBVH/TrianglesBVH.png deleted file mode 100644 index f8dfbfc2..00000000 Binary files a/docs/_static/TrianglesBVH/TrianglesBVH.png and /dev/null differ diff --git a/docs/_static/TrianglesBVH/TrianglesBVH.tex b/docs/_static/TrianglesBVH/TrianglesBVH.tex deleted file mode 100644 index 06ce5f4c..00000000 --- a/docs/_static/TrianglesBVH/TrianglesBVH.tex +++ /dev/null @@ -1,91 +0,0 @@ -\documentclass[10pt]{article} -\usepackage{amsmath,amsfonts,times} -\usepackage{graphicx,color,tikz,pgfplots} -\usepackage[paperwidth=14.5cm,paperheight=4.6cm,lmargin=0in,rmargin=0in,tmargin=0.in,bmargin=0.in]{geometry} -\usepackage{bm} -\usetikzlibrary{arrows,shadings,shapes.arrows,decorations.pathreplacing,calc, positioning} -\usepgfplotslibrary{fillbetween} - -\pgfplotsset{ - compat=newest -} - -\newlength{\dx} -\setlength{\dx}{1.5cm} - -\newlength{\circleRadius} -\setlength{\circleRadius}{0.95\dx} - -\definecolor{outside}{rgb}{0, 1, 0} -\definecolor{cutcell}{rgb}{0, 0.5, 1} -\definecolor{inside}{rgb}{1, 0, 0} - -\tikzset{ - edge/.style={thick, draw=black}, - tree/.style={thick, draw=black, densely dotted}, - bvh/.style={draw=black, minimum width=5mm, minimum height=5mm, rectangle, very thick}, - vertex/.style={circle, inner sep=0pt, minimum width=4pt, draw=black, fill=black, node contents={}}, - point/.style={circle, inner sep=0pt, minimum width=6pt, thick, draw=black, fill=white}, - root/.style={ultra thick, densely dashed, draw=black}, - left/.style={very thick, draw=black, solid, fill=blue, fill opacity=0.2}, - right/.style={very thick, draw=black, solid, fill=red, fill opacity=0.2}, -} - -\begin{document} -\centering -\begin{tikzpicture} - - \draw[root] (-2.55\dx,-1.166\dx) rectangle (1.3\dx, 1.8\dx); - \draw[left] (-2.25\dx,-0.766\dx) rectangle (-0.5\dx, 1.5\dx); - \draw[right] (-0.7\dx,-0.866\dx) rectangle (1\dx, 1.1\dx); - - \node (v0) at (0.1\dx,0.2\dx) [vertex]; - \node (v1) at (\dx, 0) [vertex]; - \node (v2) at (0.5\dx, 0.866\dx) [vertex]; - \node (v3) at (-0.5\dx, 1.1\dx) [vertex]; - \node (v4) at (-0.7\dx, 0) [vertex]; - \node (v5) at (-0.5\dx, -0.766\dx) [vertex]; - \node (v6) at (0.5\dx, -0.866\dx) [vertex]; - - \node (v7) at (-1.5\dx, 0.866\dx) [vertex]; - \node (v8) at (-1.25\dx, 1.5\dx) [vertex]; - \node (v9) at (-2.25\dx, -0.5\dx) [vertex]; - - \draw[edge] (v0)--(v1); - \draw[edge] (v0)--(v2); - \draw[edge] (v0)--(v3); - \draw[edge] (v0)--(v4); - \draw[edge] (v0)--(v5); - \draw[edge] (v0)--(v6); - - \draw[edge] (v1)--(v2)--(v3)--(v4)--(v5)--(v6)--(v1); - - \draw[edge] (v3)--(v8)--(v7)--(v3); - \draw[edge] (v4)--(v7)--(v3)--(v4); - \draw[edge] (v9)--(v4); - \draw[edge] (v9)--(v5); - \draw[edge] (v9)--(v7); - - \node[bvh, alias=ROOT] at (3.5\dx, 1.4\dx) {}; - \node[bvh, alias=subtree, below right=0.6\dx and 0.3\dx of ROOT] {}; - \node[bvh, alias=P, below left=0.6\dx and 0.3\dx of ROOT] {P}; - \node[bvh, alias=L, below left=0.6\dx and 0.3\dx of P] {L}; - \node[bvh, alias=R, below right=0.6\dx and 0.3\dx of P] {R}; - - \node[anchor=north east] at (1.3\dx, 1.8\dx) {P}; - \node[anchor=north west] at (-2.25\dx,1.5\dx) {L}; - \node[anchor=north east] at (\dx, 1.1\dx) {R}; - - \draw[edge] (P) -- (L); - \draw[edge] (P) -- (R); - \draw[tree] (ROOT) -- (P); - \draw[tree] (ROOT) -- (subtree); - - \node[point, alias=x] at (-4\dx, 0.1\dx) {}; - \node[anchor=south west] at (x.north east) {$\bm{x}$}; - \draw[very thick, <->] (x) -- (v9); - - -\end{tikzpicture} - -\end{document} diff --git a/docs/_static/alabaster.css b/docs/_static/alabaster.css deleted file mode 100644 index 0eddaeb0..00000000 --- a/docs/_static/alabaster.css +++ /dev/null @@ -1,701 +0,0 @@ -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: Georgia, serif; - font-size: 17px; - background-color: #fff; - color: #000; - margin: 0; - padding: 0; -} - - -div.document { - width: 940px; - margin: 30px auto 0 auto; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 220px; -} - -div.sphinxsidebar { - width: 220px; - font-size: 14px; - line-height: 1.5; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.body { - background-color: #fff; - color: #3E4349; - padding: 0 30px 0 30px; -} - -div.body > .section { - text-align: left; -} - -div.footer { - width: 940px; - margin: 20px auto 30px auto; - font-size: 14px; - color: #888; - text-align: right; -} - -div.footer a { - color: #888; -} - -p.caption { - font-family: inherit; - font-size: inherit; -} - - -div.relations { - display: none; -} - - -div.sphinxsidebar a { - color: #444; - text-decoration: none; - border-bottom: 1px dotted #999; -} - -div.sphinxsidebar a:hover { - border-bottom: 1px solid #999; -} - -div.sphinxsidebarwrapper { - padding: 18px 10px; -} - -div.sphinxsidebarwrapper p.logo { - padding: 0; - margin: -10px 0 0 0px; - text-align: center; -} - -div.sphinxsidebarwrapper h1.logo { - margin-top: -10px; - text-align: center; - margin-bottom: 5px; - text-align: left; -} - -div.sphinxsidebarwrapper h1.logo-name { - margin-top: 0px; -} - -div.sphinxsidebarwrapper p.blurb { - margin-top: 0; - font-style: normal; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: Georgia, serif; - color: #444; - font-size: 24px; - font-weight: normal; - margin: 0 0 5px 0; - padding: 0; -} - -div.sphinxsidebar h4 { - font-size: 20px; -} - -div.sphinxsidebar h3 a { - color: #444; -} - -div.sphinxsidebar p.logo a, -div.sphinxsidebar h3 a, -div.sphinxsidebar p.logo a:hover, -div.sphinxsidebar h3 a:hover { - border: none; -} - -div.sphinxsidebar p { - color: #555; - margin: 10px 0; -} - -div.sphinxsidebar ul { - margin: 10px 0; - padding: 0; - color: #000; -} - -div.sphinxsidebar ul li.toctree-l1 > a { - font-size: 120%; -} - -div.sphinxsidebar ul li.toctree-l2 > a { - font-size: 110%; -} - -div.sphinxsidebar input { - border: 1px solid #CCC; - font-family: Georgia, serif; - font-size: 1em; -} - -div.sphinxsidebar hr { - border: none; - height: 1px; - color: #AAA; - background: #AAA; - - text-align: left; - margin-left: 0; - width: 50%; -} - -div.sphinxsidebar .badge { - border-bottom: none; -} - -div.sphinxsidebar .badge:hover { - border-bottom: none; -} - -/* To address an issue with donation coming after search */ -div.sphinxsidebar h3.donation { - margin-top: 10px; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #004B6B; - text-decoration: underline; -} - -a:hover { - color: #6D4100; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: Georgia, serif; - font-weight: normal; - margin: 30px 0px 10px 0px; - padding: 0; -} - -div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } -div.body h2 { font-size: 180%; } -div.body h3 { font-size: 150%; } -div.body h4 { font-size: 130%; } -div.body h5 { font-size: 100%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #DDD; - padding: 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - color: #444; - background: #EAEAEA; -} - -div.body p, div.body dd, div.body li { - line-height: 1.4em; -} - -div.admonition { - margin: 20px 0px; - padding: 10px 30px; - background-color: #EEE; - border: 1px solid #CCC; -} - -div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fafafa; -} - -div.admonition p.admonition-title { - font-family: Georgia, serif; - font-weight: normal; - font-size: 24px; - margin: 0 0 10px 0; - padding: 0; - line-height: 1; -} - -div.admonition p.last { - margin-bottom: 0; -} - -div.highlight { - background-color: #fff; -} - -dt:target, .highlight { - background: #FAF3E8; -} - -div.warning { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.danger { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.error { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.caution { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.attention { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.important { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.note { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.tip { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.hint { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.seealso { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.topic { - background-color: #EEE; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre, tt, code { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; - font-size: 0.9em; -} - -.hll { - background-color: #FFC; - margin: 0 -12px; - padding: 0 12px; - display: block; -} - -img.screenshot { -} - -tt.descname, tt.descclassname, code.descname, code.descclassname { - font-size: 0.95em; -} - -tt.descname, code.descname { - padding-right: 0.08em; -} - -img.screenshot { - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils { - border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils td, table.docutils th { - border: 1px solid #888; - padding: 0.25em 0.7em; -} - -table.field-list, table.footnote { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -table.footnote { - margin: 15px 0; - width: 100%; - border: 1px solid #EEE; - background: #FDFDFD; - font-size: 0.9em; -} - -table.footnote + table.footnote { - margin-top: -15px; - border-top: none; -} - -table.field-list th { - padding: 0 0.8em 0 0; -} - -table.field-list td { - padding: 0; -} - -table.field-list p { - margin-bottom: 0.8em; -} - -/* Cloned from - * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 - */ -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -table.footnote td.label { - width: .1px; - padding: 0.3em 0 0.3em 0.5em; -} - -table.footnote td { - padding: 0.3em 0.5em; -} - -dl { - margin: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -blockquote { - margin: 0 0 0 30px; - padding: 0; -} - -ul, ol { - /* Matches the 30px from the narrow-screen "li > ul" selector below */ - margin: 10px 0 10px 30px; - padding: 0; -} - -pre { - background: #EEE; - padding: 7px 30px; - margin: 15px 0px; - line-height: 1.3em; -} - -div.viewcode-block:target { - background: #ffd; -} - -dl pre, blockquote pre, li pre { - margin-left: 0; - padding-left: 30px; -} - -tt, code { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ -} - -tt.xref, code.xref, a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fff; -} - -a.reference { - text-decoration: none; - border-bottom: 1px dotted #004B6B; -} - -/* Don't put an underline on images */ -a.image-reference, a.image-reference:hover { - border-bottom: none; -} - -a.reference:hover { - border-bottom: 1px solid #6D4100; -} - -a.footnote-reference { - text-decoration: none; - font-size: 0.7em; - vertical-align: top; - border-bottom: 1px dotted #004B6B; -} - -a.footnote-reference:hover { - border-bottom: 1px solid #6D4100; -} - -a:hover tt, a:hover code { - background: #EEE; -} - - -@media screen and (max-width: 870px) { - - div.sphinxsidebar { - display: none; - } - - div.document { - width: 100%; - - } - - div.documentwrapper { - margin-left: 0; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - } - - div.bodywrapper { - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - margin-left: 0; - } - - ul { - margin-left: 0; - } - - li > ul { - /* Matches the 30px from the "ul, ol" selector above */ - margin-left: 30px; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .bodywrapper { - margin: 0; - } - - .footer { - width: auto; - } - - .github { - display: none; - } - - - -} - - - -@media screen and (max-width: 875px) { - - body { - margin: 0; - padding: 20px 30px; - } - - div.documentwrapper { - float: none; - background: #fff; - } - - div.sphinxsidebar { - display: block; - float: none; - width: 102.5%; - margin: 50px -30px -20px -30px; - padding: 10px 20px; - background: #333; - color: #FFF; - } - - div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, - div.sphinxsidebar h3 a { - color: #fff; - } - - div.sphinxsidebar a { - color: #AAA; - } - - div.sphinxsidebar p.logo { - display: none; - } - - div.document { - width: 100%; - margin: 0; - } - - div.footer { - display: none; - } - - div.bodywrapper { - margin: 0; - } - - div.body { - min-height: 0; - padding: 0; - } - - .rtd_doc_footer { - display: none; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .footer { - width: auto; - } - - .github { - display: none; - } -} - - -/* misc. */ - -.revsys-inline { - display: none!important; -} - -/* Make nested-list/multi-paragraph items look better in Releases changelog - * pages. Without this, docutils' magical list fuckery causes inconsistent - * formatting between different release sub-lists. - */ -div#changelog > div.section > ul > li > p:only-child { - margin-bottom: 0; -} - -/* Hide fugly table cell borders in ..bibliography:: directive output */ -table.docutils.citation, table.docutils.citation td, table.docutils.citation th { - border: none; - /* Below needed in some edge cases; if not applied, bottom shadows appear */ - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - - -/* relbar */ - -.related { - line-height: 30px; - width: 100%; - font-size: 0.9rem; -} - -.related.top { - border-bottom: 1px solid #EEE; - margin-bottom: 20px; -} - -.related.bottom { - border-top: 1px solid #EEE; -} - -.related ul { - padding: 0; - margin: 0; - list-style: none; -} - -.related li { - display: inline; -} - -nav#rellinks { - float: right; -} - -nav#rellinks li+li:before { - content: "|"; -} - -nav#breadcrumbs li+li:before { - content: "\00BB"; -} - -/* Hide certain items when printing */ -@media print { - div.related { - display: none; - } -} \ No newline at end of file diff --git a/docs/_static/basic.css b/docs/_static/basic.css deleted file mode 100644 index 24a49f09..00000000 --- a/docs/_static/basic.css +++ /dev/null @@ -1,856 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a.brackets:before, -span.brackets > a:before{ - content: "["; -} - -a.brackets:after, -span.brackets > a:after { - content: "]"; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -dl.footnote > dt, -dl.citation > dt { - float: left; - margin-right: 0.5em; -} - -dl.footnote > dd, -dl.citation > dd { - margin-bottom: 0em; -} - -dl.footnote > dd:after, -dl.citation > dd:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dt:after { - content: ":"; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0.5em; - content: ":"; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_static/css/badge_only.css b/docs/_static/css/badge_only.css deleted file mode 100644 index 3c33cef5..00000000 --- a/docs/_static/css/badge_only.css +++ /dev/null @@ -1 +0,0 @@ -.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/docs/_static/css/theme.css b/docs/_static/css/theme.css deleted file mode 100644 index aed8cef0..00000000 --- a/docs/_static/css/theme.css +++ /dev/null @@ -1,6 +0,0 @@ -/* sphinx_rtd_theme version 0.4.3 | MIT license */ -/* Built 20190212 16:02 */ -*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content .code-block-caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content .code-block-caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#3a7ca8;height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin:12px 0 0 0;display:block;font-weight:bold;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a{color:#404040}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{padding:0px;border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;display:block;overflow:auto}.rst-content div[class^='highlight'] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.4}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0px;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after,.rst-content .code-block-caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after,.rst-content .code-block-caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.docutils td .last,.rst-content table.docutils td .last :last-child{margin-bottom:0}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content pre,.rst-content kbd,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold;margin-bottom:12px}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-regular.eot");src:url("../fonts/Lato/lato-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-regular.woff2") format("woff2"),url("../fonts/Lato/lato-regular.woff") format("woff"),url("../fonts/Lato/lato-regular.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bold.eot");src:url("../fonts/Lato/lato-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bold.woff2") format("woff2"),url("../fonts/Lato/lato-bold.woff") format("woff"),url("../fonts/Lato/lato-bold.ttf") format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bolditalic.eot");src:url("../fonts/Lato/lato-bolditalic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bolditalic.woff2") format("woff2"),url("../fonts/Lato/lato-bolditalic.woff") format("woff"),url("../fonts/Lato/lato-bolditalic.ttf") format("truetype");font-weight:700;font-style:italic}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-italic.eot");src:url("../fonts/Lato/lato-italic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-italic.woff2") format("woff2"),url("../fonts/Lato/lato-italic.woff") format("woff"),url("../fonts/Lato/lato-italic.ttf") format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:url("../fonts/RobotoSlab/roboto-slab.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.ttf") format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.ttf") format("truetype")} diff --git a/docs/_static/custom.css b/docs/_static/custom.css deleted file mode 100644 index 2a924f1d..00000000 --- a/docs/_static/custom.css +++ /dev/null @@ -1 +0,0 @@ -/* This file intentionally left blank. */ diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js deleted file mode 100644 index 7d88f807..00000000 --- a/docs/_static/doctools.js +++ /dev/null @@ -1,316 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('

') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keydown(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box, textarea, dropdown or button - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey - && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js deleted file mode 100644 index 07966ec6..00000000 --- a/docs/_static/documentation_options.js +++ /dev/null @@ -1,12 +0,0 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.0', - LANGUAGE: 'None', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false -}; \ No newline at end of file diff --git a/docs/_static/file.png b/docs/_static/file.png deleted file mode 100644 index a858a410..00000000 Binary files a/docs/_static/file.png and /dev/null differ diff --git a/docs/_static/fonts/Inconsolata-Bold.ttf b/docs/_static/fonts/Inconsolata-Bold.ttf deleted file mode 100644 index 809c1f58..00000000 Binary files a/docs/_static/fonts/Inconsolata-Bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/Inconsolata-Regular.ttf b/docs/_static/fonts/Inconsolata-Regular.ttf deleted file mode 100644 index fc981ce7..00000000 Binary files a/docs/_static/fonts/Inconsolata-Regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/Inconsolata.ttf b/docs/_static/fonts/Inconsolata.ttf deleted file mode 100644 index 4b8a36d2..00000000 Binary files a/docs/_static/fonts/Inconsolata.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato-Bold.ttf b/docs/_static/fonts/Lato-Bold.ttf deleted file mode 100644 index 1d23c706..00000000 Binary files a/docs/_static/fonts/Lato-Bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato-Regular.ttf b/docs/_static/fonts/Lato-Regular.ttf deleted file mode 100644 index 0f3d0f83..00000000 Binary files a/docs/_static/fonts/Lato-Regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.eot b/docs/_static/fonts/Lato/lato-bold.eot deleted file mode 100644 index 3361183a..00000000 Binary files a/docs/_static/fonts/Lato/lato-bold.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.ttf b/docs/_static/fonts/Lato/lato-bold.ttf deleted file mode 100644 index 29f691d5..00000000 Binary files a/docs/_static/fonts/Lato/lato-bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.woff b/docs/_static/fonts/Lato/lato-bold.woff deleted file mode 100644 index c6dff51f..00000000 Binary files a/docs/_static/fonts/Lato/lato-bold.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.woff2 b/docs/_static/fonts/Lato/lato-bold.woff2 deleted file mode 100644 index bb195043..00000000 Binary files a/docs/_static/fonts/Lato/lato-bold.woff2 and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.eot b/docs/_static/fonts/Lato/lato-bolditalic.eot deleted file mode 100644 index 3d415493..00000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_static/fonts/Lato/lato-bolditalic.ttf deleted file mode 100644 index f402040b..00000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff b/docs/_static/fonts/Lato/lato-bolditalic.woff deleted file mode 100644 index 88ad05b9..00000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_static/fonts/Lato/lato-bolditalic.woff2 deleted file mode 100644 index c4e3d804..00000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.woff2 and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.eot b/docs/_static/fonts/Lato/lato-italic.eot deleted file mode 100644 index 3f826421..00000000 Binary files a/docs/_static/fonts/Lato/lato-italic.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.ttf b/docs/_static/fonts/Lato/lato-italic.ttf deleted file mode 100644 index b4bfc9b2..00000000 Binary files a/docs/_static/fonts/Lato/lato-italic.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.woff b/docs/_static/fonts/Lato/lato-italic.woff deleted file mode 100644 index 76114bc0..00000000 Binary files a/docs/_static/fonts/Lato/lato-italic.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.woff2 b/docs/_static/fonts/Lato/lato-italic.woff2 deleted file mode 100644 index 3404f37e..00000000 Binary files a/docs/_static/fonts/Lato/lato-italic.woff2 and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.eot b/docs/_static/fonts/Lato/lato-regular.eot deleted file mode 100644 index 11e3f2a5..00000000 Binary files a/docs/_static/fonts/Lato/lato-regular.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.ttf b/docs/_static/fonts/Lato/lato-regular.ttf deleted file mode 100644 index 74decd9e..00000000 Binary files a/docs/_static/fonts/Lato/lato-regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.woff b/docs/_static/fonts/Lato/lato-regular.woff deleted file mode 100644 index ae1307ff..00000000 Binary files a/docs/_static/fonts/Lato/lato-regular.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.woff2 b/docs/_static/fonts/Lato/lato-regular.woff2 deleted file mode 100644 index 3bf98433..00000000 Binary files a/docs/_static/fonts/Lato/lato-regular.woff2 and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab-Bold.ttf b/docs/_static/fonts/RobotoSlab-Bold.ttf deleted file mode 100644 index df5d1df2..00000000 Binary files a/docs/_static/fonts/RobotoSlab-Bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab-Regular.ttf b/docs/_static/fonts/RobotoSlab-Regular.ttf deleted file mode 100644 index eb52a790..00000000 Binary files a/docs/_static/fonts/RobotoSlab-Regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot deleted file mode 100644 index 79dc8efe..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf deleted file mode 100644 index df5d1df2..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff deleted file mode 100644 index 6cb60000..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 deleted file mode 100644 index 7059e231..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot deleted file mode 100644 index 2f7ca78a..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf deleted file mode 100644 index eb52a790..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff deleted file mode 100644 index f815f63f..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 deleted file mode 100644 index f2c76e5b..00000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 and /dev/null differ diff --git a/docs/_static/fonts/fontawesome-webfont.eot b/docs/_static/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca9..00000000 Binary files a/docs/_static/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/_static/fonts/fontawesome-webfont.svg b/docs/_static/fonts/fontawesome-webfont.svg deleted file mode 100644 index 855c845e..00000000 --- a/docs/_static/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_static/fonts/fontawesome-webfont.ttf b/docs/_static/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2f..00000000 Binary files a/docs/_static/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/_static/fonts/fontawesome-webfont.woff b/docs/_static/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a4..00000000 Binary files a/docs/_static/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/_static/fonts/fontawesome-webfont.woff2 b/docs/_static/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc60..00000000 Binary files a/docs/_static/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/docs/_static/graphviz.css b/docs/_static/graphviz.css deleted file mode 100644 index 8ab69e01..00000000 --- a/docs/_static/graphviz.css +++ /dev/null @@ -1,19 +0,0 @@ -/* - * graphviz.css - * ~~~~~~~~~~~~ - * - * Sphinx stylesheet -- graphviz extension. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -img.graphviz { - border: 0; - max-width: 100%; -} - -object.graphviz { - max-width: 100%; -} diff --git a/docs/_static/jquery-3.5.1.js b/docs/_static/jquery-3.5.1.js deleted file mode 100644 index 50937333..00000000 --- a/docs/_static/jquery-3.5.1.js +++ /dev/null @@ -1,10872 +0,0 @@ -/*! - * jQuery JavaScript Library v3.5.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2020-05-04T22:49Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.5.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.5 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2020-03-14 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
EBGeometry.hpp
-
-
-
14 
18 namespace EBGeometry {
19 
20 }
Declaration of utilities for passing data into DCEL structures.
-
Declaration of a bounding volume hierarchy (BVH) class.
-
Declaration of a various bounding volumes used for bounding volume hierarchy.
-
Declaration of a mesh class which stores a DCEL mesh (with signed distance functions) ...
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
Declaration of iterators for DCEL surface Tesselations.
-
Name space for all of EBGeometry.
Definition: EBGeometry.hpp:18
-
Declaration of a union operator for creating multi-object scenes.
-
Abstract base class for representing a signed distance function.
-
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
-
File which contains partitioners and lambdas for enclosing dcel_face in bounding volume heirarchies...
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
Declaration of various analytic distance functions.
-
Declaration of a union operator for creating multi-object scenes.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp.html b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp.html deleted file mode 100644 index 3a541447..00000000 --- a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_AnalyticDistanceFunctions.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_AnalyticDistanceFunctions.hpp File Reference
-
-
- -

Declaration of various analytic distance functions. -More...

-
-Include dependency graph for EBGeometry_AnalyticDistanceFunctions.hpp:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Classes

class  SphereSDF< T >
 Signed distance field for sphere. More...
 
class  BoxSDF< T >
 Signed distance field for an axis-aligned box. More...
 
class  TorusSDF< T >
 Signed distance field for a torus. More...
 
class  CylinderSDF< T >
 Signed distance field for a cylinder. More...
 
-

Detailed Description

-

Declaration of various analytic distance functions.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.map deleted file mode 100644 index c241130c..00000000 --- a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.md5 deleted file mode 100644 index f52d6b3f..00000000 --- a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c0fc451c2806ddaaf725b30a46c0f1a8 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.png deleted file mode 100644 index 0d6002b6..00000000 Binary files a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.map b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.map deleted file mode 100644 index 18077ff5..00000000 --- a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.md5 deleted file mode 100644 index 6de342d4..00000000 --- a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -976ebaac9ff78e1accfb25823ece3efb \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.png b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.png deleted file mode 100644 index e2fe3a55..00000000 Binary files a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp_source.html b/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp_source.html deleted file mode 100644 index 6ffafc45..00000000 --- a/docs/doxygen/html/EBGeometry__AnalyticDistanceFunctions_8hpp_source.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_AnalyticDistanceFunctions.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_AnalyticDistanceFunctions.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_AnalyticDistanceFunctions
13 #define EBGeometry_AnalyticDistanceFunctions
14 
17 
21 template <class T>
22 class SphereSDF : public SignedDistanceFunction<T> {
23 public:
24 
28  SphereSDF() = delete;
29 
36  SphereSDF(const Vec3T<T>& a_center, const T& a_radius, const bool a_flipInside) {
37  this->m_center = a_center;
38  this->m_radius = a_radius;
39  this->m_flipInside = a_flipInside;
40  }
41 
45  SphereSDF(const SphereSDF& a_other) {
46  this->m_center = a_other.m_center;
47  this->m_radius = a_other.m_radius;
48  this->m_flipInside = a_other.m_flipInside;
49  this->m_transformOps = a_other.m_transformOps;
50  }
51 
55  virtual ~SphereSDF() = default;
56 
60  const Vec3T<T>& getCenter() const noexcept {
61  return m_center;
62  }
63 
67  Vec3T<T>& getCenter() noexcept {
68  return m_center;
69  }
70 
74  const T& getRadius() const noexcept {
75  return m_radius;
76  }
77 
81  T& getRadius() noexcept {
82  return m_radius;
83  }
84 
89  virtual T signedDistance(const Vec3T<T>& a_point) const noexcept override {
90  const T sign = m_flipInside ? -1.0 : 1.0;
91 
92  return sign * ((a_point - m_center).length() - m_radius);
93  }
94 
95 protected:
96 
101 
106 
111 };
112 
116 template <class T>
117 class BoxSDF : public SignedDistanceFunction<T> {
118 public:
119 
123  BoxSDF() = delete;
124 
131  BoxSDF(const Vec3T<T>& a_loCorner,
132  const Vec3T<T>& a_hiCorner,
133  const bool a_flipInside) {
134  this->m_loCorner = a_loCorner;
135  this->m_hiCorner = a_hiCorner;
136  this->m_flipInside = a_flipInside;
137  }
138 
142  virtual ~BoxSDF() {
143 
144  }
145 
150  const Vec3T<T>& getLowCorner() const noexcept {
151  return m_loCorner;
152  }
153 
158  Vec3T<T>& getLowCorner() noexcept {
159  return m_loCorner;
160  }
161 
166  const Vec3T<T>& getHighCorner() const noexcept {
167  return m_hiCorner;
168  }
169 
174  Vec3T<T>& getHighCorner() noexcept {
175  return m_hiCorner;
176  }
177 
182  virtual T signedDistance(const Vec3T<T>& a_point) const noexcept override {
183  // For each coordinate direction, we have delta[dir] if a_point[dir] falls between xLo and xHi. In this case
184  // delta[dir] will be the signed distance to the closest box face in the dir-direction. Otherwise, if a_point[dir] is
185  // outside the corner we have delta[dir] > 0.
186  const Vec3T<T> delta(std::max(m_loCorner[0] - a_point[0], a_point[0] - m_hiCorner[0]), // < 0 if point falls between xLo and xHi.
187  std::max(m_loCorner[1] - a_point[1], a_point[1] - m_hiCorner[1]), // < 0 if point falls between yLo and yHi.
188  std::max(m_loCorner[2] - a_point[2], a_point[2] - m_hiCorner[2])); // < 0 if point falls between zLo and zHi.
189 
190  // Note: max is max(Vec3T<T>, Vec3T<T>) and not std::max. It returns a vector with coordinate-wise largest components. Note that
191  // the first part std::min(...) is the signed distance on the inside of the box (delta will have negative components). The other
192  // part max(Vec3T<T>::zero(), ...) is for outside the box.
193  const T d = std::min(0.0, delta[delta.maxDir(false)]) + max(Vec3T<T>::zero(), delta).length();
194 
195  const T sign = m_flipInside ? -1.0 : 1.0;
196 
197  return sign * d;
198  }
199 
200 protected:
201 
206 
211 
216 };
217 
222 template <class T>
223 class TorusSDF : public SignedDistanceFunction<T> {
224 public:
225 
229  TorusSDF() = delete;
230 
238  TorusSDF(const Vec3T<T>& a_center,
239  const T& a_majorRadius,
240  const T& a_minorRadius,
241  const bool a_flipInside) {
242  this->m_center = a_center;
243  this->m_majorRadius = a_majorRadius;
244  this->m_minorRadius = a_minorRadius;
245  this->m_flipInside = a_flipInside;
246  }
247 
251  virtual ~TorusSDF() {
252 
253  }
254 
259  const Vec3T<T>& getCenter() const noexcept {
260  return m_center;
261  }
262 
267  Vec3T<T>& getCenter() noexcept {
268  return m_center;
269  }
270 
275  const T& getMajorRadius() const noexcept {
276  return m_majorRadius;
277  }
278 
283  T& getMajorRadius() noexcept {
284  return m_majorRadius;
285  }
286 
291  const T& getMinorRadius() const noexcept {
292  return m_minorRadius;
293  }
294 
299  T& getMinorRadius() noexcept {
300  return m_minorRadius;
301  }
306  virtual T signedDistance(const Vec3T<T>& a_point) const noexcept override {
307  const Vec3T<T> p = a_point - m_center;
308  const T rho = sqrt(p[0]*p[0] + p[1]*p[1]) - m_majorRadius;
309  const T d = sqrt(rho *rho + p[2]*p[2]) - m_minorRadius;
310 
311  const T sign = m_flipInside ? -1.0 : 1.0;
312 
313  return sign * d;
314  }
315 
316 protected:
317 
322 
327 
332 
337 };
338 
342 template <class T>
344 public:
345 
349  CylinderSDF() = delete;
350 
358  CylinderSDF(const Vec3T<T>& a_center1,
359  const Vec3T<T>& a_center2,
360  const T& a_radius,
361  const bool a_flipInside) {
362  this->m_center1 = a_center1;
363  this->m_center2 = a_center2;
364  this->m_radius = a_radius;
365  this->m_flipInside = a_flipInside;
366 
367  // Some derived quantities that are needed for SDF computations.
368  m_center = (m_center2 + m_center1) * 0.5;
369  m_length = (m_center2 - m_center1).length();
370  m_axis = (m_center2 - m_center1)/m_length;
371  }
372 
376  virtual ~CylinderSDF() {
377 
378  }
379 
384  const Vec3T<T>& getCenter1() const noexcept {
385  return m_center1;
386  }
387 
392  const Vec3T<T>& getCenter2() const noexcept {
393  return m_center2;
394  }
395 
400  const T& getRadius() const noexcept {
401  return m_radius;
402  }
403 
408  virtual T signedDistance(const Vec3T<T>& a_point) const noexcept override {
409  T d = std::numeric_limits<T>::infinity();
410 
411  if(m_length > 0.0 && m_radius > 0.0){
412  const Vec3T<T> point = a_point - m_center;
413  const T para = point.dotProduct(m_axis); // Distance between a_point and cylinder center, projected onto cylinder axis.
414  const Vec3T<T> ortho = point - para * m_axis; // Distance from cylinder axis.
415 
416  const T w = ortho.length() - m_radius; // Distance from cylinder wall. < 0 on inside and > 0 on outside.
417  const T h = std::abs(para) - 0.5*m_length; // Distance from cylinder top. < 0 on inside and > 0 on outside.
418 
419  constexpr T zero = T(0.0);
420 
421  if(w <= zero && h <= zero){ // Inside cylinder
422  d = (std::abs(w) < std::abs(h)) ? w : h;
423  }
424  else if (w <= zero && h > zero){ // Above one of the endcaps.
425  d = h;
426  }
427  else if(w > zero && h < zero) { // Outside radius but between the endcaps.
428  d = w;
429  }
430  else{
431  d = sqrt(w*w + h*h);
432  }
433  }
434 
435  const T sign = m_flipInside ? -1.0 : 1.0;
436 
437  return sign * d;
438  }
439 
440 protected:
441 
446 
451 
456 
461 
466 
471 
476 };
477 
479 
481 
482 #endif
T & getRadius() noexcept
Get radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:81
-
T & getMinorRadius() noexcept
Get minor radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:299
-
virtual ~TorusSDF()
Destructor (does nothing).
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:251
-
const Vec3T< T > & getLowCorner() const noexcept
Get lower-left corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:150
-
SphereSDF()=delete
Disallowed weak construction.
-
bool m_flipInside
Hook for making outside -> inside.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:336
-
T m_radius
radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:470
-
Vec3T< T > & getHighCorner() noexcept
Get upper-right corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:174
-
T m_minorRadius
Minor torus radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:331
-
std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
List of transformation operators for the signed distance field.
Definition: EBGeometry_SignedDistanceFunction.hpp:68
-
virtual T signedDistance(const Vec3T< T > &a_point) const noexcept override
Signed distance function for sphere.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:89
-
Signed distance field for an axis-aligned box.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:117
-
const Vec3T< T > & getCenter() const noexcept
Get torus center.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:259
-
virtual ~CylinderSDF()
Destructor (does nothing).
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:376
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
virtual T signedDistance(const Vec3T< T > &a_point) const noexcept override
Signed distance function for a torus.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:306
-
const Vec3T< T > & getHighCorner() const noexcept
Get upper-right corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:166
-
Vec3T< T > m_hiCorner
High box corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:210
-
const Vec3T< T > & getCenter1() const noexcept
Get one endpoint.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:384
-
Vec3T< T > m_loCorner
Low box corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:205
-
virtual ~SphereSDF()=default
Destructor.
-
bool m_flipInside
For flipping sign.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:110
-
int maxDir(const bool a_doAbs) const noexcept
Return the direction which has the largest component (can be absolute)
Definition: EBGeometry_VecImplem.hpp:386
-
bool m_flipInside
Hook for making outside -> inside.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:475
-
CylinderSDF(const Vec3T< T > &a_center1, const Vec3T< T > &a_center2, const T &a_radius, const bool a_flipInside)
Full constructor.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:358
-
Signed distance field for a torus.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:223
-
Vec3T< T > m_center1
One endpoint.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:445
-
Signed distance field for a cylinder.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:343
-
bool m_flipInside
Hook for making outside -> inside.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:215
-
BoxSDF(const Vec3T< T > &a_loCorner, const Vec3T< T > &a_hiCorner, const bool a_flipInside)
Full constructor. Sets the low and high corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:131
-
const T & getMinorRadius() const noexcept
Get minor radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:291
-
Signed distance field for sphere.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:22
-
Vec3T< T > m_center2
The other endpoint.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:450
-
Vec3T< T > & getCenter() noexcept
Get torus center.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:267
-
Vec3T< T > m_center
Torus center.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:321
-
const Vec3T< T > & getCenter() const noexcept
Get center.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:60
-
virtual ~BoxSDF()
Destructor (does nothing).
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:142
-
T & getMajorRadius() noexcept
Get major radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:283
- -
const Vec3T< T > & getCenter2() const noexcept
Get the other endpoint.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:392
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Vec3T< T > m_center
Sphere center.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:100
-
virtual T signedDistance(const Vec3T< T > &a_point) const noexcept override
Signed distance function for sphere.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:182
-
Abstract base class for representing a signed distance function.
-
T m_length
Cylinder length.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:465
-
Vec3T< T > & getLowCorner() noexcept
Get lower-left corner.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:158
-
T length() const noexcept
Compute vector length.
Definition: EBGeometry_VecImplem.hpp:444
-
const T & getRadius() const noexcept
Get radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:400
-
Abstract representation of a signed distance function.
Definition: EBGeometry_SignedDistanceFunction.hpp:29
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
-
T m_radius
Sphere radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:105
-
const T & getRadius() const noexcept
Get radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:74
-
Vec3T< T > & getCenter() noexcept
Get center.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:67
- -
Vec3T< T > m_axis
"Axis", pointing from m_center1 to m_center2.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:460
-
const T & getMajorRadius() const noexcept
Get major radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:275
-
SphereSDF(const Vec3T< T > &a_center, const T &a_radius, const bool a_flipInside)
Default constructor.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:36
-
Declaration of various analytic distance functions.
-
TorusSDF(const Vec3T< T > &a_center, const T &a_majorRadius, const T &a_minorRadius, const bool a_flipInside)
Full constructor.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:238
-
T m_majorRadius
Major torus radius.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:326
-
virtual T signedDistance(const Vec3T< T > &a_point) const noexcept override
Signed distance function for a torus.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:408
-
SphereSDF(const SphereSDF &a_other)
Copy constructor.
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:45
-
Vec3T< T > m_center
m_Halfway between center1 and m_center2
Definition: EBGeometry_AnalyticDistanceFunctions.hpp:455
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp.html b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp.html deleted file mode 100644 index 8354846b..00000000 --- a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BVHImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_BVHImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_BVH.hpp. -More...

-
#include <stack>
-#include "EBGeometry_BVH.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-
-Include dependency graph for EBGeometry_BVHImplem.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 BVH
 Namespace for various bounding volume heirarchy (BVH) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_BVH.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.map deleted file mode 100644 index 17e7b80c..00000000 --- a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.md5 deleted file mode 100644 index d430cda8..00000000 --- a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e65cac8a78d70012a15f185adef34a2f \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.png deleted file mode 100644 index 8140268d..00000000 Binary files a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.map deleted file mode 100644 index 3698c02b..00000000 --- a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.md5 deleted file mode 100644 index b9def15b..00000000 --- a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5661b5ac9da93ea5e321f5714bdcf2b0 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.png deleted file mode 100644 index 8d0599d9..00000000 Binary files a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__BVHImplem_8hpp_source.html deleted file mode 100644 index ac62c363..00000000 --- a/docs/doxygen/html/EBGeometry__BVHImplem_8hpp_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BVHImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_BVHImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_BVHImplem
13 #define EBGeometry_BVHImplem
14 
15 // Std includes
16 #include <stack>
17 
18 // Our includes
19 #include "EBGeometry_BVH.hpp"
21 
22 namespace BVH {
23 
24  template<class T, class P, class BV, int K>
25  inline
27  for (auto& c : m_children){
28  c = nullptr;
29  }
30 
31  m_primitives.resize(0);
32  }
33 
34  template<class T, class P, class BV, int K>
35  inline
36  NodeT<T, P, BV, K>::NodeT(const std::vector<std::shared_ptr<P> >& a_primitives) : NodeT<T, P, BV, K>() {
37  for (const auto& p : a_primitives){
38  m_primitives.emplace_back(p);
39  }
40 
41  for (auto& c : m_children){
42  c = nullptr;
43  }
44  }
45 
46  template<class T, class P, class BV, int K>
47  inline
48  NodeT<T, P, BV, K>::NodeT(const std::vector<std::shared_ptr<const P> >& a_primitives) : NodeT<T, P, BV, K>() {
49  m_primitives = a_primitives;
50 
51  for (auto& c : m_children){
52  c = nullptr;
53  }
54  }
55 
56  template<class T, class P, class BV, int K>
57  inline
59  }
60 
61  template<class T, class P, class BV, int K>
62  inline
63  void NodeT<T, P, BV, K>::setPrimitives(const PrimitiveList& a_primitives) noexcept {
64  m_primitives = a_primitives;
65  }
66 
67  template<class T, class P, class BV, int K>
68  inline
69  bool NodeT<T, P, BV, K>::isLeaf() const noexcept {
70  return m_primitives.size() > 0;
71  }
72 
73  template<class T, class P, class BV, int K>
74  inline
76  return (m_primitives);
77  }
78 
79  template<class T, class P, class BV, int K>
80  inline
82  return (m_primitives);
83  }
84 
85  template<class T, class P, class BV, int K>
86  inline
87  const BV& NodeT<T, P, BV, K>::getBoundingVolume() const noexcept {
88  return (m_boundingVolume);
89  }
90 
91  template<class T, class P, class BV, int K>
92  inline
93  const std::array<std::shared_ptr<NodeT<T, P, BV, K> >, K >& NodeT<T, P, BV, K>::getChildren() const noexcept {
94  return (m_children);
95  }
96 
97  template<class T, class P, class BV, int K>
98  inline
100  const Partitioner& a_partitioner,
101  const StopFunction& a_stopCrit) noexcept {
102 
103 
104  // Compute the bounding volume for this node.
105  std::vector<BV> boundingVolumes;
106  for (const auto& p : m_primitives){
107  boundingVolumes.emplace_back(a_bvConstructor(p));
108  }
109 
110  m_boundingVolume = BV(boundingVolumes);
111 
112  // Check if we can split this node into sub-bounding volumes.
113  const bool stopRecursiveSplitting = a_stopCrit(*this);
114  const bool hasEnoughPrimitives = m_primitives.size() >= K;
115 
116  if(!stopRecursiveSplitting && hasEnoughPrimitives){
117 
118  // Divide primitives into new partitions
119  const auto& newPartitions = a_partitioner(m_primitives); // Divide this node's primitives into K new sub-volume primitives
120  this->insertChildren(newPartitions); // Insert the K new nodes into the tree.
121 
122  m_primitives.resize(0); // This node is no longer a leaf node.
123 
124  // Partition children nodes further
125  for (auto& c : m_children){
126  c->topDownSortAndPartitionPrimitives(a_bvConstructor, a_partitioner, a_stopCrit);
127  }
128  }
129  }
130 
131  template<class T, class P, class BV, int K>
132  inline
133  void NodeT<T, P, BV, K>::insertChildren(const std::array<PrimitiveList, K>& a_primitives) noexcept {
134  for (int l = 0; l < K; l++){
135  m_children[l] = std::make_shared<NodeT<T, P, BV, K> >();
136 
137  m_children[l]->setPrimitives(a_primitives[l]);
138  }
139  }
140 
141  template<class T, class P, class BV, int K>
142  inline
143  T NodeT<T, P, BV, K>::getDistanceToBoundingVolume(const Vec3& a_point) const noexcept{
144  return m_boundingVolume.getDistance(a_point);
145  }
146 
147  template<class T, class P, class BV, int K>
148  inline
149  T NodeT<T, P, BV, K>::getDistanceToPrimitives(const Vec3& a_point) const noexcept {
150  T minDist = std::numeric_limits<T>::infinity();
151 
152  for (const auto& p : m_primitives){
153  const auto curDist = p->signedDistance(a_point);
154 
155  if(curDist*curDist < minDist*minDist){
156  minDist = curDist;
157  }
158  }
159 
160  return minDist;
161  }
162 
163  template<class T, class P, class BV, int K>
164  inline
165  T NodeT<T, P, BV, K>::signedDistance(const Vec3& a_point) const noexcept {
166  return this->signedDistance(a_point, Prune::Stack);
167  }
168 
169  template<class T, class P, class BV, int K>
170  inline
171  T NodeT<T, P, BV, K>::signedDistance(const Vec3& a_point, const Prune a_pruning) const noexcept {
172  T ret = std::numeric_limits<T>::infinity();
173 
174  switch(a_pruning){
175  case Prune::Stack:
176  {
177  ret = this->pruneStack(a_point);
178 
179  break;
180  }
181  case Prune::Ordered:
182  {
183  this->pruneOrdered(ret, a_point);
184 
185  break;
186  }
187  case Prune::Unordered:
188  {
189  this->pruneUnordered(ret, a_point);
190 
191  break;
192  }
193  default:
194  std::cerr << "In file EBGeometry_BVHImplem.hpp function NodeT<T, P, BV, K>::signedDistance(Vec3, Prune) -- bad input enum for 'Prune'\n";
195  };
196 
197  return ret;
198  }
199 
200  template<class T, class P, class BV, int K>
201  inline
202  T NodeT<T, P, BV, K>::pruneStack(const Vec3& a_point) const noexcept {
203  // TLDR: This routine uses ordered traversal along the branches. Rather than calling itself recursively, it uses
204  // a stack for investigating the branches and nodes.
205 
206  // Shortest distance. Initialize to something big.
207  T minDist = std::numeric_limits<T>::infinity();
208 
209  // Create temporary storage and and priority queue (our stack).
210  using Node = const NodeT<T, P, BV, K>*;
211  using NodeAndDist = std::pair<Node, T>;
212 
213  std::array<NodeAndDist, K> childrenAndDistances;
214  std::stack<NodeAndDist> q;
215 
216  // Initialize the stack with the root node.
217  q.emplace(this, this->getDistanceToBoundingVolume(a_point));
218 
219  // Stack loop -- always investigate the one at the top.
220  while(!(q.empty())) {
221 
222  // Pop the top node off the stack.
223  const auto& curNode = (q.top()).first;
224  const auto& bvDist = (q.top()).second;
225 
226  q.pop();
227 
228  // See if we really need to process this node. We only need to do it if its BV is closer than the shortest distance we've found so far. Otherwise
229  // we are guaranteed that the distance to the primitives is larger than the shortest distance we've found so far. If the current node is a leaf
230  // node we just update the shortest distance. Otherwise we fetch the child nodes and process them (in a very specific order!).
231  if(bvDist <= std::abs(minDist)){
232  if(curNode->isLeaf()){
233  const T primDist = curNode->getDistanceToPrimitives(a_point);
234 
235  if(std::abs(primDist) < std::abs(minDist)) {
236  minDist = primDist;
237  }
238  }
239  else{
240  // If it's a regular node, sort the child nodes and put them on the stack. On the next iteration we do the closest node first. This sorting
241  // is critical to the performance of the BVH.
242 
243  // Get the nodes's children.
244  const std::array<NodePtr, K>& children = curNode->getChildren();
245 
246  for (int k = 0; k < K; k++) {
247  const Node& child = &(*children[k]);
248 
249  childrenAndDistances[k] = std::make_pair(child, child->getDistanceToBoundingVolume(a_point));
250  }
251 
252  std::sort(childrenAndDistances.begin(),
253  childrenAndDistances.end(),
254  [](const NodeAndDist& node1, const NodeAndDist& node2) -> bool {
255  return node1.second > node2.second;
256  });
257 
258  // Push the children onto the stack.
259  for (const auto& child : childrenAndDistances) {
260  q.push(child);
261  }
262  }
263  }
264  }
265 
266  return minDist;
267  }
268 
269  template<class T, class P, class BV, int K>
270  inline
271  void NodeT<T, P, BV, K>::pruneOrdered(T& a_shortestDistanceSoFar, const Vec3& a_point) const noexcept {
272 
273  // TLDR: Beginning at some node, this routine descends the branches in the tree. It always descends the branch with the shortest distance
274  // to the bounding volume first. The other branch is investigated only after the full sub-tree beneath the first branch has completed. Since the shortest
275  // distance to primitives is updated underway, there is a decent chance that the secondary subtree can be pruned. Hence why this routine is more efficient
276  // than prunedUnordered.
277  if(this->isLeaf()){
278  // Compute the shortest signed distance to the primitives in this leaf node. If this is shorter than a_shortestDistanceSoFar, update it. Recall
279  // that the comparison requires the absolute value since we're doing the SIGNED distance.
280  const T primDist = this->getDistanceToPrimitives(a_point);
281 
282  if(std::abs(primDist) < std::abs(a_shortestDistanceSoFar)){
283  a_shortestDistanceSoFar = primDist;
284  }
285  }
286  else{
287  // In this case we need to decide which subtree to move down. First, sort the children nodes by the distance between
288  // a_point and the children node's bounding volume. Shortest distance goes first.
289  std::array<std::pair<T, NodePtr>, K> distancesAndNodes;
290  for (int i = 0; i < K; i++){
291  distancesAndNodes[i] = std::make_pair(m_children[i]->getDistanceToBoundingVolume(a_point), m_children[i]);
292  }
293 
294  // Comparator for sorting -- puts the node with the shortest distance to the bounding volume at the front of the vector.
295  auto comparator = [](const std::pair<T, NodePtr>& a_node1, const std::pair<T, NodePtr>& a_node2) -> bool{
296  return std::abs(a_node1.first) < std::abs(a_node2.first);
297  };
298 
299  std::sort(distancesAndNodes.begin(), distancesAndNodes.end(), comparator);
300 
301  // Go through the children nodes -- closest node goes first. We prune branches
302  // if the distance to the node's bounding volume is longer than the shortest distance we've found so far.
303  for (int i = 0; i < K; i++){
304  const std::pair<T, NodePtr>& curChildNode = distancesAndNodes[i];
305 
306  // a_shortestDistanceSoFar is the SIGNED distance, so we need the absolute value here.
307  if(std::abs(curChildNode.first) <= std::abs(a_shortestDistanceSoFar)){
308  curChildNode.second->pruneOrdered(a_shortestDistanceSoFar, a_point);
309  }
310  else{ // Prune the rest of the children nodes.
311  break;
312  }
313  }
314  }
315  }
316 
317  template<class T, class P, class BV, int K>
318  inline
319  void NodeT<T, P, BV, K>::pruneUnordered(T& a_shortestDistanceSoFar, const Vec3& a_point) const noexcept {
320  if(this->isLeaf()) {
321  // Check if the distance to the primitives in this leaf is shorter than a_shortestDistanceSoFar. If it is, update the
322  // shortest distance.
323  const T curSignedDistance = this->getDistanceToPrimitives(a_point);
324 
325  if(std::abs(curSignedDistance) < std::abs(a_shortestDistanceSoFar)){
326  a_shortestDistanceSoFar = curSignedDistance;
327  }
328  }
329  else {
330  // Investigate subtrees. Prune subtrees if the distance to their bounding volumes are longer than the shortest distance
331  // we've found so far.
332  for (const auto& child : m_children){
333  const T distanceToChildBoundingVolume = child->getDistanceToBoundingVolume(a_point);
334 
335  if(std::abs(distanceToChildBoundingVolume) < std::abs(a_shortestDistanceSoFar)){
336  child->pruneUnordered(a_shortestDistanceSoFar, a_point);
337  }
338  }
339  }
340  }
341 
342  template<class T, class P, class BV, int K>
343  inline
344  std::shared_ptr<LinearBVH<T, P, BV, K> > NodeT<T, P, BV, K>::flattenTree() const noexcept {
345 
346  // Create a list of sorted primitives and nodes.
347  std::vector<std::shared_ptr<const P> > sortedPrimitives;
348  std::vector<std::shared_ptr<LinearNodeT<T, P, BV, K> > > linearNodes;
349 
350  // Track the offset into the linearized node array.
351  unsigned long offset = 0;
352 
353  // Flatten recursively.
354  this->flattenTree(linearNodes, sortedPrimitives, offset);
355 
356  // Return the root node.
357  return std::make_shared<LinearBVH<T, P, BV, K> >(linearNodes, sortedPrimitives);
358  }
359 
360  template<class T, class P, class BV, int K>
361  inline
362  unsigned long NodeT<T, P, BV, K>::flattenTree(std::vector<std::shared_ptr<LinearNodeT<T, P, BV, K> > >& a_linearNodes,
363  std::vector<std::shared_ptr<const P> >& a_sortedPrimitives,
364  unsigned long& a_offset) const noexcept {
365 
366  // TLDR: This is the main routine for flattening the hierarchy beneath the current node. When this is called we insert
367  // this node into a_linearNodes and associate the array offsets so that we can find the children in the linearized array.
368 
369  // Current node we are dealing with.
370  const auto curNode = a_offset;
371 
372  // Insert a new node corresponding to this node and provide it with the current bounding volume.
373  a_linearNodes.emplace_back(std::make_shared<LinearNodeT<T, P, BV, K> >());
374  a_linearNodes[curNode]->setBoundingVolume(m_boundingVolume);
375 
376  a_offset++;
377 
378  if(this->isLeaf()) {
379  // Insert primitives and offsets.
380  a_linearNodes[curNode]->setNumPrimitives (m_primitives. size());
381  a_linearNodes[curNode]->setPrimitivesOffset(a_sortedPrimitives.size());
382 
383  a_sortedPrimitives.insert(a_sortedPrimitives.end(), m_primitives.begin(), m_primitives.end());
384  }
385  else {
386  a_linearNodes[curNode]->setNumPrimitives (0 );
387  a_linearNodes[curNode]->setPrimitivesOffset(0UL);
388 
389  // Go through the children nodes and
390  for (int k = 0; k < K; k++){
391  const int offset = m_children[k]->flattenTree(a_linearNodes, a_sortedPrimitives, a_offset);
392 
393  a_linearNodes[curNode]->setChildOffset(offset, k);
394  }
395  }
396 
397  return curNode;
398  }
399 
400  template<class T, class P, class BV, int K>
401  inline
403 
404  // Initialize everything.
405  m_boundingVolume = BV();
406  m_primitivesOffset = 0UL;
407  m_numPrimitives = 0;
408 
409  for (auto& offset : m_childOffsets){
410  offset = 0UL;
411  }
412  }
413 
414  template<class T, class P, class BV, int K>
415  inline
417  }
418 
419  template<class T, class P, class BV, int K>
420  inline
421  void LinearNodeT<T, P, BV, K>::setBoundingVolume(const BV& a_boundingVolume) noexcept {
422  m_boundingVolume = a_boundingVolume;
423  }
424 
425  template<class T, class P, class BV, int K>
426  inline
427  void LinearNodeT<T, P, BV, K>::setPrimitivesOffset(const unsigned long a_primitivesOffset) noexcept {
428  m_primitivesOffset = a_primitivesOffset;
429  }
430 
431  template<class T, class P, class BV, int K>
432  inline
433  void LinearNodeT<T, P, BV, K>::setNumPrimitives(const int a_numPrimitives) noexcept {
434  m_numPrimitives = a_numPrimitives;
435  }
436 
437  template<class T, class P, class BV, int K>
438  inline
439  void LinearNodeT<T, P, BV, K>::setChildOffset(const unsigned long a_childOffset, const int a_whichChild) noexcept {
440  m_childOffsets[a_whichChild] = a_childOffset;
441  }
442 
443  template<class T, class P, class BV, int K>
444  inline
445  const BV& LinearNodeT<T, P, BV, K>::getBoundingVolume() const noexcept {
446  return (m_boundingVolume);
447  }
448 
449  template<class T, class P, class BV, int K>
450  inline
451  const unsigned long& LinearNodeT<T, P, BV, K>::getPrimitivesOffset() const noexcept {
452  return (m_primitivesOffset);
453  }
454 
455  template<class T, class P, class BV, int K>
456  inline
457  const unsigned long& LinearNodeT<T, P, BV, K>::getNumPrimitives() const noexcept {
458  return (m_numPrimitives);
459  }
460 
461  template<class T, class P, class BV, int K>
462  inline
463  const std::array<unsigned long, K>& LinearNodeT<T, P, BV, K>::getChildOffsets() const noexcept {
464  return (m_childOffsets);
465  }
466 
467  template<class T, class P, class BV, int K>
468  inline
469  bool LinearNodeT<T, P, BV, K>::isLeaf() const noexcept {
470  return m_numPrimitives > 0;
471  }
472 
473  template<class T, class P, class BV, int K>
474  inline
476  return m_boundingVolume.getDistance(a_point);
477  }
478 
479  template<class T, class P, class BV, int K>
480  inline
481  T LinearNodeT<T, P, BV, K>::getDistanceToPrimitives(const Vec3T<T>& a_point, const std::vector<std::shared_ptr<const P> >& a_primitives) const noexcept {
482  T minDist = std::numeric_limits<T>::infinity();
483 
484  for (unsigned int i = 0; i < m_numPrimitives; i++){
485  const T curDist = a_primitives[m_primitivesOffset + i]->signedDistance(a_point);
486 
487  if(std::abs(curDist) < std::abs(minDist)){
488  minDist = curDist;
489  }
490  }
491 
492  return minDist;
493  }
494 
495  template<class T, class P, class BV, int K>
496  inline
497  LinearBVH<T, P, BV, K>::LinearBVH(const std::vector<std::shared_ptr<const LinearNodeT<T, P, BV, K> > >& a_linearNodes,
498  const std::vector<std::shared_ptr<const P> >& a_primitives) {
499  m_linearNodes = a_linearNodes;
500  m_primitives = a_primitives;
501  }
502 
503  template<class T, class P, class BV, int K>
504  inline
505  LinearBVH<T, P, BV, K>::LinearBVH(const std::vector<std::shared_ptr<LinearNodeT<T, P, BV, K> > >& a_linearNodes,
506  const std::vector<std::shared_ptr<const P> >& a_primitives) {
507 
508  for (const auto& p : a_linearNodes){
509  m_linearNodes.emplace_back(p);
510  }
511 
512  m_primitives = a_primitives;
513  }
514 
515  template<class T, class P, class BV, int K>
516  inline
518 
519  }
520 
521  template<class T, class P, class BV, int K>
522  inline
523  T LinearBVH<T, P, BV, K>::signedDistance(const Vec3& a_point) const noexcept {
524  // TLDR: This routine uses ordered traversal along the branches. Rather than calling itself recursively, it uses
525  // a stack for investigating the branches and nodes.
526 
527  // Shortest unsigned square distance. Initialize to something big.
528  T minDist = std::numeric_limits<T>::infinity();
529 
530  // Create temporary storage and and priority queue (our stack).
531  using NodeAndDist = std::pair<unsigned long, T>;
532 
533  std::array<NodeAndDist, K> children;
534  std::stack<NodeAndDist> q;
535 
536  // Initialize the stack with the root node.
537  q.emplace(0, m_linearNodes[0]->getDistanceToBoundingVolume(a_point));
538 
539  // Stack loop -- always investigate the one at the top.
540  while(!(q.empty())){
541 
542  // Pop the top node off the stack.
543  const auto& curNode = (q.top()).first;
544  const auto& bvDist = (q.top()).second;
545 
546  q.pop();
547 
548  // See if we really need to process this node. We only need to do it if its BV is closer than the shortest distance we've found so far. Otherwise
549  // we are guaranteed that the distance to the primitives is larger than the shortest distance we've found so far.
550  if(bvDist <= std::abs(minDist)){
551 
552  // If it's a leaf node, update the shortest distance so far.
553  if(m_linearNodes[curNode]->isLeaf()){
554  const T primDist = m_linearNodes[curNode]->getDistanceToPrimitives(a_point, m_primitives);
555 
556  if(std::abs(primDist) < std::abs(minDist)) {
557  minDist = primDist;
558  }
559  }
560  else{
561  // Compute child indices and their BVH distance to a_point.
562  for (int k = 0; k < K; k++){
563  const unsigned long& curOff = m_linearNodes[curNode]->getChildOffsets()[k];
564  const T distanceToBV = m_linearNodes[curOff] ->getDistanceToBoundingVolume(a_point);
565 
566  children[k] = std::make_pair(curOff, distanceToBV);
567  }
568 
569  // Sort the child nodes and put them on the stack. On the next iteration we do the closest node first. This sorting
570  // is critical to the performance of the BVH.
571  std::sort(children.begin(),
572  children.end(),
573  [](const std::pair<unsigned long, T>& node1, const std::pair<unsigned long, T>& node2) -> bool {
574  return node1.second > node2.second;
575  });
576 
577  // Push onto stack if the BV is closer than minDist.
578  for (const auto& child : children) {
579  q.push(child);
580  }
581  }
582  }
583  }
584 
585  return minDist;
586  }
587 }
588 
590 
591 #endif
T getDistanceToBoundingVolume(const Vec3 &a_point) const noexcept
Get the distance from a 3D point to the bounding volume.
Definition: EBGeometry_BVHImplem.hpp:475
-
virtual ~LinearBVH()
Destructor. Does nothing.
Definition: EBGeometry_BVHImplem.hpp:517
-
const unsigned long & getNumPrimitives() const noexcept
Get the number of primitives.
Definition: EBGeometry_BVHImplem.hpp:457
-
LinearBVH()=delete
Disallowed. Use the full constructor please.
-
NodeT()
Default constructor which sets a regular node.
Definition: EBGeometry_BVHImplem.hpp:26
-
std::array< std::shared_ptr< NodeT< T, P, BV, K > >, K > m_children
Children nodes.
Definition: EBGeometry_BVH.hpp:254
-
Forward declare the BVH node since it is needed for the polymorphic lambdas.
Definition: EBGeometry_BVH.hpp:36
-
const unsigned long & getPrimitivesOffset() const noexcept
Get the primitives offset.
Definition: EBGeometry_BVHImplem.hpp:451
-
Forward declare linear node class.
Definition: EBGeometry_BVH.hpp:44
-
void setBoundingVolume(const BV &a_boundingVolume) noexcept
Set the bounding volume.
Definition: EBGeometry_BVHImplem.hpp:421
-
bool isLeaf() const noexcept
Is leaf or not.
Definition: EBGeometry_BVHImplem.hpp:469
-
std::shared_ptr< LinearBVH< T, P, BV, K > > flattenTree() const noexcept
Flatten everything beneath this node into a depth-first sorted BVH hierarchy.
Definition: EBGeometry_BVHImplem.hpp:344
-
Namespace for various bounding volume heirarchy (BVH) functionality.
Definition: EBGeometry_BVH.hpp:28
-
Declaration of a bounding volume hierarchy (BVH) class.
-
void insertChildren(const std::array< PrimitiveList, K > &a_primitives) noexcept
Insert nodes with primitives.
Definition: EBGeometry_BVHImplem.hpp:133
-
const std::array< std::shared_ptr< NodeT< T, P, BV, K > >, K > & getChildren() const noexcept
Return this node&#39;s children.
Definition: EBGeometry_BVHImplem.hpp:93
-
std::vector< std::shared_ptr< const P > > m_primitives
Primitives list. This will be empty for regular nodes.
Definition: EBGeometry_BVH.hpp:249
-
void topDownSortAndPartitionPrimitives(const BVConstructor &a_bvConstructor, const Partitioner &a_partitioner, const StopFunction &a_stopCrit) noexcept
Function for using top-down construction of the bounding volume hierarchy.
Definition: EBGeometry_BVHImplem.hpp:99
-
LinearNodeT()
Constructor.
Definition: EBGeometry_BVHImplem.hpp:402
-
void setNumPrimitives(const int a_numPrimitives) noexcept
Set number of primitives.
Definition: EBGeometry_BVHImplem.hpp:433
-
BVConstructorT< P, BV > BVConstructor
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:149
-
T signedDistance(const Vec3 &a_point) const noexcept
Function which computes the signed distance. This calls the other version.
Definition: EBGeometry_BVHImplem.hpp:523
-
T getDistanceToPrimitives(const Vec3 &a_point) const noexcept
Compute the shortest distance to the primitives in this node.
Definition: EBGeometry_BVHImplem.hpp:149
-
T pruneStack(const Vec3 &a_point) const noexcept
Iterative ordered pruning along the BVH tree.
Definition: EBGeometry_BVHImplem.hpp:202
-
PrimitiveListT< P > PrimitiveList
Alias for cutting down on typing. This is a std::vector<std::shared_ptr<const P> >.
Definition: EBGeometry_BVH.hpp:119
-
void setPrimitives(const PrimitiveList &a_primitives) noexcept
Set primitives in this node.
Definition: EBGeometry_BVHImplem.hpp:63
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
std::vector< std::shared_ptr< const P > > PrimitiveListT
Alias to cut down on typing.
Definition: EBGeometry_BVH.hpp:59
-
void setPrimitivesOffset(const unsigned long a_primitivesOffset) noexcept
Set the offset into the primitives array.
Definition: EBGeometry_BVHImplem.hpp:427
-
void setChildOffset(const unsigned long a_childOffset, const int a_whichChild) noexcept
Set the child offsets.
Definition: EBGeometry_BVHImplem.hpp:439
-
virtual ~NodeT()
Destructor (does nothing)
Definition: EBGeometry_BVHImplem.hpp:58
-
virtual ~LinearNodeT()
Destructor.
Definition: EBGeometry_BVHImplem.hpp:416
-
const std::array< unsigned long, K > & getChildOffsets() const noexcept
Get the child offsets.
Definition: EBGeometry_BVHImplem.hpp:463
-
T signedDistance(const Vec3T< T > &a_point) const noexcept
Function which computes the signed distance.
Definition: EBGeometry_BVHImplem.hpp:165
-
void pruneOrdered(T &a_closest, const Vec3 &a_point) const noexcept
Recursively ordered pruning along the BVH tree.
Definition: EBGeometry_BVHImplem.hpp:271
-
BV m_boundingVolume
Bounding volume object.
Definition: EBGeometry_BVH.hpp:244
-
Prune
Typename for identifying algorithms various algorithms during tree traversel.
Definition: EBGeometry_BVH.hpp:95
- -
void pruneUnordered(T &a_closest, const Vec3 &a_point) const noexcept
Recursive unordered pruning along the BVH tree.
Definition: EBGeometry_BVHImplem.hpp:319
-
const BV & getBoundingVolume() const noexcept
Get the node bounding volume. return m_boundingVolume.
Definition: EBGeometry_BVHImplem.hpp:445
-
StopFunctionT< T, P, BV, K > StopFunction
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:139
-
const PrimitiveList & getPrimitives() const noexcept
Get the primitives stored in this node.
Definition: EBGeometry_BVHImplem.hpp:81
-
bool isLeaf() const noexcept
Get node type.
Definition: EBGeometry_BVHImplem.hpp:69
-
T getDistanceToPrimitives(const Vec3 &a_point, const std::vector< std::shared_ptr< const P > > &a_primitives) const noexcept
Compute signed distance to primitives.
Definition: EBGeometry_BVHImplem.hpp:481
-
PartitionerT< P, K > Partitioner
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:144
-
const BV & getBoundingVolume() const noexcept
Get bounding volume.
Definition: EBGeometry_BVHImplem.hpp:87
-
T getDistanceToBoundingVolume(const Vec3 &a_point) const noexcept
Get the distance from a 3D point to the bounding volume.
Definition: EBGeometry_BVHImplem.hpp:143
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp.html b/docs/doxygen/html/EBGeometry__BVH_8hpp.html deleted file mode 100644 index 79e9232e..00000000 --- a/docs/doxygen/html/EBGeometry__BVH_8hpp.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BVH.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_BVH.hpp File Reference
-
-
- -

Declaration of a bounding volume hierarchy (BVH) class. -More...

-
#include <memory>
-#include <vector>
-#include <functional>
-#include <queue>
-#include "EBGeometry_Vec.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_BVHImplem.hpp"
-
-Include dependency graph for EBGeometry_BVH.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Classes

class  BVH::NodeT< T, P, BV, K >
 Forward declare the BVH node since it is needed for the polymorphic lambdas. More...
 
class  BVH::LinearNodeT< T, P, BV, K >
 Forward declare linear node class. More...
 
class  BVH::LinearBVH< T, P, BV, K >
 Forward declare linear BVH class. More...
 
class  BVH::NodeT< T, P, BV, K >
 Forward declare the BVH node since it is needed for the polymorphic lambdas. More...
 
class  BVH::LinearNodeT< T, P, BV, K >
 Forward declare linear node class. More...
 
class  BVH::LinearBVH< T, P, BV, K >
 Forward declare linear BVH class. More...
 
- - - - -

-Namespaces

 BVH
 Namespace for various bounding volume heirarchy (BVH) functionality.
 
- - - - - - - - - - - - - - - - - -

-Typedefs

template<class P >
using BVH::PrimitiveListT = std::vector< std::shared_ptr< const P > >
 Alias to cut down on typing. More...
 
template<class T , class P , class BV , int K>
using BVH::StopFunctionT = std::function< bool(const NodeT< T, P, BV, K > &a_node)>
 Stop function for deciding when a BVH node can't be divided into sub-volumes. More...
 
template<class P , int K>
using BVH::PartitionerT = std::function< std::array< PrimitiveListT< P >, K >(const PrimitiveListT< P > &a_primitives)>
 Polymorphic partitioner for splitting a list of primitives into K new lists of primitives. More...
 
template<class P , class BV >
using BVH::BVConstructorT = std::function< BV(const std::shared_ptr< const P > &a_primitive)>
 Constructor method for creating bounding volumes from a list of primitives. More...
 
- - - - -

-Enumerations

enum  BVH::Prune { Stack, -Ordered, -Unordered - }
 Typename for identifying algorithms various algorithms during tree traversel. More...
 
-

Detailed Description

-

Declaration of a bounding volume hierarchy (BVH) class.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.map deleted file mode 100644 index b6153461..00000000 --- a/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.md5 deleted file mode 100644 index 8188ed62..00000000 --- a/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8fa41ce1f250dfc0a21da0699c62f276 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.png deleted file mode 100644 index 66caec6d..00000000 Binary files a/docs/doxygen/html/EBGeometry__BVH_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.map b/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.map deleted file mode 100644 index 8f0819b1..00000000 --- a/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.md5 deleted file mode 100644 index 0784d754..00000000 --- a/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -825bfd5b7d1c6675c5f36c5aa8d7f86b \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.png b/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.png deleted file mode 100644 index 31e4586c..00000000 Binary files a/docs/doxygen/html/EBGeometry__BVH_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BVH_8hpp_source.html b/docs/doxygen/html/EBGeometry__BVH_8hpp_source.html deleted file mode 100644 index 562587f1..00000000 --- a/docs/doxygen/html/EBGeometry__BVH_8hpp_source.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BVH.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_BVH.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_BVH
13 #define EBGeometry_BVH
14 
15 // Std includes
16 #include <memory>
17 #include <vector>
18 #include <functional>
19 #include <queue>
20 
21 // Our includes
22 #include "EBGeometry_Vec.hpp"
24 
28 namespace BVH {
29 
35  template <class T, class P, class BV, int K>
36  class NodeT;
37 
43  template <class T, class P, class BV, int K>
44  class LinearNodeT;
45 
51  template <class T, class P, class BV, int K>
52  class LinearBVH;
53 
58  template <class P>
59  using PrimitiveListT = std::vector<std::shared_ptr<const P> >;
60 
68  template <class T, class P, class BV, int K>
69  using StopFunctionT = std::function<bool(const NodeT<T, P, BV, K>& a_node)>;
70 
77  template <class P, int K>
78  using PartitionerT = std::function<std::array<PrimitiveListT<P>, K>(const PrimitiveListT<P>& a_primitives)>;
79 
86  template <class P, class BV>
87  using BVConstructorT = std::function<BV(const std::shared_ptr<const P>& a_primitive)>;
88 
95  enum class Prune {
96  Stack,
97  Ordered,
98  Unordered,
99  };
100 
112  template <class T, class P, class BV, int K>
113  class NodeT {
114  public:
115 
120 
124  using Vec3 = Vec3T<T>;
125 
130 
134  using NodePtr = std::shared_ptr<Node>;
135 
140 
145 
150 
154  NodeT();
155 
161  NodeT(const std::vector<std::shared_ptr<P> >& a_primitives);
162 
168  NodeT(const std::vector<std::shared_ptr<const P> >& a_primitives);
169 
173  virtual ~NodeT();
174 
183  inline
184  void topDownSortAndPartitionPrimitives(const BVConstructor& a_bvConstructor,
185  const Partitioner& a_partitioner,
186  const StopFunction& a_stopCrit) noexcept;
187 
191  inline
192  bool isLeaf() const noexcept;
193 
198  inline
199  const PrimitiveList& getPrimitives() const noexcept;
200 
205  inline
206  const BV& getBoundingVolume() const noexcept;
207 
212  inline
213  const std::array<std::shared_ptr<NodeT<T, P, BV, K> >, K>& getChildren() const noexcept;
214 
220  inline
221  T signedDistance(const Vec3T<T>& a_point) const noexcept;
222 
229  inline
230  T signedDistance(const Vec3T<T>& a_point, const Prune a_pruning) const noexcept;
231 
236  inline
237  std::shared_ptr<LinearBVH<T, P, BV, K> > flattenTree() const noexcept;
238 
239  protected:
240 
244  BV m_boundingVolume;
245 
249  std::vector<std::shared_ptr<const P> > m_primitives;
250 
254  std::array<std::shared_ptr<NodeT<T, P, BV, K> >, K> m_children;
255 
260  inline
261  void insertChildren(const std::array<PrimitiveList, K>& a_primitives) noexcept;
262 
267  inline
268  void setPrimitives(const PrimitiveList& a_primitives) noexcept;
269 
275  inline
276  T getDistanceToBoundingVolume(const Vec3& a_point) const noexcept;
277 
283  inline
284  T getDistanceToPrimitives(const Vec3& a_point) const noexcept;
285 
290  inline
291  PrimitiveList& getPrimitives() noexcept;
292 
297  inline
298  T pruneStack(const Vec3& a_point) const noexcept;
299 
305  inline
306  void pruneOrdered(T& a_closest, const Vec3& a_point) const noexcept;
307 
313  inline
314  void pruneUnordered(T& a_closest, const Vec3& a_point) const noexcept;
315 
325  inline
326  unsigned long flattenTree(std::vector<std::shared_ptr<LinearNodeT<T, P, BV, K> > >& a_linearNodes,
327  std::vector<std::shared_ptr<const P> >& a_sortedPrimitives,
328  unsigned long& a_offset) const noexcept;
329  };
330 
351  template <class T, class P, class BV, int K>
352  class LinearNodeT {
353  public:
354 
358  using Vec3 = Vec3T<T>;
359 
363  inline
364  LinearNodeT();
365 
369  inline
370  virtual ~LinearNodeT();
371 
376  inline
377  void setBoundingVolume(const BV& a_boundingVolume) noexcept;
378 
382  inline
383  void setPrimitivesOffset(const unsigned long a_primitivesOffset) noexcept;
384 
389  inline
390  void setNumPrimitives(const int a_numPrimitives) noexcept;
391 
397  inline
398  void setChildOffset(const unsigned long a_childOffset, const int a_whichChild) noexcept;
399 
404  inline
405  const BV& getBoundingVolume() const noexcept;
406 
411  inline
412  const unsigned long& getPrimitivesOffset() const noexcept;
413 
418  inline
419  const unsigned long& getNumPrimitives() const noexcept;
420 
425  inline
426  const std::array<unsigned long, K>& getChildOffsets() const noexcept;
427 
431  inline
432  bool isLeaf() const noexcept;
433 
439  inline
440  T getDistanceToBoundingVolume(const Vec3& a_point) const noexcept;
441 
448  inline
449  T getDistanceToPrimitives(const Vec3& a_point, const std::vector<std::shared_ptr<const P> >& a_primitives) const noexcept;
450 
451  protected:
452 
456  BV m_boundingVolume;
457 
461  unsigned long m_primitivesOffset;
462 
466  int m_numPrimitives;
467 
471  std::array<unsigned long, K> m_childOffsets;
472  };
473 
477  template<class T, class P, class BV, int K>
478  class LinearBVH {
479  public:
480 
484  using Vec3 = Vec3T<T>;
485 
490 
494  using PrimitiveList = std::vector<std::shared_ptr<const P> >;
495 
499  LinearBVH() = delete;
500 
506  inline
507  LinearBVH(const std::vector<std::shared_ptr<const LinearNodeT<T, P, BV, K> > >& a_linearNodes,
508  const std::vector<std::shared_ptr<const P> >& a_primitives);
509 
515  inline
516  LinearBVH(const std::vector<std::shared_ptr<LinearNodeT<T, P, BV, K> > >& a_linearNodes,
517  const std::vector<std::shared_ptr<const P> >& a_primitives);
518 
522  inline
523  virtual ~LinearBVH();
524 
529  inline
530  T signedDistance(const Vec3& a_point) const noexcept;
531 
532  protected:
533 
537  std::vector<std::shared_ptr<const LinearNodeT<T, P, BV, K> > > m_linearNodes;
538 
542  std::vector<std::shared_ptr<const P> > m_primitives;
543  };
544 }
545 
547 
548 #include "EBGeometry_BVHImplem.hpp"
549 
550 #endif
Forward declare the BVH node since it is needed for the polymorphic lambdas.
Definition: EBGeometry_BVH.hpp:36
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
Forward declare linear node class.
Definition: EBGeometry_BVH.hpp:44
-
Namespace for various bounding volume heirarchy (BVH) functionality.
Definition: EBGeometry_BVH.hpp:28
-
Forward declare linear BVH class.
Definition: EBGeometry_BVH.hpp:52
-
std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > m_linearNodes
List of linearly stored nodes.
Definition: EBGeometry_BVH.hpp:537
-
BVConstructorT< P, BV > BVConstructor
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:149
-
std::shared_ptr< Node > NodePtr
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:134
-
PrimitiveListT< P > PrimitiveList
Alias for cutting down on typing. This is a std::vector<std::shared_ptr<const P> >.
Definition: EBGeometry_BVH.hpp:119
-
std::vector< std::shared_ptr< const P > > m_primitives
Global list of primitives. Note that this is ALL primitives, sorted so that LinearNodeT can interface...
Definition: EBGeometry_BVH.hpp:542
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
std::vector< std::shared_ptr< const P > > PrimitiveListT
Alias to cut down on typing.
Definition: EBGeometry_BVH.hpp:59
-
Implementation of EBGeometry_BVH.hpp.
-
Prune
Typename for identifying algorithms various algorithms during tree traversel.
Definition: EBGeometry_BVH.hpp:95
- -
StopFunctionT< T, P, BV, K > StopFunction
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:139
-
std::function< std::array< PrimitiveListT< P >, K >(const PrimitiveListT< P > &a_primitives)> PartitionerT
Polymorphic partitioner for splitting a list of primitives into K new lists of primitives.
Definition: EBGeometry_BVH.hpp:78
-
PartitionerT< P, K > Partitioner
Alias for cutting down on typing.
Definition: EBGeometry_BVH.hpp:144
-
std::function< BV(const std::shared_ptr< const P > &a_primitive)> BVConstructorT
Constructor method for creating bounding volumes from a list of primitives.
Definition: EBGeometry_BVH.hpp:87
-
std::function< bool(const NodeT< T, P, BV, K > &a_node)> StopFunctionT
Stop function for deciding when a BVH node can&#39;t be divided into sub-volumes.
Definition: EBGeometry_BVH.hpp:69
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp.html b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp.html deleted file mode 100644 index 89ad85b4..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BoundingVolumesImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_BoundingVolumesImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_BoundingVolumes.hpp. -More...

-
#include <iostream>
-#include "EBGeometry_BoundingVolumes.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-
-Include dependency graph for EBGeometry_BoundingVolumesImplem.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 BoundingVolumes
 Namespace for encapsulating various bounding volumes for usage with BVHs.
 
- - - - - - - - - - - - - - - - - -

-Functions

template<class T >
bool BoundingVolumes::intersects (const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
 Intersection method for testing if two bounding spheres overlap. More...
 
template<class T >
bool BoundingVolumes::intersects (const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept
 Intersection method for testing if two bounding boxes overlap. More...
 
template<class T >
BoundingVolumes::getOverlappingVolume (const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
 Compute the overlapping volume between two bounding spheres. More...
 
template<class T >
BoundingVolumes::getOverlappingVolume (const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept
 Compute the overlapping volume between two bounding boxes. More...
 
-

Detailed Description

-

Implementation of EBGeometry_BoundingVolumes.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.map deleted file mode 100644 index 1ca9769f..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 699eb02a..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -184abf2d733090a02fa7a47133c87a6d \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.png deleted file mode 100644 index c342c49c..00000000 Binary files a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.map deleted file mode 100644 index f0ab3ddd..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.md5 deleted file mode 100644 index 9abbfc0b..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fe93105b5e99b9032b82c7c17ebb7d03 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.png deleted file mode 100644 index 192d441f..00000000 Binary files a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp_source.html deleted file mode 100644 index f0bebb1e..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumesImplem_8hpp_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BoundingVolumesImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_BoundingVolumesImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_BoundingVolumesImplem
13 #define EBGeometry_BoundingVolumesImplem
14 
15 // Std includes
16 #include <iostream>
17 
18 //Our includes
21 
22 namespace BoundingVolumes {
23 
24  template <class T>
25  inline
27  m_radius = 0.0;
28  m_center = Vec3::zero();
29  }
30 
31  template <class T>
32  inline
33  BoundingSphereT<T>::BoundingSphereT(const Vec3T<T>& a_center, const T& a_radius){
34  m_center = a_center;
35  m_radius = a_radius;
36  }
37 
38  template <class T>
40  m_radius = a_other.m_radius;
41  m_center = a_other.m_center;
42  }
43 
44  template <class T>
45  BoundingSphereT<T>::BoundingSphereT(const std::vector<BoundingSphereT<T> >& a_otherSpheres) {
46 
47  // TLDR: Spheres enclosing other spheres is a difficult problem, but a sphere enclosing a set of points is simpler. For each
48  // input sphere we create a set of points representing the lo/hicorners of an axis-aligned bounding box that encloses the sphere.
49  // We then compute the bounding sphere from this set of points.
50  std::vector<Vec3T<T> > points;
51  for (const auto& sphere : a_otherSpheres){
52  const T& radius = sphere.getRadius();
53  const Vec3T<T>& center = sphere.getCentroid();
54 
55  points.emplace_back(center + radius*Vec3T<T>::one());
56  points.emplace_back(center - radius*Vec3T<T>::one());
57  }
58 
60  }
61 
62  template <class T>
63  template <class P>
64  BoundingSphereT<T>::BoundingSphereT(const std::vector<Vec3T<P> >& a_points, const BoundingVolumeAlgorithm& a_algorithm){
65  this->define(a_points, a_algorithm);
66  }
67 
68  template <class T>
70 
71  }
72 
73  template <class T>
74  template <class P>
75  inline
76  void BoundingSphereT<T>::define(const std::vector<Vec3T<P> >& a_points, const BoundingVolumeAlgorithm& a_algorithm) noexcept {
77  switch(a_algorithm) {
78  case BoundingVolumeAlgorithm::Ritter:
79  this->buildRitter(a_points);
80  break;
81  default:
82  std::cerr << "BoundingSphereT::define - unsupported algorithm requested\n";
83  }
84  }
85 
86  template <class T>
87  inline
88  bool BoundingSphereT<T>::intersects(const BoundingSphereT& a_other) const noexcept {
89  const Vec3 deltaV = m_center - a_other.getCentroid();
90  const T sumR = m_radius + a_other.getRadius();
91 
92  return deltaV.dot(deltaV) < sumR*sumR;
93  }
94 
95  template <class T>
96  inline
98  return (m_radius);
99  }
100 
101  template <class T>
102  inline
103  const T& BoundingSphereT<T>::getRadius() const noexcept {
104  return (m_radius);
105  }
106 
107  template <class T>
108  inline
110  return (m_center);
111  }
112 
113  template <class T>
114  inline
115  const Vec3T<T>& BoundingSphereT<T>::getCentroid() const noexcept {
116  return (m_center);
117  }
118 
119  template <class T>
120  template <class P>
121  inline
122  void BoundingSphereT<T>::buildRitter(const std::vector<Vec3T<P> >& a_points) noexcept {
123  m_radius = 0.0;
124  m_center = Vec3::zero();
125 
126  constexpr T half = 0.5;
127 
128  constexpr int DIM = 3;
129 
130  // INITIAL PASS
131  std::vector<Vec3> min_coord(DIM, a_points[0]); // [0] = Minimum x, [1] = Minimum y, [2] = Minimum z
132  std::vector<Vec3> max_coord(DIM, a_points[0]);
133 
134  for (int i = 1; i < a_points.size(); i++){
135  for (int dir = 0; dir < DIM; dir++){
136  Vec3& min = min_coord[dir];
137  Vec3& max = max_coord[dir];
138 
139  if(a_points[i][dir] < min[dir]){
140  min = a_points[i];
141  }
142  if(a_points[i][dir] > max[dir]){
143  max = a_points[i];
144  }
145  }
146  }
147 
148  T dist = -1;
149  Vec3 p1,p2;
150  for (int dir = 0; dir < DIM; dir++){
151  const T len = (max_coord[dir]-min_coord[dir]).length();
152  if(len > dist ){
153  dist = len;
154  p1 = min_coord[dir];
155  p2 = max_coord[dir];
156  }
157  }
158 
159  // m_center = half*(p1+p2);
160  m_center = (p1+p2)*half;
161  m_radius = half*(p2-p1).length();
162 
163 
164  // SECOND PASS
165  for (int i = 0; i < a_points.size(); i++){
166  const T dist = (a_points[i]-m_center).length() - m_radius;
167  if(dist > 0){ // Point lies outside
168  const Vec3 v = a_points[i] - m_center;
169  const Vec3 p1 = a_points[i];
170  const Vec3 p2 = m_center - m_radius*v/v.length();
171 
172  m_center = half*(p2+p1);
173  m_radius = half*(p2-p1).length();
174  }
175  }
176 
177  // Ritter algorithm is very coarse and does not give an exact result anyways. Grow the dimension for safety.
178  m_radius *= (1.0 + 1E-2);
179  }
180 
181  template <class T>
182  inline
184  constexpr T zero = 0.0;
185 
186  T retval = zero;
187 
188  if(this->intersects(a_other)){
189  const auto& r1 = m_radius;
190  const auto& r2 = a_other.getRadius();
191 
192  const auto d = (m_center-a_other.getCentroid()).length();
193 
194  retval = M_PI/(12.*d) * (r1+r2-d)*(r1+r2-d) * (d*d + 2*d*(r1+r2) - 3*(r1-r2)*(r1-r2));
195  }
196 
197  return retval;
198  }
199 
200  template <class T>
201  inline
202  T BoundingSphereT<T>::getDistance(const Vec3& a_x0) const noexcept {
203  constexpr T zero = 0.0;
204 
205  return std::max(zero, (a_x0-m_center).length() - m_radius);
206  }
207 
208  template <class T>
209  inline
210  T BoundingSphereT<T>::getVolume() const noexcept {
211  return 4.*M_PI*m_radius*m_radius*m_radius/3.0;
212  }
213 
214  template <class T>
215  inline
216  T BoundingSphereT<T>::getArea() const noexcept {
217  return T(4.*M_PI*m_radius*m_radius);
218  }
219 
220  template <class T>
222  m_loCorner = Vec3::zero();
223  m_hiCorner = Vec3::zero();
224  }
225 
226  template <class T>
227  AABBT<T>::AABBT(const Vec3T<T>& a_lo, const Vec3T<T>& a_hi){
228  m_loCorner = a_lo;
229  m_hiCorner = a_hi;
230  }
231 
232  template <class T>
233  AABBT<T>::AABBT(const AABBT<T>& a_other){
234  m_loCorner = a_other.m_loCorner;
235  m_hiCorner = a_other.m_hiCorner;
236  }
237 
238  template <class T>
239  AABBT<T>::AABBT(const std::vector<AABBT<T> >& a_others) {
240  m_loCorner = a_others.front().getLowCorner();
241  m_hiCorner = a_others.front().getHighCorner();
242 
243  for (const auto& other : a_others){
244  m_loCorner = min(m_loCorner, other.getLowCorner());
245  m_hiCorner = max(m_hiCorner, other.getHighCorner());
246  }
247  }
248 
249  template <class T>
250  template <class P>
251  AABBT<T>::AABBT(const std::vector<Vec3T<P> >& a_points){
252  this->define(a_points);
253  }
254 
255  template <class T>
257 
258  }
259 
260  template <class T>
261  template <class P>
262  inline
263  void AABBT<T>::define(const std::vector<Vec3T<P> >& a_points) noexcept {
264  m_loCorner = a_points.front();
265  m_hiCorner = a_points.front();
266 
267  for (const auto& p : a_points){
268  m_loCorner = min(m_loCorner, p);
269  m_hiCorner = max(m_hiCorner, p);
270  }
271  }
272 
273  template <class T>
274  inline
275  bool AABBT<T>::intersects(const AABBT& a_other) const noexcept {
276  const Vec3& otherLo = a_other.getLowCorner();
277  const Vec3& otherHi = a_other.getHighCorner();
278 
279  return (m_loCorner[0] < otherHi[0] && m_hiCorner[0] > otherLo[0]) &&
280  (m_loCorner[1] < otherHi[1] && m_hiCorner[1] > otherLo[1]) &&
281  (m_loCorner[2] < otherHi[2] && m_hiCorner[2] > otherLo[2]);
282  }
283 
284  template <class T>
285  inline
287  return (m_loCorner);
288  }
289 
290  template <class T>
291  inline
292  const Vec3T<T>& AABBT<T>::getLowCorner() const noexcept {
293  return (m_loCorner);
294  }
295 
296  template <class T>
297  inline
299  return (m_hiCorner);
300  }
301 
302  template <class T>
303  inline
304  const Vec3T<T>& AABBT<T>::getHighCorner() const noexcept {
305  return (m_hiCorner);
306  }
307 
308  template <class T>
309  inline
310  Vec3T<T> AABBT<T>::getCentroid() const noexcept {
311  constexpr T half = T(0.5);
312 
313  return half * (m_loCorner + m_hiCorner);
314  }
315 
316  template <class T>
317  inline
318  T AABBT<T>::getOverlappingVolume(const AABBT<T>& a_other) const noexcept {
319  constexpr T zero = 0.0;
320 
321  T ret = 1.0;
322 
323  for (int dir = 0; dir < 3; dir++){
324  const auto xL = m_loCorner[dir];
325  const auto xH = m_hiCorner[dir];
326 
327  const auto yL = a_other.m_loCorner[dir];
328  const auto yH = a_other.m_hiCorner[dir];
329 
330  const auto delta = std::max(zero, std::min(xH, yH) - std::max(xL, yL));
331 
332  ret *= delta;
333  }
334 
335  return ret;
336  }
337 
338  template <class T>
339  inline
340  T AABBT<T>::getDistance(const Vec3& a_point) const noexcept {
341  constexpr T zero = 0.0;
342 
343  const Vec3 delta = Vec3(std::max(m_loCorner[0] - a_point[0], a_point[0] - m_hiCorner[0]),
344  std::max(m_loCorner[1] - a_point[1], a_point[1] - m_hiCorner[1]),
345  std::max(m_loCorner[2] - a_point[2], a_point[2] - m_hiCorner[2]));
346 
347  const T retval = std::max(zero, max(Vec3::zero(), delta).length());
348 
349  return retval;
350  }
351 
352  template <class T>
353  inline
354  T AABBT<T>::getVolume() const noexcept {
355  const auto delta = m_hiCorner-m_loCorner;
356 
357  T ret = 1.0;
358  for (int dir = 0; dir < 3; dir++){
359  ret *= delta[dir];
360  }
361 
362  return ret;
363  }
364 
365  template <class T>
366  inline
367  T AABBT<T>::getArea() const noexcept {
368  constexpr int DIM = 3;
369 
370  T ret = 0.0;
371 
372  const auto delta = m_hiCorner - m_loCorner;
373 
374  for (int dir = 0; dir < DIM; dir++){
375  const int otherDir1 = (dir+1)%DIM;
376  const int otherDir2 = (dir+2)%DIM;
377 
378  ret += 2.0*delta[otherDir1]*delta[otherDir2];
379  }
380 
381  return ret;
382  }
383 
384  template <class T>
385  bool intersects(const BoundingSphereT<T>& u, const BoundingSphereT<T>& v) noexcept {
386  return u.intersects(v);
387  }
388 
389  template <class T>
390  bool intersects(const AABBT<T>& u, const AABBT<T>& v) noexcept {
391  return u.intersects(v);
392  }
393 
394  template <class T>
396  return u.getOverlappingVolume(v);
397  }
398 
399  template <class T>
400  T getOverlappingVolume(const AABBT<T>& u, const AABBT<T>& v) noexcept {
401  return u.getOverlappingVolume(v);
402  }
403 }
404 
406 
407 #endif
Vec3 getCentroid() const noexcept
Get bounding volume centroid.
Definition: EBGeometry_BoundingVolumesImplem.hpp:310
-
Class which encloses a set of points using a bounding sphere.
Definition: EBGeometry_BoundingVolumes.hpp:32
-
bool intersects(const AABBT &a_other) const noexcept
Check if this AABB intersects another AABB.
Definition: EBGeometry_BoundingVolumesImplem.hpp:275
-
Vec3 m_hiCorner
Upper-right corner of bounding box.
Definition: EBGeometry_BoundingVolumes.hpp:313
-
T & getRadius() noexcept
Get modifiable radius for this sphere.
Definition: EBGeometry_BoundingVolumesImplem.hpp:97
-
T getVolume() const noexcept
Compute the bounding box volume.
Definition: EBGeometry_BoundingVolumesImplem.hpp:354
-
Vec3T< T > & getHighCorner() noexcept
Get the modifiable upper-right corner of the AABB.
Definition: EBGeometry_BoundingVolumesImplem.hpp:298
-
AABBT()
Default constructor (does nothing)
Definition: EBGeometry_BoundingVolumesImplem.hpp:221
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
Declaration of a various bounding volumes used for bounding volume hierarchy.
-
Axis-aligned bounding box as bounding volume.
Definition: EBGeometry_BoundingVolumes.hpp:184
-
BoundingSphereT()
Default constructor. Leaves object in undefined state.
Definition: EBGeometry_BoundingVolumesImplem.hpp:26
-
Vec3 & getCentroid() noexcept
Get modifiable center for this sphere.
Definition: EBGeometry_BoundingVolumesImplem.hpp:109
-
T getDistance(const Vec3 &a_x0) const noexcept
Get the distance to this AABB (points inside the bounding box have a zero distance) ...
Definition: EBGeometry_BoundingVolumesImplem.hpp:340
-
T getArea() const noexcept
Compute the bounding box area.
Definition: EBGeometry_BoundingVolumesImplem.hpp:367
-
virtual ~AABBT()
Destructor (does nothing)
Definition: EBGeometry_BoundingVolumesImplem.hpp:256
-
Vec3T< T > & getLowCorner() noexcept
Get the modifiable lower-left corner of the AABB.
Definition: EBGeometry_BoundingVolumesImplem.hpp:286
-
bool intersects(const BoundingSphereT &a_other) const noexcept
Check if this bounding sphere intersect another bounding sphere.
Definition: EBGeometry_BoundingVolumesImplem.hpp:88
-
T dot(const Vec3T< T > &u) const noexcept
Vector dot product.
Definition: EBGeometry_VecImplem.hpp:438
-
BoundingVolumeAlgorithm
Typename for possible algorithms that support the computation of a bounding sphere for a set of 3D po...
Definition: EBGeometry_BoundingVolumes.hpp:38
-
T m_radius
Sphere radius.
Definition: EBGeometry_BoundingVolumes.hpp:163
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Namespace for encapsulating various bounding volumes for usage with BVHs.
Definition: EBGeometry_BoundingVolumes.hpp:25
-
void buildRitter(const std::vector< Vec3T< P > > &a_points) noexcept
Template function which computes the bounding sphere for a set of points (mixed precision allowed) us...
Definition: EBGeometry_BoundingVolumesImplem.hpp:122
-
void define(const std::vector< Vec3T< P > > &a_points) noexcept
Define function (since mixed precision allowed) which sets this AABB such that it encloses a set of 3...
Definition: EBGeometry_BoundingVolumesImplem.hpp:263
-
T getOverlappingVolume(const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
Compute the overlapping volume between two bounding spheres.
Definition: EBGeometry_BoundingVolumesImplem.hpp:395
-
T getVolume() const noexcept
Get the sphere volume.
Definition: EBGeometry_BoundingVolumesImplem.hpp:210
-
T getOverlappingVolume(const BoundingSphereT< T > &a_other) const noexcept
Compute the overlapping volume between this bounding sphere and another.
Definition: EBGeometry_BoundingVolumesImplem.hpp:183
-
virtual ~BoundingSphereT()
Destructor (does nothing).
Definition: EBGeometry_BoundingVolumesImplem.hpp:69
-
T length() const noexcept
Compute vector length.
Definition: EBGeometry_VecImplem.hpp:444
-
void define(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg) noexcept
Template define function which takes a set of 3D points (mixed precision allowed).
Definition: EBGeometry_BoundingVolumesImplem.hpp:76
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
-
T getArea() const noexcept
Get the sphere area.
Definition: EBGeometry_BoundingVolumesImplem.hpp:216
- -
Vec3 m_center
Sphere center.
Definition: EBGeometry_BoundingVolumes.hpp:168
-
T getDistance(const Vec3 &a_x0) const noexcept
Get the distance to this bounding sphere (points inside the sphere have a zero distance) ...
Definition: EBGeometry_BoundingVolumesImplem.hpp:202
-
T getOverlappingVolume(const AABBT< T > &a_other) const noexcept
Compute the overlapping volume between this AABB and another AABB.
Definition: EBGeometry_BoundingVolumesImplem.hpp:318
-
bool intersects(const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
Intersection method for testing if two bounding spheres overlap.
Definition: EBGeometry_BoundingVolumesImplem.hpp:385
-
Vec3 m_loCorner
Lower-left corner of bounding box.
Definition: EBGeometry_BoundingVolumes.hpp:308
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp.html b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp.html deleted file mode 100644 index 38d26ce1..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BoundingVolumes.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_BoundingVolumes.hpp File Reference
-
-
- -

Declaration of a various bounding volumes used for bounding volume hierarchy. -More...

-
-Include dependency graph for EBGeometry_BoundingVolumes.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

class  BoundingVolumes::BoundingSphereT< T >
 Class which encloses a set of points using a bounding sphere. More...
 
class  BoundingVolumes::AABBT< T >
 Axis-aligned bounding box as bounding volume. More...
 
- - - - -

-Namespaces

 BoundingVolumes
 Namespace for encapsulating various bounding volumes for usage with BVHs.
 
- - - - - - - - - - - - - - - - - -

-Functions

template<class T >
bool BoundingVolumes::intersects (const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
 Intersection method for testing if two bounding spheres overlap. More...
 
template<class T >
bool BoundingVolumes::intersects (const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept
 Intersection method for testing if two bounding boxes overlap. More...
 
template<class T >
BoundingVolumes::getOverlappingVolume (const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
 Compute the overlapping volume between two bounding spheres. More...
 
template<class T >
BoundingVolumes::getOverlappingVolume (const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept
 Compute the overlapping volume between two bounding boxes. More...
 
-

Detailed Description

-

Declaration of a various bounding volumes used for bounding volume hierarchy.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.map deleted file mode 100644 index 3656e89a..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.md5 deleted file mode 100644 index 4f2dd9ae..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -397fe9179bab7d11cf52bff0accedded \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.png deleted file mode 100644 index 59951958..00000000 Binary files a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.map b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.map deleted file mode 100644 index 0b440ef2..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.md5 deleted file mode 100644 index 1e968b4a..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5e2a037a2f3c61338c7c91070fe20034 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.png b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.png deleted file mode 100644 index a00c1d53..00000000 Binary files a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp_source.html b/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp_source.html deleted file mode 100644 index e51eb8ed..00000000 --- a/docs/doxygen/html/EBGeometry__BoundingVolumes_8hpp_source.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_BoundingVolumes.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_BoundingVolumes.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_BoundingVolumes_H
13 #define EBGeometry_BoundingVolumes_H
14 
15 // Std includes
16 #include <vector>
17 
18 // Our includes
19 #include "EBGeometry_Vec.hpp"
21 
25 namespace BoundingVolumes {
26 
31  template <class T>
33  public:
34 
39  Ritter,
40  };
41 
45  using Vec3 = Vec3T<T>;
46 
51 
57  BoundingSphereT(const Vec3T<T>& a_center, const T& a_radius);
58 
63  BoundingSphereT(const std::vector<BoundingSphereT<T> >& a_otherSpheres);
64 
69  BoundingSphereT(const BoundingSphereT& a_other);
70 
74  virtual ~BoundingSphereT();
75 
83  template <class P>
84  BoundingSphereT(const std::vector<Vec3T<P> >& a_points, const BoundingVolumeAlgorithm& a_alg = BoundingVolumeAlgorithm::Ritter);
85 
92  template <class P>
93  inline
94  void define(const std::vector<Vec3T<P> >& a_points, const BoundingVolumeAlgorithm& a_alg) noexcept;
95 
101  inline
102  bool intersects(const BoundingSphereT& a_other) const noexcept;
103 
107  inline
108  T& getRadius() noexcept;
109 
113  inline
114  const T& getRadius() const noexcept;
115 
119  inline
120  Vec3& getCentroid() noexcept;
121 
125  inline
126  const Vec3& getCentroid() const noexcept;
127 
133  inline
134  T getOverlappingVolume(const BoundingSphereT<T>& a_other) const noexcept;
135 
141  inline
142  T getDistance(const Vec3& a_x0) const noexcept;
143 
148  inline
149  T getVolume() const noexcept;
150 
155  inline
156  T getArea() const noexcept;
157 
158  protected:
159 
164 
169 
173  template <class P>
174  inline
175  void buildRitter(const std::vector<Vec3T<P> >& a_points) noexcept;
176  };
177 
183  template <class T>
184  class AABBT {
185  public:
186 
190  using Vec3 = Vec3T<T>;
191 
195  AABBT();
196 
202  AABBT(const Vec3T<T>& a_lo, const Vec3T<T>& a_hi);
203 
208  AABBT(const AABBT& a_other);
209 
214  AABBT(const std::vector<AABBT<T> >& a_others);
215 
219  virtual ~AABBT();
220 
226  template <class P>
227  AABBT(const std::vector<Vec3T<P> >& a_points);
228 
233  template <class P>
234  inline
235  void define(const std::vector<Vec3T<P> >& a_points) noexcept;
236 
242  inline
243  bool intersects(const AABBT& a_other) const noexcept;
244 
248  inline
249  Vec3T<T>& getLowCorner() noexcept;
250 
254  inline
255  const Vec3T<T>& getLowCorner() const noexcept;
256 
260  inline
261  Vec3T<T>& getHighCorner() noexcept;
262 
266  inline
267  const Vec3T<T>& getHighCorner() const noexcept;
268 
272  inline
273  Vec3 getCentroid() const noexcept;
274 
280  inline
281  T getOverlappingVolume(const AABBT<T>& a_other) const noexcept;
282 
288  inline
289  T getDistance(const Vec3& a_x0) const noexcept;
290 
294  inline
295  T getVolume() const noexcept;
296 
300  inline
301  T getArea() const noexcept;
302 
303  protected:
304 
308  Vec3 m_loCorner;
309 
313  Vec3 m_hiCorner;
314  };
315 
321  template <class T>
322  bool intersects(const BoundingSphereT<T>& a_u, const BoundingSphereT<T>& a_v) noexcept;
323 
329  template <class T>
330  bool intersects(const AABBT<T>& a_u, const AABBT<T>& a_v) noexcept;
331 
337  template <class T>
338  T getOverlappingVolume(const BoundingSphereT<T>& a_u, const BoundingSphereT<T>& a_v) noexcept;
339 
345  template <class T>
346  T getOverlappingVolume(const AABBT<T>& a_u, const AABBT<T>& a_v) noexcept;
347 }
348 
349 #include "EBGeometry_NamespaceFooter.hpp"
350 
352 
353 #endif
Class which encloses a set of points using a bounding sphere.
Definition: EBGeometry_BoundingVolumes.hpp:32
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
T & getRadius() noexcept
Get modifiable radius for this sphere.
Definition: EBGeometry_BoundingVolumesImplem.hpp:97
-
Axis-aligned bounding box as bounding volume.
Definition: EBGeometry_BoundingVolumes.hpp:184
-
BoundingSphereT()
Default constructor. Leaves object in undefined state.
Definition: EBGeometry_BoundingVolumesImplem.hpp:26
-
Vec3 & getCentroid() noexcept
Get modifiable center for this sphere.
Definition: EBGeometry_BoundingVolumesImplem.hpp:109
-
Implementation of EBGeometry_BoundingVolumes.hpp.
-
bool intersects(const BoundingSphereT &a_other) const noexcept
Check if this bounding sphere intersect another bounding sphere.
Definition: EBGeometry_BoundingVolumesImplem.hpp:88
-
BoundingVolumeAlgorithm
Typename for possible algorithms that support the computation of a bounding sphere for a set of 3D po...
Definition: EBGeometry_BoundingVolumes.hpp:38
-
T m_radius
Sphere radius.
Definition: EBGeometry_BoundingVolumes.hpp:163
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Namespace for encapsulating various bounding volumes for usage with BVHs.
Definition: EBGeometry_BoundingVolumes.hpp:25
-
void buildRitter(const std::vector< Vec3T< P > > &a_points) noexcept
Template function which computes the bounding sphere for a set of points (mixed precision allowed) us...
Definition: EBGeometry_BoundingVolumesImplem.hpp:122
-
T getVolume() const noexcept
Get the sphere volume.
Definition: EBGeometry_BoundingVolumesImplem.hpp:210
-
T getOverlappingVolume(const BoundingSphereT< T > &a_other) const noexcept
Compute the overlapping volume between this bounding sphere and another.
Definition: EBGeometry_BoundingVolumesImplem.hpp:183
-
virtual ~BoundingSphereT()
Destructor (does nothing).
Definition: EBGeometry_BoundingVolumesImplem.hpp:69
-
void define(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg) noexcept
Template define function which takes a set of 3D points (mixed precision allowed).
Definition: EBGeometry_BoundingVolumesImplem.hpp:76
-
T getArea() const noexcept
Get the sphere area.
Definition: EBGeometry_BoundingVolumesImplem.hpp:216
- -
Vec3 m_center
Sphere center.
Definition: EBGeometry_BoundingVolumes.hpp:168
-
T getDistance(const Vec3 &a_x0) const noexcept
Get the distance to this bounding sphere (points inside the sphere have a zero distance) ...
Definition: EBGeometry_BoundingVolumesImplem.hpp:202
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp.html b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp.html deleted file mode 100644 index 3ff19dd3..00000000 --- a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelBVH.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelBVH.hpp File Reference
-
-
- -

File which contains partitioners and lambdas for enclosing dcel_face in bounding volume heirarchies. -More...

-
-Include dependency graph for EBGeometry_DcelBVH.hpp:
-
-
- - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
- - - - - -

-Typedefs

-template<class T >
using Dcel::PrimitiveList = std::vector< std::shared_ptr< const Dcel::FaceT< T > > >
 Alias for which primitives are used in the BVH. For DCEL meshes the primitive is a polygon face.
 
- - - - - - - - - - - - - - - - - - - - -

-Variables

-constexpr int Dcel::primitivesPerLeafNode = 1
 This is the lowest number of a primitives that a BVH node is allowed to enclose.
 
template<class T , class BV >
BVH::BVConstructorT< FaceT< T >, BV > Dcel::defaultBVConstructor
 Bounding volume constructor for a DCEL face. More...
 
template<class T , class BV , int K>
BVH::StopFunctionT< T, FaceT< T >, BV, K > Dcel::defaultStopFunction
 Default stop function. This function terminates the division process if a BVH node has only one primitive. More...
 
template<class T , int K>
BVH::PartitionerT< FaceT< T >, K > Dcel::spatialSplitPartitioner
 Default partitioner function for subdividing into K sub-volumes. More...
 
template<class T , int K>
BVH::PartitionerT< FaceT< T >, K > Dcel::spatialSplitBinaryPartitioner
 Binary partitioner based on spatial splits. More...
 
-

Detailed Description

-

File which contains partitioners and lambdas for enclosing dcel_face in bounding volume heirarchies.

-

This file contains various useful "default" routines for determining how a DCEL mesh should be partitioned in a bounding volume hierarchy. This includes the required functions for 1) Constructing bounding volumes (defaultBVConstructor). 2) Stopping the sub-division process (defaultStopFunction) 3) Partitioning one bounding volume into subvolumes. These are the functions a) defaultPartitionFunction(...). This partitions the primitives into two half-spaces based on where the primitive centroids are located. b) partitionMinimumOverlap(...). This splist the primitive list down the middle (ignoring centroids and element size) and selects the splitting direction where the sub-bounding volumes have the smallest overlap. 3) partitionSAH(...). This implements the common "surface area heuristic" rule for constructing bounding volumes.

Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.map deleted file mode 100644 index 15269f2e..00000000 --- a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.md5 deleted file mode 100644 index 8f863618..00000000 --- a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -10d3dcab0c3a1168e859fec2400d48bf \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.png deleted file mode 100644 index a45ae24c..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.map deleted file mode 100644 index 6d4eae0b..00000000 --- a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.map +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.md5 deleted file mode 100644 index 067e0393..00000000 --- a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ef28be38ced0eb4705af2cfc94dfc3a3 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.png deleted file mode 100644 index 0cbade4a..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelBVH_8hpp_source.html deleted file mode 100644 index ed94cd32..00000000 --- a/docs/doxygen/html/EBGeometry__DcelBVH_8hpp_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelBVH.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelBVH.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
21 #ifndef EBGeometry_DcelBVH
22 #define EBGeometry_DcelBVH
23 
24 // Our includes
25 #include "EBGeometry_BVH.hpp"
26 #include "EBGeometry_DcelFace.hpp"
28 
29 namespace Dcel {
30 
34  constexpr int primitivesPerLeafNode = 1;
35 
39  template <class T>
40  using PrimitiveList = std::vector<std::shared_ptr<const Dcel::FaceT<T> > >;
41 
49  template <class T, class BV>
50  BVH::BVConstructorT<FaceT<T>, BV> defaultBVConstructor = [](const std::shared_ptr<const FaceT<T> >& a_primitive){
51  return BV(a_primitive->getAllVertexCoordinates());
52  };
53 
61  template <class T, class BV, int K>
63  const auto& primitives = a_node.getPrimitives();
64  const int numPrims = primitives.size();
65 
66  return numPrims <= primitivesPerLeafNode || numPrims < K;
67  };
68 
74  template <class T, int K>
76 
77  const int numPrimitives = a_primitives.size();
78 
79  if(numPrimitives < K){
80  std::cerr << "In file EBGeometry_DcelBVH.H function BVH::PartitionerT<FaceT<T>, K>::spatialSplitPartitioner -- not enough primitives to subdivide into subvolumes\n";
81  }
82 
83  // Compute the coordinate direction with the longest extent. This will be our splitting direction.
84  auto lo = Vec3T<T>::max();
85  auto hi = Vec3T<T>::min();
86  for (const auto& p : a_primitives){
87  lo = min(lo, p->getCentroid());
88  hi = max(hi, p->getCentroid());
89  }
90  const auto delta = (hi-lo);
91  const int splitDir = delta.maxDir(true);
92 
93  // Sort the primitives along the above coordinate direction.
94  PrimitiveList<T> sortedPrimitives(a_primitives);
95 
96  std::sort(sortedPrimitives.begin(), sortedPrimitives.end(),
97  [=](const std::shared_ptr<const FaceT<T> >& f1,
98  const std::shared_ptr<const FaceT<T> >& f2) -> bool {
99  return f1->getCentroid(splitDir) < f2->getCentroid(splitDir);
100  });
101 
102 
103  // Figure out the indices in the vector where we do the splits.
104  const int almostEqualChunkSize = numPrimitives / K;
105  int remainder = numPrimitives % K;
106 
107  std::array<int, K> startIndices;
108  std::array<int, K> endIndices;
109 
110  startIndices[0] = 0;
111  endIndices [K-1] = numPrimitives;
112 
113  for (int i = 1; i < K; i++){
114  startIndices[i] = startIndices[i-1] + almostEqualChunkSize;
115 
116  if(remainder > 0){
117  startIndices[i]++;
118  remainder--;
119  }
120  }
121  for (int i = 0; i < K-1; i++){
122  endIndices[i] = startIndices[i+1];
123  }
124 
125 
126  // Put the primitives in separate lists and return them back to the BVH node.
127  std::array<PrimitiveList<T>, K> subVolumePrimitives;
128  for (int i = 0; i < K; i++){
129  typename PrimitiveList<T>::const_iterator first = sortedPrimitives.begin() + startIndices[i];
130  typename PrimitiveList<T>::const_iterator last = sortedPrimitives.begin() + endIndices [i];
131 
132  subVolumePrimitives[i] = PrimitiveList<T>(first, last);
133  }
134 
135  // Return as we must.
136  return subVolumePrimitives;
137  };
138 
144  template <class T, int K>
146  const int numPrimitives = a_primitives.size();
147 
148  if(numPrimitives < K){
149  std::cerr << "In file EBGeometry_DcelBVH.H function BVH::PartitionerT<FaceT<T>, K>::spatialSplitBinaryPartitioner -- not enough primitives to subdivide into subvolumes\n";
150  }
151 
152  // Error -- this is a binary partitioner!
153  constexpr bool isPowerOfTwo = (K > 0) && ((K & (K-1)) == 0);
154  if(!isPowerOfTwo){
155  std::cerr << "In file EBGeometry_DcelBVH.H function BVH::PartitionerT<FaceT<T>, K>::spatialSplitBinaryPartitioner -- template parameter K is not a factor of 2!!!";
156  }
157 
158  // Initialize the list of subvolumes.
159  std::vector<PrimitiveList<T> > subVolumeList(1);
160  subVolumeList[0] = a_primitives;
161 
162  int numSubVolumes = 1;
163  while (numSubVolumes < K){
164 
165  std::vector<PrimitiveList<T> > newSubVolumeList(0);
166  for (const auto& subVolume : subVolumeList){
167  const std::array<PrimitiveList<T>, 2>& binarySplit = spatialSplitPartitioner<T, 2>(subVolume);
168 
169  newSubVolumeList.push_back(binarySplit[0]);
170  newSubVolumeList.push_back(binarySplit[1]);
171  }
172 
173  subVolumeList = newSubVolumeList;
174 
175  numSubVolumes *= 2;
176  }
177 
178  // We have a vector but need an array:
179  std::array<PrimitiveList<T>, K> subVolumePrimitives;
180  for (int i = 0; i < K; i++){
181  subVolumePrimitives[i] = subVolumeList[i];
182  }
183 
184  return subVolumePrimitives;
185  };
186 
194  // template <class T, class BV>
195  // BVH::PartitionFunctionT<FaceT<T> > partitionMinimumOverlap = [](const PrimitiveList<T>& a_primitives){
196  // constexpr int DIM = 3;
197 
198  // // Always split the input primitives down the middle.
199  // const int splitIndex = (a_primitives.size() - 1)/2;
200 
201  // // This is the smallest volumetric overlap so far.
202  // T minOverlap = std::numeric_limits<T>::infinity();
203 
204  // // This is the return list.
205  // std::pair<PrimitiveList<T>, PrimitiveList<T> > ret;
206 
207  // // For each coordinate direction, sort the primitives along the coordinate and compute the bounding volumes
208  // for (int dir = 0; dir < DIM; dir++){
209 
210  // PrimitiveList<T> sortedPrims(a_primitives);
211  // std::sort(sortedPrims.begin(), sortedPrims.end(),
212  // [=](const std::shared_ptr<const FaceT<T> >& f1, const std::shared_ptr<const FaceT<T> >& f2){
213  // return f1->getCentroid(dir) < f2->getCentroid(dir);
214  // });
215 
216  // // Put the sorted primitives into separate lists
217  // PrimitiveList<T> lPrims(sortedPrims.begin(), sortedPrims.begin() + splitIndex+1);
218  // PrimitiveList<T> rPrims(sortedPrims.begin() + splitIndex + 1, sortedPrims.end());
219 
220  // // Compute the bounding volumes for the left and right subvolumes.
221  // const BV leftBV = defaultBVConstructor<T, BV>(lPrims);
222  // const BV rightBV = defaultBVConstructor<T, BV>(rPrims);
223 
224  // // Compute the overlapping volume between the left and right bounding volumes.
225  // const T curOverlap = getOverlappingVolume(leftBV, rightBV);
226 
227  // // Keep the one with the smallest volume.
228  // if (curOverlap < minOverlap){
229  // minOverlap = curOverlap;
230 
231  // ret = std::make_pair(lPrims, rPrims);
232  // }
233  // }
234 
235  // return ret;
236  // };
237 
238  // /*!
239  // @brief Surface area heuristic (SAH) partitioning function.
240  // @param[in] a_primitives List of primitives.
241  // @return Returns a pair of primitives. The first/second entry in the pair is the primitives contain in the left/right sub-bounding volumes
242  // */
243  // template <class T, class BV>
244  // BVH::PartitionFunctionT<FaceT<T> > partitionSAH = [](const PrimitiveList<T>& a_primitives){
245  // constexpr int DIM = 3;
246  // constexpr int nBins = 16;
247  // constexpr T invBins = 1./nBins;
248  // constexpr T Ct = 0.0;
249  // constexpr T Ci = 1.0;
250 
251  // const auto curBV = defaultBVConstructor<T, BV>(a_primitives);
252  // const auto curArea = curBV.getArea();
253 
254  // auto lo = Vec3T<T>::max();
255  // auto hi = Vec3T<T>::min();
256  // for (const auto& p : a_primitives){
257  // lo = min(lo, p->getCentroid());
258  // hi = max(hi, p->getCentroid());
259  // }
260  // const auto delta = (hi-lo)*invBins;
261 
262  // T minCost = std::numeric_limits<T>::max();
263 
264  // std::pair<PrimitiveList<T>, PrimitiveList<T> > ret;
265 
266  // for (int dir = 0; dir < DIM; dir++){
267 
268  // for (int ibin = 0; ibin <= nBins; ibin++){
269  // const Vec3T<T> pos = lo + T(1.0*ibin)*delta;
270 
271  // PrimitiveList<T> lPrims;
272  // PrimitiveList<T> rPrims;
273 
274  // for (const auto& p : a_primitives){
275  // if(p->getCentroid()[dir] <= pos[dir]){
276  // lPrims.emplace_back(p);
277  // }
278  // else{
279  // rPrims.emplace_back(p);
280  // }
281  // }
282 
283  // const auto numLeft = lPrims.size();
284  // const auto numRight = rPrims.size();
285 
286  // if(numLeft == 0 || numRight == 0) continue;
287 
288  // const BV bvLeft = defaultBVConstructor<T, BV>(lPrims);
289  // const BV bvRight = defaultBVConstructor<T, BV>(rPrims);
290 
291  // const T leftArea = bvLeft.getArea();
292  // const T rightArea = bvRight.getArea();
293 
294  // const T C = Ct + (leftArea/curArea)*Ci*numLeft + (rightArea/curArea)*Ci*numRight;
295 
296  // if(C < minCost){
297  // minCost = C;
298  // ret = std::make_pair(lPrims, rPrims);
299  // }
300  // }
301  // }
302 
303  // return ret;
304  // };
305 }
306 
308 
309 #endif
BVH::PartitionerT< FaceT< T >, K > spatialSplitPartitioner
Default partitioner function for subdividing into K sub-volumes.
Definition: EBGeometry_DcelBVH.hpp:75
-
Forward declare the BVH node since it is needed for the polymorphic lambdas.
Definition: EBGeometry_BVH.hpp:36
-
std::vector< std::shared_ptr< const Dcel::FaceT< T > > > PrimitiveList
Alias for which primitives are used in the BVH. For DCEL meshes the primitive is a polygon face...
Definition: EBGeometry_DcelBVH.hpp:40
-
static constexpr Vec3T< T > min() noexcept
Return a vector with minimum representable components.
Definition: EBGeometry_VecImplem.hpp:217
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
Declaration of a bounding volume hierarchy (BVH) class.
-
constexpr int primitivesPerLeafNode
This is the lowest number of a primitives that a BVH node is allowed to enclose.
Definition: EBGeometry_DcelBVH.hpp:34
-
static constexpr Vec3T< T > max() noexcept
Return a vector with maximum representable components.
Definition: EBGeometry_VecImplem.hpp:223
-
BVH::PartitionerT< FaceT< T >, K > spatialSplitBinaryPartitioner
Binary partitioner based on spatial splits.
Definition: EBGeometry_DcelBVH.hpp:145
-
BVH::StopFunctionT< T, FaceT< T >, BV, K > defaultStopFunction
Default stop function. This function terminates the division process if a BVH node has only one primi...
Definition: EBGeometry_DcelBVH.hpp:62
-
BVH::BVConstructorT< FaceT< T >, BV > defaultBVConstructor
Bounding volume constructor for a DCEL face.
Definition: EBGeometry_DcelBVH.hpp:50
- -
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
- -
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
std::function< std::array< PrimitiveListT< P >, K >(const PrimitiveListT< P > &a_primitives)> PartitionerT
Polymorphic partitioner for splitting a list of primitives into K new lists of primitives.
Definition: EBGeometry_BVH.hpp:78
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
std::function< BV(const std::shared_ptr< const P > &a_primitive)> BVConstructorT
Constructor method for creating bounding volumes from a list of primitives.
Definition: EBGeometry_BVH.hpp:87
-
std::function< bool(const NodeT< T, P, BV, K > &a_node)> StopFunctionT
Stop function for deciding when a BVH node can&#39;t be divided into sub-volumes.
Definition: EBGeometry_BVH.hpp:69
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp.html deleted file mode 100644 index 84a2fe43..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelEdgeImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelEdgeImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_DcelEdge.hpp. -More...

-
-Include dependency graph for EBGeometry_DcelEdgeImplem.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_DcelEdge.hpp.

-
Author
Robert Marskar
-
Todo:
Include m_face in constructors
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.map deleted file mode 100644 index d56624b7..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 353f0fbb..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c19cc27a61c46759ee9fd92ed5d56e92 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.png deleted file mode 100644 index cacbf41c..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.map deleted file mode 100644 index 90f54356..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.md5 deleted file mode 100644 index 356601b1..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9698d8ec654557433f738c66e5ebcceb \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.png deleted file mode 100644 index bb95e67e..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp_source.html deleted file mode 100644 index f0349687..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdgeImplem_8hpp_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelEdgeImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelEdgeImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
13 #ifndef CD_DcelEdgeImplem
14 #define CD_DcelEdgeImplem
15 
16 // Our includes
18 #include "EBGeometry_DcelEdge.hpp"
19 #include "EBGeometry_DcelFace.hpp"
22 
23 namespace Dcel {
24 
25  template <class T>
26  inline
28  m_face = nullptr;
29  m_vertex = nullptr;
30  m_pairEdge = nullptr;
31  m_nextEdge = nullptr;
32  m_previousEdge = nullptr;
33  m_normal = Vec3::zero();
34  m_x2x1 = Vec3::zero();
35  m_invLen2 = 0.0;
36  }
37 
38  template <class T>
39  inline
40  EdgeT<T>::EdgeT(const VertexPtr& a_vertex) : EdgeT<T>() {
41  m_vertex = a_vertex;
42  }
43 
44  template <class T>
45  inline
46  EdgeT<T>::EdgeT(const Edge& a_otherEdge) : EdgeT<T>() {
47  m_face = a_otherEdge.m_face;
48  m_vertex = a_otherEdge.m_vertex;
49  m_pairEdge = a_otherEdge.m_pairEdge;
50  m_nextEdge = a_otherEdge.m_nextEdge;
51  m_previousEdge = a_otherEdge.m_previousEdge;
52  m_normal = a_otherEdge.m_normal;
53  m_x2x1 = a_otherEdge.m_x2x1;
54  m_invLen2 = a_otherEdge.m_invLen2;
55  }
56 
57  template <class T>
58  inline
60  }
61 
62  template <class T>
63  inline
64  void EdgeT<T>::define(const VertexPtr& a_vertex,
65  const EdgePtr& a_pairEdge,
66  const EdgePtr& a_nextEdge,
67  const EdgePtr& a_previousEdge,
68  const Vec3 a_normal) noexcept {
69  m_vertex = a_vertex;
70  m_pairEdge = a_pairEdge;
71  m_nextEdge = a_nextEdge;
72  m_previousEdge = a_previousEdge;
73  m_normal = a_normal;
74  }
75 
76  template <class T>
77  inline
78  void EdgeT<T>::setVertex(const VertexPtr& a_vertex) noexcept {
79  m_vertex = a_vertex;
80  }
81 
82  template <class T>
83  inline
84  void EdgeT<T>::setPairEdge(const EdgePtr& a_pairEdge) noexcept {
85  m_pairEdge = a_pairEdge;
86  }
87 
88  template <class T>
89  inline
90  void EdgeT<T>::setNextEdge(const EdgePtr& a_nextEdge) noexcept {
91  m_nextEdge = a_nextEdge;
92  }
93 
94  template <class T>
95  inline
96  void EdgeT<T>::setPreviousEdge(const EdgePtr& a_previousEdge) noexcept {
97  m_previousEdge = a_previousEdge;
98  }
99 
100  template <class T>
101  inline
102  void EdgeT<T>::setFace(const FacePtr& a_face) noexcept {
103  m_face = a_face;
104  }
105 
106  template <class T>
107  inline
110  }
111 
112  template <class T>
113  inline
114  void EdgeT<T>::computeEdgeLength() noexcept {
115  const auto& x1 = this->getVertex()->getPosition();
116  const auto& x2 = this->getOtherVertex()->getPosition();
117 
118  m_x2x1 = x2-x1;
119 
120  const auto len2 = m_x2x1.dot(m_x2x1);
121 
122  m_invLen2 = 1./len2;
123  }
124 
125  template <class T>
126  inline
127  void EdgeT<T>::computeNormal() noexcept {
128 
129  m_normal = m_face->getNormal();
130 
131  if(m_pairEdge){
132  m_normal += m_pairEdge->getFace()->getNormal();
133  }
134 
135  this->normalizeNormalVector();
136  }
137 
138  template <class T>
139  inline
140  void EdgeT<T>::reconcile() noexcept {
141  this->computeNormal();
142  this->computeEdgeLength();
143  }
144 
145  template <class T>
146  inline
147  std::shared_ptr<VertexT<T> >& EdgeT<T>::getVertex() noexcept {
148  return (m_vertex);
149  }
150 
151  template <class T>
152  inline
153  const std::shared_ptr<VertexT<T> >& EdgeT<T>::getVertex() const noexcept {
154  return (m_vertex);
155  }
156 
157  template <class T>
158  inline
159  std::shared_ptr<VertexT<T> >& EdgeT<T>::getOtherVertex() noexcept {
160  return (m_nextEdge->getVertex());
161  }
162 
163  template <class T>
164  inline
165  const std::shared_ptr<VertexT<T> >& EdgeT<T>::getOtherVertex() const noexcept {
166  return (m_nextEdge->getVertex());
167  }
168 
169  template <class T>
170  inline
171  std::shared_ptr<EdgeT<T> >& EdgeT<T>::getPairEdge() noexcept {
172  return (m_pairEdge);
173  }
174 
175  template <class T>
176  inline
177  const std::shared_ptr<EdgeT<T> >& EdgeT<T>::getPairEdge() const noexcept {
178  return (m_pairEdge);
179  }
180 
181  template <class T>
182  inline
183  std::shared_ptr<EdgeT<T> >& EdgeT<T>::getPreviousEdge() noexcept {
184  return (m_previousEdge);
185  }
186 
187  template <class T>
188  inline
189  const std::shared_ptr<EdgeT<T> >& EdgeT<T>::getPreviousEdge() const noexcept {
190  return (m_previousEdge);
191  }
192 
193  template <class T>
194  inline
195  std::shared_ptr<EdgeT<T> >& EdgeT<T>::getNextEdge() noexcept {
196  return (m_nextEdge);
197  }
198 
199  template <class T>
200  inline
201  const std::shared_ptr<EdgeT<T> >& EdgeT<T>::getNextEdge() const noexcept {
202  return (m_nextEdge);
203  }
204 
205  template <class T>
206  inline
208  return (m_normal);
209  }
210 
211  template <class T>
212  inline
213  const Vec3T<T>& EdgeT<T>::getNormal() const noexcept {
214  return (m_normal);
215  }
216 
217  template <class T>
218  inline
219  std::shared_ptr<FaceT<T> >& EdgeT<T>::getFace() noexcept {
220  return (m_face);
221  }
222 
223  template <class T>
224  inline
225  const std::shared_ptr<FaceT<T> >& EdgeT<T>::getFace() const noexcept {
226  return (m_face);
227  }
228 
229  template <class T>
230  inline
231  T EdgeT<T>::projectPointToEdge(const Vec3& a_x0) const noexcept {
232  const auto p = a_x0 - m_vertex->getPosition();
233 
234  return p.dot(m_x2x1)*m_invLen2;
235  }
236 
237  template <class T>
238  inline
239  T EdgeT<T>::signedDistance(const Vec3& a_x0) const noexcept {
240  const T t = this->projectPointToEdge(a_x0);
241 
242  T retval;
243  if(t <= 0.0) { // Closest point is the starting vertex
244  retval = this->getVertex()->signedDistance(a_x0);
245  }
246  else if(t >= 1.0){ // Closest point is the end vertex
247  retval = this->getOtherVertex()->signedDistance(a_x0);
248  }
249  else{ // Closest point is the edge itself.
250  const Vec3 linePoint = m_vertex->getPosition() + t*m_x2x1;
251  const Vec3 delta = a_x0 - linePoint;
252  const T dot = m_normal.dot(delta);
253 
254  const int sgn = (dot > 0.0) ? 1 : -1;
255 
256  retval = sgn*delta.length();
257  }
258 
259  return retval;
260  }
261 
262  template <class T>
263  inline
264  T EdgeT<T>::unsignedDistance2(const Vec3& a_x0) const noexcept {
265  T t = this->projectPointToEdge(a_x0);
266 
267  constexpr T zero = 0.0;
268  constexpr T one = 1.0;
269 
270  t = std::min(std::max(zero,t), one); // Edge is on t=[0,1].
271 
272  const Vec3T<T> linePoint = m_vertex->getPosition() + t*m_x2x1;
273  const Vec3T<T> delta = a_x0 - linePoint;
274 
275  return delta.dot(delta);
276  }
277 }
278 
280 
281 #endif
Vec3 m_normal
Half-edge normal vector.
Definition: EBGeometry_DcelEdge.hpp:282
-
FacePtr m_face
Enclosing polygon face.
Definition: EBGeometry_DcelEdge.hpp:317
-
Vec3T< T > & getNormal() noexcept
Get modifiable half-edge normal vector.
Definition: EBGeometry_DcelEdgeImplem.hpp:207
-
~EdgeT()
Destructor (does nothing)
Definition: EBGeometry_DcelEdgeImplem.hpp:59
-
VertexPtr & getVertex() noexcept
Get modifiable starting vertex.
Definition: EBGeometry_DcelEdgeImplem.hpp:147
-
FacePtr & getFace() noexcept
Get modifiable half-edge face.
Definition: EBGeometry_DcelEdgeImplem.hpp:219
-
void setVertex(const VertexPtr &a_vertex) noexcept
Set the starting vertex.
Definition: EBGeometry_DcelEdgeImplem.hpp:78
-
EdgePtr & getPreviousEdge() noexcept
Get modifiable previous edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:183
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
void computeNormal() noexcept
Compute normal vector as average of face normals.
Definition: EBGeometry_DcelEdgeImplem.hpp:127
-
void computeEdgeLength() noexcept
Compute the edge length.
Definition: EBGeometry_DcelEdgeImplem.hpp:114
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
VertexPtr & getOtherVertex() noexcept
Get modifiable end vertex.
Definition: EBGeometry_DcelEdgeImplem.hpp:159
-
Declaration of iterators for DCEL surface Tesselations.
-
T dot(const Vec3T< T > &u) const noexcept
Vector dot product.
Definition: EBGeometry_VecImplem.hpp:438
-
T m_invLen2
Squared inverse edge length. Exists for performance reasons.
Definition: EBGeometry_DcelEdge.hpp:292
-
void define(const VertexPtr &a_vertex, const EdgePtr &a_pairEdge, const EdgePtr &a_nextEdge, const EdgePtr &a_previousEdge, const Vec3 a_normal) noexcept
Define function. Sets the starting vertex, edges, and normal vectors.
Definition: EBGeometry_DcelEdgeImplem.hpp:64
-
void setNextEdge(const EdgePtr &a_nextEdge) noexcept
Set the next edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:90
-
EdgePtr m_nextEdge
Next edge.
Definition: EBGeometry_DcelEdge.hpp:312
-
VertexPtr m_vertex
Starting vertex.
Definition: EBGeometry_DcelEdge.hpp:297
-
std::shared_ptr< Face > FacePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelEdge.hpp:80
-
void reconcile() noexcept
Compute edge normal and edge length (for performance reasons)
Definition: EBGeometry_DcelEdgeImplem.hpp:140
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
T signedDistance(const Vec3 &a_x0) const noexcept
Get the signed distance to this half edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:239
-
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
-
void setPairEdge(const EdgePtr &a_pairEdge) noexcept
Set the pair edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:84
-
T length() const noexcept
Compute vector length.
Definition: EBGeometry_VecImplem.hpp:444
-
EdgePtr & getPairEdge() noexcept
Get modifiable pair edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:171
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Get the signed distance to this half edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:264
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
- -
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on typing.
Definition: EBGeometry_DcelEdge.hpp:70
-
EdgePtr & getNextEdge() noexcept
Get modifiable next edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:195
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelEdge.hpp:75
-
T projectPointToEdge(const Vec3 &a_x0) const noexcept
Returns the "projection" of a point to an edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:231
-
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring it has length 1.
Definition: EBGeometry_DcelEdgeImplem.hpp:108
-
Vec3 m_x2x1
Vector from the starting vertex to the end vertex. Exists for performance reasons.
Definition: EBGeometry_DcelEdge.hpp:287
-
void setFace(const FacePtr &a_face) noexcept
Set the pointer to this half-edge&#39;s face.
Definition: EBGeometry_DcelEdgeImplem.hpp:102
-
void setPreviousEdge(const EdgePtr &a_previousEdge) noexcept
Set the previous edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:96
-
EdgePtr m_pairEdge
Pair edge.
Definition: EBGeometry_DcelEdge.hpp:302
-
EdgeT()
Default constructor. Sets all pointers to zero and vectors to zero vectors.
Definition: EBGeometry_DcelEdgeImplem.hpp:27
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
EdgePtr m_previousEdge
Previous edge.
Definition: EBGeometry_DcelEdge.hpp:307
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp.html b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp.html deleted file mode 100644 index 9f0ca12e..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelEdge.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelEdge.hpp File Reference
-
-
- -

Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations. -More...

-
#include <vector>
-#include <memory>
-#include "EBGeometry_Vec.hpp"
-#include "EBGeometry_DcelFace.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_DcelEdgeImplem.hpp"
-
-Include dependency graph for EBGeometry_DcelEdge.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - -

-Classes

class  Dcel::VertexT< T >
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeT< T >
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
class  Dcel::FaceT< T >
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeIteratorT< T >
 Class which can iterate through edges and vertices around a DCEL polygon face. More...
 
class  Dcel::EdgeT< T >
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
- - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.map deleted file mode 100644 index aaeaa01b..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.md5 deleted file mode 100644 index 5576a98c..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -947efed2818f4bfbe84cc6dd2b817978 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.png deleted file mode 100644 index 128b39c2..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.map deleted file mode 100644 index 7420a201..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.md5 deleted file mode 100644 index f2e54f35..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c352d15db094b3ff8d365a4b97e8eb35 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.png deleted file mode 100644 index 339b1f2a..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelEdge_8hpp_source.html deleted file mode 100644 index 97f90475..00000000 --- a/docs/doxygen/html/EBGeometry__DcelEdge_8hpp_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelEdge.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelEdge.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelEdge
13 #define EBGeometry_DcelEdge
14 
15 // Std includes
16 #include <vector>
17 #include <memory>
18 
19 // Our includes
20 #include "EBGeometry_Vec.hpp"
21 #include "EBGeometry_DcelFace.hpp"
23 
24 namespace Dcel {
25 
26  // Forward declare classes.
27  template <class T> class VertexT;
28  template <class T> class EdgeT;
29  template <class T> class FaceT;
30  template <class T> class EdgeIteratorT;
31 
43  template<class T>
44  class EdgeT {
45  public:
46 
50  using Vec3 = Vec3T<T>;
51 
55  using Vertex = VertexT<T>;
56 
60  using Edge = EdgeT<T>;
61 
65  using Face = FaceT<T>;
66 
70  using VertexPtr = std::shared_ptr<Vertex>;
71 
75  using EdgePtr = std::shared_ptr<Edge>;
76 
80  using FacePtr = std::shared_ptr<Face>;
81 
86 
90  EdgeT();
91 
96  EdgeT(const Edge& a_otherEdge);
97 
102  EdgeT(const VertexPtr& a_vertex);
103 
107  ~EdgeT();
108 
117  inline
118  void define(const VertexPtr& a_vertex,
119  const EdgePtr& a_pairEdge,
120  const EdgePtr& a_nextEdge,
121  const EdgePtr& a_previousEdge,
122  const Vec3 a_normal) noexcept;
123 
128  inline
129  void setVertex(const VertexPtr& a_vertex) noexcept;
130 
135  inline
136  void setPairEdge(const EdgePtr& a_pairEdge) noexcept;
137 
142  inline
143  void setNextEdge(const EdgePtr& a_nextEdge) noexcept;
144 
149  inline
150  void setPreviousEdge(const EdgePtr& a_previousEdge) noexcept;
151 
155  inline
156  void setFace(const FacePtr& a_face) noexcept;
157 
161  inline
162  void reconcile() noexcept;
163 
168  inline
169  VertexPtr& getVertex() noexcept;
170 
175  inline
176  const VertexPtr& getVertex() const noexcept;
177 
182  inline
183  VertexPtr& getOtherVertex() noexcept;
184 
189  inline
190  const VertexPtr& getOtherVertex() const noexcept;
191 
196  inline
197  EdgePtr& getPairEdge() noexcept;
198 
203  inline
204  const EdgePtr& getPairEdge() const noexcept;
205 
210  inline
211  EdgePtr& getPreviousEdge() noexcept;
212 
217  inline
218  const EdgePtr& getPreviousEdge() const noexcept;
219 
224  inline
225  EdgePtr& getNextEdge() noexcept;
226 
231  inline
232  const EdgePtr& getNextEdge() const noexcept;
233 
237  inline
238  Vec3T<T>& getNormal() noexcept;
239 
243  inline
244  const Vec3T<T>& getNormal() const noexcept;
245 
249  inline
250  FacePtr& getFace() noexcept;
251 
255  inline
256  const FacePtr& getFace() const noexcept;
257 
264  inline
265  T signedDistance(const Vec3& a_x0) const noexcept;
266 
273  inline
274  T unsignedDistance2(const Vec3& a_x0) const noexcept;
275 
276  protected:
277 
283 
288 
293 
298 
303 
308 
313 
318 
324  inline
325  T projectPointToEdge(const Vec3& a_x0) const noexcept;
326 
330  inline
331  void normalizeNormalVector() noexcept;
332 
337  inline
338  void computeEdgeLength() noexcept;
339 
343  inline
344  void computeNormal() noexcept;
345  };
346 }
347 
348 #include "EBGeometry_NamespaceFooter.hpp"
349 
351 
352 #endif
Vec3 m_normal
Half-edge normal vector.
Definition: EBGeometry_DcelEdge.hpp:282
-
FacePtr m_face
Enclosing polygon face.
Definition: EBGeometry_DcelEdge.hpp:317
-
Vec3T< T > & getNormal() noexcept
Get modifiable half-edge normal vector.
Definition: EBGeometry_DcelEdgeImplem.hpp:207
-
~EdgeT()
Destructor (does nothing)
Definition: EBGeometry_DcelEdgeImplem.hpp:59
-
VertexPtr & getVertex() noexcept
Get modifiable starting vertex.
Definition: EBGeometry_DcelEdgeImplem.hpp:147
-
FacePtr & getFace() noexcept
Get modifiable half-edge face.
Definition: EBGeometry_DcelEdgeImplem.hpp:219
-
void setVertex(const VertexPtr &a_vertex) noexcept
Set the starting vertex.
Definition: EBGeometry_DcelEdgeImplem.hpp:78
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
EdgePtr & getPreviousEdge() noexcept
Get modifiable previous edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:183
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
void computeNormal() noexcept
Compute normal vector as average of face normals.
Definition: EBGeometry_DcelEdgeImplem.hpp:127
-
void computeEdgeLength() noexcept
Compute the edge length.
Definition: EBGeometry_DcelEdgeImplem.hpp:114
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
VertexPtr & getOtherVertex() noexcept
Get modifiable end vertex.
Definition: EBGeometry_DcelEdgeImplem.hpp:159
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
T m_invLen2
Squared inverse edge length. Exists for performance reasons.
Definition: EBGeometry_DcelEdge.hpp:292
-
void define(const VertexPtr &a_vertex, const EdgePtr &a_pairEdge, const EdgePtr &a_nextEdge, const EdgePtr &a_previousEdge, const Vec3 a_normal) noexcept
Define function. Sets the starting vertex, edges, and normal vectors.
Definition: EBGeometry_DcelEdgeImplem.hpp:64
-
void setNextEdge(const EdgePtr &a_nextEdge) noexcept
Set the next edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:90
-
EdgePtr m_nextEdge
Next edge.
Definition: EBGeometry_DcelEdge.hpp:312
-
VertexPtr m_vertex
Starting vertex.
Definition: EBGeometry_DcelEdge.hpp:297
-
std::shared_ptr< Face > FacePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelEdge.hpp:80
-
void reconcile() noexcept
Compute edge normal and edge length (for performance reasons)
Definition: EBGeometry_DcelEdgeImplem.hpp:140
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
T signedDistance(const Vec3 &a_x0) const noexcept
Get the signed distance to this half edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:239
-
void setPairEdge(const EdgePtr &a_pairEdge) noexcept
Set the pair edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:84
-
EdgePtr & getPairEdge() noexcept
Get modifiable pair edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:171
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Get the signed distance to this half edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:264
- -
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on typing.
Definition: EBGeometry_DcelEdge.hpp:70
-
EdgePtr & getNextEdge() noexcept
Get modifiable next edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:195
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelEdge.hpp:75
-
T projectPointToEdge(const Vec3 &a_x0) const noexcept
Returns the "projection" of a point to an edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:231
-
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring it has length 1.
Definition: EBGeometry_DcelEdgeImplem.hpp:108
-
Vec3 m_x2x1
Vector from the starting vertex to the end vertex. Exists for performance reasons.
Definition: EBGeometry_DcelEdge.hpp:287
-
void setFace(const FacePtr &a_face) noexcept
Set the pointer to this half-edge&#39;s face.
Definition: EBGeometry_DcelEdgeImplem.hpp:102
-
void setPreviousEdge(const EdgePtr &a_previousEdge) noexcept
Set the previous edge.
Definition: EBGeometry_DcelEdgeImplem.hpp:96
-
EdgePtr m_pairEdge
Pair edge.
Definition: EBGeometry_DcelEdge.hpp:302
-
EdgeT()
Default constructor. Sets all pointers to zero and vectors to zero vectors.
Definition: EBGeometry_DcelEdgeImplem.hpp:27
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
Implementation of EBGeometry_DcelEdge.hpp.
-
EdgePtr m_previousEdge
Previous edge.
Definition: EBGeometry_DcelEdge.hpp:307
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp.html deleted file mode 100644 index 73a0da2b..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelFaceImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelFaceImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_DcelFace.hpp. -More...

-
-Include dependency graph for EBGeometry_DcelFaceImplem.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_DcelFace.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.map deleted file mode 100644 index 4c06222a..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.md5 deleted file mode 100644 index efb9e5ff..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8ffb154c7a52e1eab8fef55580140c52 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.png deleted file mode 100644 index e9aa8364..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.map deleted file mode 100644 index 9a8d9693..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.md5 deleted file mode 100644 index 24e70d7c..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -71e0b1138046cea18244346aadb2bb16 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.png deleted file mode 100644 index b0e3fe0a..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp_source.html deleted file mode 100644 index 6a0a5b1a..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFaceImplem_8hpp_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelFaceImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelFaceImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelFaceImplem
13 #define EBGeometry_DcelFaceImplem
14 
15 // Our includes
16 #include "EBGeometry_DcelFace.hpp"
19 
20 namespace Dcel {
21 
22  template <class T>
23  inline
25  m_halfEdge = nullptr;
26  m_normal = Vec3::zero();
28  }
29 
30  template <class T>
31  inline
32  FaceT<T>::FaceT(const EdgePtr& a_edge) : Face() {
33  m_halfEdge = a_edge;
34  }
35 
36  template <class T>
37  inline
38  FaceT<T>::FaceT(const Face& a_otherFace) : Face() {
39  m_normal = a_otherFace.getNormal();
40  m_halfEdge = a_otherFace.getHalfEdge();
41  }
42 
43  template <class T>
44  inline
46  }
47 
48  template <class T>
49  inline
50  void FaceT<T>::define(const Vec3& a_normal, const EdgePtr& a_edge) noexcept {
51  m_normal = a_normal;
52  m_halfEdge = a_edge;
53  }
54 
55  template <class T>
56  inline
57  void FaceT<T>::reconcile() noexcept {
58  this->computeNormal();
59  this->normalizeNormalVector();
60  this->computeCentroid();
61  this->computeArea();
62  this->computePolygon2D();
63  this->computeAndStoreEdges();
64  }
65 
66  template <class T>
67  inline
69  m_edges.resize(0);
70 
71  for (EdgeIterator edgeIt(*this); edgeIt.ok(); ++edgeIt){
72  m_edges.emplace_back(edgeIt());
73  }
74  }
75 
76  template <class T>
77  inline
78  void FaceT<T>::setHalfEdge(const EdgePtr& a_halfEdge) noexcept {
79  m_halfEdge = a_halfEdge;
80  }
81 
82  template <class T>
83  inline
86  }
87 
88  template <class T>
89  inline
91  m_poly2Algorithm = a_algorithm;
92  }
93 
94  template <class T>
95  inline
96  void FaceT<T>::computeArea() noexcept {
97  m_area = 0.0;
98 
99  // This computes the area of any N-side polygon.
100  const auto vertices = this->gatherVertices();
101 
102  for (unsigned int i = 0; i < vertices.size() - 1; i++){
103  const auto& v1 = vertices[i] ->getPosition();
104  const auto& v2 = vertices[i+1]->getPosition();
105  m_area += m_normal.dot(v2.cross(v1));
106  }
107 
108  m_area = 0.5*std::abs(m_area);
109  }
110 
111  template <class T>
112  inline
113  void FaceT<T>::computeCentroid() noexcept {
115 
116  const auto vertices = this->gatherVertices();
117 
118  for (const auto& v : vertices){
119  m_centroid += v->getPosition();
120  }
121 
122  m_centroid = m_centroid/vertices.size();
123  }
124 
125  template <class T>
126  inline
127  void FaceT<T>::computeNormal() noexcept {
128  const auto vertices = this->gatherVertices();
129 
130  const int N = vertices.size();
131 
132  // To compute the normal vector we find three vertices in this polygon face. They span a plane, and we just compute the
133  // normal vector of that plane.
134  for (int i = 0; i < N; i++){
135  const auto& x0 = vertices[i] ->getPosition();
136  const auto& x1 = vertices[(i+1)%N]->getPosition();
137  const auto& x2 = vertices[(i+2)%N]->getPosition();
138 
139  m_normal = (x2-x1).cross(x2-x0);
140 
141  if(m_normal.length() > 0.0) break; // Found one.
142  }
143 
144  this->normalizeNormalVector();
145  }
146 
147  template <class T>
148  inline
149  void FaceT<T>::computePolygon2D() noexcept{
150 
151  // See CD_DcelPoly.H to see how the 2D embedding operates.
152  m_poly2 = std::make_shared<Polygon2D<T> >(m_normal, this->getAllVertexCoordinates());
153  }
154 
155  template <class T>
156  inline
157  T& FaceT<T>::getCentroid(const int a_dir) noexcept {
158  return m_centroid[a_dir];
159  }
160 
161  template <class T>
162  inline
163  const T& FaceT<T>::getCentroid(const int a_dir) const noexcept {
164  return m_centroid[a_dir];
165  }
166 
167  template <class T>
168  inline
170  return (m_centroid);
171  }
172 
173  template <class T>
174  inline
175  const Vec3T<T>& FaceT<T>::getCentroid() const noexcept {
176  return (m_centroid);
177  }
178 
179  template <class T>
180  inline
182  return (m_normal);
183  }
184 
185  template <class T>
186  inline
187  const Vec3T<T>& FaceT<T>::getNormal() const noexcept {
188  return (m_normal);
189  }
190 
191  template <class T>
192  inline
193  T FaceT<T>::getArea() noexcept {
194  return (m_area);
195  }
196 
197  template <class T>
198  inline
199  T FaceT<T>::getArea() const noexcept {
200  return (m_area);
201  }
202 
203  template <class T>
204  inline
205  std::shared_ptr<EdgeT<T> >& FaceT<T>::getHalfEdge() noexcept {
206  return (m_halfEdge);
207  }
208 
209  template <class T>
210  inline
211  const std::shared_ptr<EdgeT<T> >& FaceT<T>::getHalfEdge() const noexcept {
212  return (m_halfEdge);
213  }
214 
215  template <class T>
216  inline
217  std::vector<std::shared_ptr<VertexT<T> > > FaceT<T>::gatherVertices() const noexcept {
218  std::vector<VertexPtr> vertices;
219 
220  for (EdgeIterator iter(*this); iter.ok(); ++iter){
221  EdgePtr& edge = iter();
222  vertices.emplace_back(edge->getVertex());
223  }
224 
225  return vertices;
226  }
227 
228  template <class T>
229  inline
230  std::vector<Vec3T<T> > FaceT<T>::getAllVertexCoordinates() const noexcept {
231  std::vector<Vec3> ret;
232 
233  for (EdgeIterator iter(*this); iter.ok(); ++iter){
234  EdgePtr& edge = iter();
235  ret.emplace_back(edge->getVertex()->getPosition());
236  }
237 
238  return ret;
239  }
240 
241  template <class T>
242  inline
244  const auto coords = this->getAllVertexCoordinates();
245 
246  auto minCoord = coords.front();
247 
248  for (const auto& c : coords){
249  minCoord = min(minCoord, c);
250  }
251 
252  return minCoord;
253  }
254 
255  template <class T>
256  inline
258  const auto coords = this->getAllVertexCoordinates();
259 
260  auto maxCoord = coords.front();
261 
262  for (const auto& c : coords){
263  maxCoord = max(maxCoord, c);
264  }
265 
266  return maxCoord;
267  }
268 
269  template <class T>
270  inline
271  Vec3T<T> FaceT<T>::projectPointIntoFacePlane(const Vec3& a_p) const noexcept {
272  return a_p - m_normal * (m_normal.dot(a_p-m_centroid));
273  }
274 
275  template <class T>
276  inline
277  bool FaceT<T>::isPointInsideFace(const Vec3& a_p) const noexcept {
278  const Vec3 p = this->projectPointIntoFacePlane(a_p);
279 
280  return m_poly2->isPointInside(p, m_poly2Algorithm);
281  }
282 
283  template <class T>
284  inline
285  T FaceT<T>::signedDistance(const Vec3& a_x0) const noexcept {
286  T retval = std::numeric_limits<T>::infinity();
287 
288  const bool inside = this->isPointInsideFace(a_x0);
289 
290  if(inside){ // Projects to inside so distance and sign are straightforward to compute.
291  retval = m_normal.dot(a_x0 - m_centroid);
292  }
293  else {
294  for (const auto& e : m_edges){ // Projects to outside so edge/vertex are closest. Check that distance.
295  const T curDist = e->signedDistance(a_x0);
296 
297  retval = (std::abs(curDist) < std::abs(retval)) ? curDist : retval;
298  }
299  }
300 
301  return retval;
302  }
303 
304  template <class T>
305  inline
306  T FaceT<T>::unsignedDistance2(const Vec3& a_x0) const noexcept {
307  T retval = std::numeric_limits<T>::infinity();
308 
309  const bool inside = this->isPointInsideFace(a_x0);
310 
311  if(inside){ // Projects to inside the polygon face so distance is straightforward.
312  const T normDist = m_normal.dot(a_x0-m_centroid);
313 
314  retval = normDist*normDist;
315  }
316  else{
317  for (const auto& e : m_edges){ // Projects to outside so edge/vertex are closest.
318  const T curDist2 = e->unsignedDistance2(a_x0);
319 
320  retval = (curDist2 < retval) ? curDist2 : retval;
321  }
322  }
323 
324  return retval;
325  }
326 }
327 
329 
330 #endif
Vec3 m_centroid
Polygon face centroid position.
Definition: EBGeometry_DcelFace.hpp:259
-
std::shared_ptr< Polygon2D< T > > m_poly2
2D embedding of this polygon. This is the 2D view of the current object projected along its normal ve...
Definition: EBGeometry_DcelFace.hpp:264
-
T signedDistance(const Vec3 &a_x0) const noexcept
Compute the signed distance to a point.
Definition: EBGeometry_DcelFaceImplem.hpp:285
-
std::vector< Vec3T< T > > getAllVertexCoordinates() const noexcept
Return the coordinates of all the vertices on this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:230
-
Vec3T< T > & getCentroid() noexcept
Get modifiable centroid.
Definition: EBGeometry_DcelFaceImplem.hpp:169
-
static constexpr Vec3T< T > zero() noexcept
Return av vector with x = y = z = 0.
Definition: EBGeometry_VecImplem.hpp:205
-
bool ok() const noexcept
Function which checks if the iteration can be continued.
Definition: EBGeometry_DcelIteratorImplem.hpp:97
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
void computeAndStoreEdges() noexcept
Compute and store all the half-edges around this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:68
-
T m_area
Polygon face area.
Definition: EBGeometry_DcelFace.hpp:249
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
Vec3T< T > getHighestCoordinate() const noexcept
Get the upper-right-most coordinate of this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:257
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
void reconcile() noexcept
Reconcile face. This will compute the normal vector, area, centroid, and the 2D embedding of the poly...
Definition: EBGeometry_DcelFaceImplem.hpp:57
-
EdgePtr m_halfEdge
This polygon&#39;s half-edge. A valid face will always have != nullptr.
Definition: EBGeometry_DcelFace.hpp:239
-
std::vector< VertexPtr > gatherVertices() const noexcept
Return all the vertices on this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:217
-
std::vector< EdgePtr > m_edges
Pointers to all the half-edges of this face. Exists for performance reasons (in signedDistance(...))
Definition: EBGeometry_DcelFace.hpp:244
-
Vec3T< T > & getNormal() noexcept
Get modifiable normal vector.
Definition: EBGeometry_DcelFaceImplem.hpp:181
-
Declaration of iterators for DCEL surface Tesselations.
-
Vec3T< T > getSmallestCoordinate() const noexcept
Get the lower-left-most coordinate of this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:243
-
void computePolygon2D() noexcept
Compute the 2D embedding of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:149
-
void setInsideOutsideAlgorithm(typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm &a_algorithm) noexcept
Set the inside/outside algorithm when determining if a point projects to the inside or outside of the...
Definition: EBGeometry_DcelFaceImplem.hpp:90
-
T dot(const Vec3T< T > &u) const noexcept
Vector dot product.
Definition: EBGeometry_VecImplem.hpp:438
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Compute the unsigned squared distance to a point.
Definition: EBGeometry_DcelFaceImplem.hpp:306
-
InsideOutsideAlgorithm
Supported algorithms for performing inside/outside tests when checking if a point projects to the ins...
Definition: EBGeometry_DcelPolygon2D.hpp:41
-
EdgePtr & getHalfEdge() noexcept
Get modifiable half-edge.
Definition: EBGeometry_DcelFaceImplem.hpp:205
-
Vec3 m_normal
Polygon face normal vector.
Definition: EBGeometry_DcelFace.hpp:254
-
void computeCentroid() noexcept
Compute the centroid position of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:113
-
Vec3T< T > projectPointIntoFacePlane(const Vec3 &a_p) const noexcept
Compute the projection of a point onto the polygon face plane.
Definition: EBGeometry_DcelFaceImplem.hpp:271
-
bool isPointInsideFace(const Vec3 &a_p) const noexcept
Check if a point projects to inside or outside the polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:277
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
~FaceT()
Destructor (does nothing)
Definition: EBGeometry_DcelFaceImplem.hpp:45
-
void define(const Vec3 &a_normal, const EdgePtr &a_edge) noexcept
Define function which sets the normal vector and half-edge.
Definition: EBGeometry_DcelFaceImplem.hpp:50
-
T length() const noexcept
Compute vector length.
Definition: EBGeometry_VecImplem.hpp:444
-
void computeNormal() noexcept
Compute the normal position of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:127
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
- -
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelFace.hpp:76
-
Polygon2D< T >::InsideOutsideAlgorithm m_poly2Algorithm
Algorithm for inside/outside tests.
Definition: EBGeometry_DcelFace.hpp:269
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
void computeArea() noexcept
Compute the area of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:96
-
Class for embedding a DCEL polygon face into 2D.
Definition: EBGeometry_DcelMesh.hpp:31
-
T getArea() noexcept
Get the area of this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:193
-
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring it has a length of 1.
Definition: EBGeometry_DcelFaceImplem.hpp:84
-
FaceT()
Default constructor. Sets the half-edge to zero and the inside/outside algorithm to crossing number a...
Definition: EBGeometry_DcelFaceImplem.hpp:24
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
void setHalfEdge(const EdgePtr &a_halfEdge) noexcept
Set the half edge.
Definition: EBGeometry_DcelFaceImplem.hpp:78
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp.html b/docs/doxygen/html/EBGeometry__DcelFace_8hpp.html deleted file mode 100644 index 05c59cfd..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFace_8hpp.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelFace.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelFace.hpp File Reference
-
-
- -

Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations. -More...

-
#include <memory>
-#include <vector>
-#include "EBGeometry_Vec.hpp"
-#include "EBGeometry_DcelVertex.hpp"
-#include "EBGeometry_DcelEdge.hpp"
-#include "EBGeometry_DcelPolygon2D.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_DcelFaceImplem.hpp"
-
-Include dependency graph for EBGeometry_DcelFace.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - -

-Classes

class  Dcel::VertexT< T >
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeT< T >
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
class  Dcel::FaceT< T >
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeIteratorT< T >
 Class which can iterate through edges and vertices around a DCEL polygon face. More...
 
class  Dcel::FaceT< T >
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
- - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.map deleted file mode 100644 index 7d54b9c5..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.md5 deleted file mode 100644 index cb39b82f..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8ad977b232cf918acafa9cf05d180679 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.png deleted file mode 100644 index fa895937..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.map deleted file mode 100644 index 159cfece..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.md5 deleted file mode 100644 index 77dbd43d..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3c949bdecd757202fe11a77ba5cf9fff \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.png deleted file mode 100644 index f5041f5e..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelFace_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelFace_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelFace_8hpp_source.html deleted file mode 100644 index f1129438..00000000 --- a/docs/doxygen/html/EBGeometry__DcelFace_8hpp_source.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelFace.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelFace.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelFace
13 #define EBGeometry_DcelFace
14 
15 // Std includes
16 #include <memory>
17 #include <vector>
18 
19 // Our includes
20 #include "EBGeometry_Vec.hpp"
22 #include "EBGeometry_DcelEdge.hpp"
25 
26 namespace Dcel {
27 
28  // Forward declarations of other DCEL functionality.
29  template <class T> class VertexT;
30  template <class T> class EdgeT;
31  template <class T> class FaceT;
32  template <class T> class EdgeIteratorT;
33 
44  template <class T>
45  class FaceT {
46  public:
47 
51  using Vec3 = Vec3T<T>;
52 
56  using Vertex = VertexT<T>;
57 
61  using Edge = EdgeT<T>;
62 
66  using Face = FaceT<T>;
67 
71  using VertexPtr = std::shared_ptr<Vertex>;
72 
76  using EdgePtr = std::shared_ptr<Edge>;
77 
81  using FacePtr = std::shared_ptr<Face>;
82 
87 
91  FaceT();
92 
97  FaceT(const EdgePtr& a_edge);
98 
103  FaceT(const Face& a_otherFace);
104 
108  ~FaceT();
109 
115  inline
116  void define(const Vec3& a_normal, const EdgePtr& a_edge) noexcept;
117 
122  inline
123  void reconcile() noexcept;
124 
129  inline
130  void setHalfEdge(const EdgePtr& a_halfEdge) noexcept;
131 
137  inline
138  void setInsideOutsideAlgorithm(typename Dcel::Polygon2D<T>::InsideOutsideAlgorithm& a_algorithm) noexcept;
139 
143  inline
144  EdgePtr& getHalfEdge() noexcept;
145 
149  inline
150  const EdgePtr& getHalfEdge() const noexcept;
151 
155  inline
156  Vec3T<T>& getCentroid() noexcept;
157 
161  inline
162  const Vec3T<T>& getCentroid() const noexcept;
163 
168  inline
169  T& getCentroid(const int a_dir) noexcept;
170 
175  inline
176  const T& getCentroid(const int a_dir) const noexcept;
177 
181  inline
182  Vec3T<T>& getNormal() noexcept;
183 
187  inline
188  const Vec3T<T>& getNormal() const noexcept;
189 
196  inline
197  T signedDistance(const Vec3& a_x0) const noexcept;
198 
205  inline
206  T unsignedDistance2(const Vec3& a_x0) const noexcept;
207 
212  inline
213  std::vector<Vec3T<T> > getAllVertexCoordinates() const noexcept;
214 
219  inline
220  std::vector<VertexPtr> gatherVertices() const noexcept;
221 
225  inline
226  Vec3T<T> getSmallestCoordinate() const noexcept;
227 
231  inline
232  Vec3T<T> getHighestCoordinate() const noexcept;
233 
234  protected:
235 
240 
244  std::vector<EdgePtr > m_edges; // Exists because of performance reasons.
245 
250 
255 
260 
264  std::shared_ptr<Polygon2D<T> > m_poly2;
265 
269  typename Polygon2D<T>::InsideOutsideAlgorithm m_poly2Algorithm;
270 
274  inline
275  void computeArea() noexcept;
276 
280  inline
281  void computeCentroid() noexcept;
282 
286  inline
287  void computeNormal() noexcept;
288 
292  inline
293  void computePolygon2D() noexcept;
294 
298  inline
299  void normalizeNormalVector() noexcept;
300 
304  inline
305  T getArea() noexcept;
306 
310  inline
311  T getArea() const noexcept;
312 
316  inline
317  void computeAndStoreEdges() noexcept;
318 
323  inline
324  Vec3T<T> projectPointIntoFacePlane(const Vec3& a_p) const noexcept;
325 
331  inline
332  bool isPointInsideFace(const Vec3& a_p) const noexcept;
333  };
334 }
335 
336 #include "EBGeometry_NamespaceFooter.hpp"
337 
339 
340 #endif
Vec3 m_centroid
Polygon face centroid position.
Definition: EBGeometry_DcelFace.hpp:259
-
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on typing.
Definition: EBGeometry_DcelFace.hpp:71
-
Implementation of EBGeometry_DcelFace.hpp.
-
std::shared_ptr< Polygon2D< T > > m_poly2
2D embedding of this polygon. This is the 2D view of the current object projected along its normal ve...
Definition: EBGeometry_DcelFace.hpp:264
-
T signedDistance(const Vec3 &a_x0) const noexcept
Compute the signed distance to a point.
Definition: EBGeometry_DcelFaceImplem.hpp:285
-
std::vector< Vec3T< T > > getAllVertexCoordinates() const noexcept
Return the coordinates of all the vertices on this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:230
-
Vec3T< T > & getCentroid() noexcept
Get modifiable centroid.
Definition: EBGeometry_DcelFaceImplem.hpp:169
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
void computeAndStoreEdges() noexcept
Compute and store all the half-edges around this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:68
-
T m_area
Polygon face area.
Definition: EBGeometry_DcelFace.hpp:249
-
std::shared_ptr< Face > FacePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelFace.hpp:81
-
Vec3T< T > getHighestCoordinate() const noexcept
Get the upper-right-most coordinate of this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:257
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
void reconcile() noexcept
Reconcile face. This will compute the normal vector, area, centroid, and the 2D embedding of the poly...
Definition: EBGeometry_DcelFaceImplem.hpp:57
-
EdgePtr m_halfEdge
This polygon&#39;s half-edge. A valid face will always have != nullptr.
Definition: EBGeometry_DcelFace.hpp:239
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
std::vector< VertexPtr > gatherVertices() const noexcept
Return all the vertices on this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:217
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
Declaration of a two-dimensional polygon class for embedding 3D polygon faces.
-
std::vector< EdgePtr > m_edges
Pointers to all the half-edges of this face. Exists for performance reasons (in signedDistance(...))
Definition: EBGeometry_DcelFace.hpp:244
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
Vec3T< T > & getNormal() noexcept
Get modifiable normal vector.
Definition: EBGeometry_DcelFaceImplem.hpp:181
-
Vec3T< T > getSmallestCoordinate() const noexcept
Get the lower-left-most coordinate of this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:243
-
void computePolygon2D() noexcept
Compute the 2D embedding of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:149
-
void setInsideOutsideAlgorithm(typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm &a_algorithm) noexcept
Set the inside/outside algorithm when determining if a point projects to the inside or outside of the...
Definition: EBGeometry_DcelFaceImplem.hpp:90
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Compute the unsigned squared distance to a point.
Definition: EBGeometry_DcelFaceImplem.hpp:306
-
EdgePtr & getHalfEdge() noexcept
Get modifiable half-edge.
Definition: EBGeometry_DcelFaceImplem.hpp:205
-
Vec3 m_normal
Polygon face normal vector.
Definition: EBGeometry_DcelFace.hpp:254
-
void computeCentroid() noexcept
Compute the centroid position of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:113
-
Vec3T< T > projectPointIntoFacePlane(const Vec3 &a_p) const noexcept
Compute the projection of a point onto the polygon face plane.
Definition: EBGeometry_DcelFaceImplem.hpp:271
-
bool isPointInsideFace(const Vec3 &a_p) const noexcept
Check if a point projects to inside or outside the polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:277
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
~FaceT()
Destructor (does nothing)
Definition: EBGeometry_DcelFaceImplem.hpp:45
-
void define(const Vec3 &a_normal, const EdgePtr &a_edge) noexcept
Define function which sets the normal vector and half-edge.
Definition: EBGeometry_DcelFaceImplem.hpp:50
-
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
-
void computeNormal() noexcept
Compute the normal position of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:127
- -
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelFace.hpp:76
-
Polygon2D< T >::InsideOutsideAlgorithm m_poly2Algorithm
Algorithm for inside/outside tests.
Definition: EBGeometry_DcelFace.hpp:269
-
void computeArea() noexcept
Compute the area of this polygon.
Definition: EBGeometry_DcelFaceImplem.hpp:96
-
Class for embedding a DCEL polygon face into 2D.
Definition: EBGeometry_DcelMesh.hpp:31
-
T getArea() noexcept
Get the area of this polygon face.
Definition: EBGeometry_DcelFaceImplem.hpp:193
-
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring it has a length of 1.
Definition: EBGeometry_DcelFaceImplem.hpp:84
-
FaceT()
Default constructor. Sets the half-edge to zero and the inside/outside algorithm to crossing number a...
Definition: EBGeometry_DcelFaceImplem.hpp:24
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
void setHalfEdge(const EdgePtr &a_halfEdge) noexcept
Set the half edge.
Definition: EBGeometry_DcelFaceImplem.hpp:78
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp.html deleted file mode 100644 index 0d6e0df6..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelIteratorImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelIteratorImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_DcelIterator.hpp. -More...

-
-Include dependency graph for EBGeometry_DcelIteratorImplem.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_DcelIterator.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.map deleted file mode 100644 index 6e4045b3..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 7db7feef..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ffb51f06a9ec83a2ffceb43809e7f983 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.png deleted file mode 100644 index 42ee3a80..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.map deleted file mode 100644 index bc1003c8..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.md5 deleted file mode 100644 index f64b72be..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -329708f7089e94d55f243af10519c283 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.png deleted file mode 100644 index 102774e2..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp_source.html deleted file mode 100644 index 84ef39bb..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIteratorImplem_8hpp_source.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelIteratorImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelIteratorImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelIteratorImplem
13 #define EBGeometry_DcelIteratorImplem
14 
15 // Our includes
17 #include "EBGeometry_DcelEdge.hpp"
18 #include "EBGeometry_DcelFace.hpp"
21 
22 namespace Dcel {
23 
24  template <class T>
25  inline
27  m_startEdge = a_face.getHalfEdge();
28  m_curEdge = m_startEdge;
29  m_fullLoop = false;
30  m_iterMode = IterationMode::Faces;
31  }
32 
33  template <class T>
34  inline
36  m_startEdge = a_face.getHalfEdge();
37  m_curEdge = m_startEdge;
38  m_fullLoop = false;
39  m_iterMode = IterationMode::Faces;
40  }
41 
42  template <class T>
43  inline
45  m_startEdge = a_vert.getOutgoingEdge();
46  m_curEdge = m_startEdge;
47  m_fullLoop = false;
48  m_iterMode = IterationMode::Vertices;
49  }
50 
51  template <class T>
52  inline
54  m_startEdge = a_vert.getOutgoingEdge();
55  m_curEdge = m_startEdge;
56  m_fullLoop = false;
57  m_iterMode = IterationMode::Vertices;
58  }
59 
60  template <class T>
61  inline
62  std::shared_ptr<EdgeT<T> >& EdgeIteratorT<T>::operator() () noexcept {
63  return (m_curEdge);
64  }
65 
66  template <class T>
67  inline
68  const std::shared_ptr<EdgeT<T> >& EdgeIteratorT<T>::operator() () const noexcept {
69  return (m_curEdge);
70  }
71 
72  template <class T>
73  inline
74  void EdgeIteratorT<T>::reset() noexcept {
75  m_curEdge = m_startEdge;
76  m_fullLoop = false;
77  }
78 
79  template <class T>
80  inline
81  void EdgeIteratorT<T>::operator++() noexcept {
82  switch(m_iterMode){
83  case IterationMode::Faces:
84  m_curEdge = m_curEdge->getNextEdge();
85  break;
86  case IterationMode::Vertices:
87  // For vertices, we want to compute the
88  m_curEdge = m_curEdge->getPreviousEdge()->getPairEdge();
89  break;
90  }
91 
92  m_fullLoop = (m_curEdge == m_startEdge);
93  }
94 
95  template <class T>
96  inline
97  bool EdgeIteratorT<T>::ok() const noexcept {
98  return !m_fullLoop && m_curEdge;
99  }
100 }
101 
103 
104 #endif
bool ok() const noexcept
Function which checks if the iteration can be continued.
Definition: EBGeometry_DcelIteratorImplem.hpp:97
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
EdgePtr & operator()() noexcept
Operator returning a pointer to the current half-edge.
Definition: EBGeometry_DcelIteratorImplem.hpp:62
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
Declaration of iterators for DCEL surface Tesselations.
-
void operator++() noexcept
Incrementation operator, bringing the iterator to the next half-edge.
Definition: EBGeometry_DcelIteratorImplem.hpp:81
-
EdgePtr & getHalfEdge() noexcept
Get modifiable half-edge.
Definition: EBGeometry_DcelFaceImplem.hpp:205
-
EdgeIteratorT()=delete
Default construction is not allowed. Use one of the full constructors.
- -
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
-
EdgePtr & getOutgoingEdge() noexcept
Return modifiable pointer to outgoing edge.
Definition: EBGeometry_DcelVertexImplem.hpp:224
-
void reset() noexcept
Reset function for the iterator. This resets the iterator so that it begins from the starting half-ed...
Definition: EBGeometry_DcelIteratorImplem.hpp:74
- -
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp.html b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp.html deleted file mode 100644 index 112b0b89..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelIterator.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelIterator.hpp File Reference
-
-
- -

Declaration of iterators for DCEL surface Tesselations. -More...

-
-Include dependency graph for EBGeometry_DcelIterator.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Classes

class  Dcel::VertexT< T >
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeT< T >
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
class  Dcel::FaceT< T >
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeIteratorT< T >
 Class which can iterate through edges and vertices around a DCEL polygon face. More...
 
- - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Declaration of iterators for DCEL surface Tesselations.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.map deleted file mode 100644 index ce04528c..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.md5 deleted file mode 100644 index e05302b3..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -08c1cd9c3bf493abfaf499f258853418 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.png deleted file mode 100644 index 01b6ca2a..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.map deleted file mode 100644 index 02d84992..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.md5 deleted file mode 100644 index 00e3e123..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3c2f875058e6e49e94616198888cca27 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.png deleted file mode 100644 index 905c4e84..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelIterator_8hpp_source.html deleted file mode 100644 index 0061710a..00000000 --- a/docs/doxygen/html/EBGeometry__DcelIterator_8hpp_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelIterator.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelIterator.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelIterator
13 #define EBGeometry_DcelIterator
14 
15 // Std includes
16 #include <memory>
17 
18 // Our includes
20 
21 namespace Dcel {
22 
23  // Forward declare classes.
24  template <class T> class VertexT;
25  template <class T> class EdgeT;
26  template <class T> class FaceT;
27 
32  template <class T>
33  class EdgeIteratorT {
34  public:
35 
39  using Vertex = VertexT<T>;
40 
44  using Edge = EdgeT<T>;
45 
49  using Face = FaceT<T>;
50 
54  using VertexPtr = std::shared_ptr<Vertex>;
55 
59  using EdgePtr = std::shared_ptr<Edge>;
60 
64  using FacePtr = std::shared_ptr<Face>;
65 
69  EdgeIteratorT() = delete;
70 
76  EdgeIteratorT(Face& a_face);
77 
83  EdgeIteratorT(const Face& a_face);
84 
90  EdgeIteratorT(Vertex& a_vertex);
91 
97  EdgeIteratorT(const Vertex& a_vertex);
98 
102  inline
103  EdgePtr& operator() () noexcept;
104 
108  inline
109  const EdgePtr& operator() () const noexcept;
110 
114  inline
115  void reset() noexcept;
116 
120  inline
121  void operator++() noexcept;
122 
128  inline
129  bool ok() const noexcept;
130 
131  protected:
132 
136  enum class IterationMode {
137  Vertices,
138  Faces
139  };
140 
145 
150 
154  std::shared_ptr<Edge> m_startEdge;
155 
159  std::shared_ptr<Edge> m_curEdge;
160  };
161 }
162 
164 
166 
167 #endif
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelIterator.hpp:59
-
std::shared_ptr< Edge > m_curEdge
Current half-edge.
Definition: EBGeometry_DcelIterator.hpp:159
-
Implementation of EBGeometry_DcelIterator.hpp.
-
bool ok() const noexcept
Function which checks if the iteration can be continued.
Definition: EBGeometry_DcelIteratorImplem.hpp:97
-
IterationMode
Iteration mode, used to distinguish between the two constructors (face- or vertex-based iteration) ...
Definition: EBGeometry_DcelIterator.hpp:136
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
EdgePtr & operator()() noexcept
Operator returning a pointer to the current half-edge.
Definition: EBGeometry_DcelIteratorImplem.hpp:62
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
IterationMode m_iterMode
Iteration mode. Set in constructor.
Definition: EBGeometry_DcelIterator.hpp:149
-
EdgeIteratorT()=delete
Default construction is not allowed. Use one of the full constructors.
- -
bool m_fullLoop
If true, a full loop has been made around the polygon face.
Definition: EBGeometry_DcelIterator.hpp:144
-
void reset() noexcept
Reset function for the iterator. This resets the iterator so that it begins from the starting half-ed...
Definition: EBGeometry_DcelIteratorImplem.hpp:74
-
std::shared_ptr< Face > FacePtr
Alias to cut down on typing.
Definition: EBGeometry_DcelIterator.hpp:64
- -
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on typing.
Definition: EBGeometry_DcelIterator.hpp:54
-
std::shared_ptr< Edge > m_startEdge
Starting half-edge.
Definition: EBGeometry_DcelIterator.hpp:154
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp.html deleted file mode 100644 index eac7f25a..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelMeshImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelMeshImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_DcelMesh.hpp. -More...

-
-Include dependency graph for EBGeometry_DcelMeshImplem.hpp:
-
-
- - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_DcelMesh.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.map deleted file mode 100644 index 9ae4cde1..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 759e65a6..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d645db245007ac49eeffa4ebb751ba3b \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.png deleted file mode 100644 index 60107cc4..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.map deleted file mode 100644 index 96208ff7..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.md5 deleted file mode 100644 index 2412dd76..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -511ca74b54e9ee2ab8864d01665b1024 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.png deleted file mode 100644 index 9350f98b..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp_source.html deleted file mode 100644 index 17cb6059..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMeshImplem_8hpp_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelMeshImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelMeshImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelMeshImplem
13 #define EBGeometry_DcelMeshImplem
14 
15 // Our includes
16 #include "EBGeometry_DcelMesh.hpp"
19 #include "EBGeometry_DcelEdge.hpp"
20 #include "EBGeometry_DcelFace.hpp"
22 
23 namespace Dcel {
24 
25  template <class T>
26  inline
28  m_algorithm = SearchAlgorithm::Direct2;
29  }
30 
31  template <class T>
32  inline
33  MeshT<T>::MeshT(std::vector<FacePtr >& a_faces,
34  std::vector<EdgePtr >& a_edges,
35  std::vector<VertexPtr >& a_vertices) : MeshT() {
36  this->define(a_faces, a_edges, a_vertices);
37  }
38 
39  template <class T>
40  inline
42 
43  }
44 
45  template <class T>
46  inline
47  void MeshT<T>::define(std::vector<FacePtr >& a_faces,
48  std::vector<EdgePtr >& a_edges,
49  std::vector<VertexPtr >& a_vertices) noexcept{
50  m_faces = a_faces;
51  m_edges = a_edges;
52  m_vertices = a_vertices;
53  }
54 
55  template <class T>
56  inline
57  void MeshT<T>::incrementWarning(std::map<std::string, int>& a_warnings, const std::string& a_warn) const noexcept {
58  a_warnings.at(a_warn) += 1;
59  }
60 
61  template <class T>
62  inline
63  void MeshT<T>::printWarnings(const std::map<std::string, int>& a_warnings) const noexcept {
64  for (const auto& warn : a_warnings){
65  if(warn.second > 0){
66  std::cerr << "In file 'CD_DcelMeshImplem.H' function MeshT<T>::sanityCheck() - warnings about error '" << warn.first << "' = " << warn.second << "\n";
67  }
68  }
69  }
70 
71  template <class T>
72  inline
73  void MeshT<T>::sanityCheck() const noexcept {
74 
75  const std::string f_null = "nullptr face";
76  const std::string f_noEdge = "face with no edge";
77  const std::string f_degenerate = "degenerate face";
78 
79  const std::string e_null = "nullptr edges";
80  const std::string e_degenerate = "degenerate edge";
81  const std::string e_noPairEdge = "no pair edge (not watertight)";
82  const std::string e_noNextEdge = "no next edge (badly linked dcel)";
83  const std::string e_noPrevEdge = "no previous edge (badly linked dcel)";
84  const std::string e_noOrigVert = "no origin vertex found for half edge (badly linked dcel)";
85  const std::string e_noFace = "no face found for half edge (badly linked dcel)";
86  const std::string e_noPrevNext = "previous edge's next edge is not this edge (badly linked dcel)";
87  const std::string e_noNextPrev = "next edge's previous edge is not this edge (badly linked dcel)";
88 
89  const std::string v_null = "nullptr vertex";
90  const std::string v_noEdge = "no referenced edge for vertex (unreferenced vertex)";
91 
92  std::map<std::string, int> warnings = {
93  {f_null, 0},
94  {f_noEdge, 0},
95  {f_degenerate, 0},
96  {e_null, 0},
97  {e_degenerate, 0},
98  {e_noPairEdge, 0},
99  {e_noNextEdge, 0},
100  {e_noPrevEdge, 0},
101  {e_noOrigVert, 0},
102  {e_noFace, 0},
103  {e_noPrevNext, 0},
104  {e_noNextPrev, 0},
105  {v_null, 0},
106  {v_noEdge, 0}
107  };
108 
109  for (const auto& f : m_faces){
110  const auto& halfEdge = f->getHalfEdge();
111 
112  // Check for duplicate vertices
113  auto vertices = f->gatherVertices();
114  std::sort(vertices.begin(), vertices.end());
115  auto it = std::unique(vertices.begin(), vertices.end());
116  const bool noDuplicates = (it == vertices.end());
117 
118  if(f == nullptr){
119  incrementWarning(warnings, f_null);
120  }
121  else if(halfEdge == nullptr){
122  incrementWarning(warnings, f_noEdge);
123  }
124  if(!noDuplicates){
125  incrementWarning(warnings, f_degenerate);
126  }
127  }
128 
129  for (const auto& e : m_edges){
130  const auto& nextEdge = e->getNextEdge();
131  const auto& prevEdge = e->getPreviousEdge();
132  const auto& pairEdge = e->getPairEdge();
133  const auto& curVertex = e->getVertex();
134  const auto& curFace = e->getFace();
135 
136  // Check basic points for current edge.
137  if(e == nullptr) {
138  incrementWarning(warnings, e_null);
139  }
140  else if(e->getVertex() == e->getOtherVertex()){
141  incrementWarning(warnings, e_degenerate);
142  }
143  else if(pairEdge == nullptr){
144  incrementWarning(warnings, e_noPairEdge);
145  }
146  else if(nextEdge == nullptr){
147  incrementWarning(warnings, e_noNextEdge);
148  }
149  else if(prevEdge == nullptr){
150  incrementWarning(warnings, e_noPrevEdge);
151  }
152  else if(curVertex == nullptr){
153  incrementWarning(warnings, e_noOrigVert);
154  }
155  else if(curFace == nullptr){
156  incrementWarning(warnings, e_noFace);
157  }
158 
159  // Check that the next edge's previous edge is this edge.
160  if(prevEdge->getNextEdge() != e){
161  incrementWarning(warnings, e_noPrevNext);
162  }
163  else if(nextEdge->getPreviousEdge() != e){
164  incrementWarning(warnings, e_noNextPrev);
165  }
166  }
167 
168  // Vertex check
169  for (const auto& v : m_vertices){
170  if(v == nullptr){
171  incrementWarning(warnings, v_null);
172  }
173  else if(v->getOutgoingEdge() == nullptr){
174  incrementWarning(warnings, v_noEdge);
175  }
176  }
177 
178  this->printWarnings(warnings);
179  }
180 
181  template <class T>
182  inline
183  void MeshT<T>::setSearchAlgorithm(const SearchAlgorithm a_algorithm) noexcept {
184  m_algorithm = a_algorithm;
185  }
186 
187  template <class T>
188  inline
190  for (auto& f : m_faces){
191  f->setInsideOutsideAlgorithm(a_algorithm);
192  }
193  }
194 
195  template <class T>
196  inline
197  void MeshT<T>::reconcile(typename Dcel::MeshT<T>::VertexNormalWeight a_weight) noexcept {
198  this->reconcileFaces();
199  this->reconcileEdges();
200  this->reconcileVertices(a_weight);
201  }
202 
203  template <class T>
204  inline
205  void MeshT<T>::reconcileFaces() noexcept {
206  for (auto& f : m_faces){
207  f->reconcile();
208  }
209  }
210 
211  template <class T>
212  inline
213  void MeshT<T>::reconcileEdges() noexcept {
214  for (auto& e : m_edges){
215  e->reconcile();
216  }
217  }
218 
219  template <class T>
220  inline
222  for (auto& v : m_vertices){
223  switch(a_weight) {
224  case VertexNormalWeight::None:
225  v->computeVertexNormalAverage();
226  break;
227  case VertexNormalWeight::Angle:
228  v->computeVertexNormalAngleWeighted();
229  break;
230  default:
231  std::cerr << "In file 'CD_DcelMeshImplem.H' function Dcel::MeshT<T>::reconcileVertices(VertexNormalWeighting) - unsupported algorithm requested\n";
232  }
233  }
234  }
235 
236  template <class T>
237  inline
238  std::vector<std::shared_ptr<VertexT<T> > >& MeshT<T>::getVertices() noexcept {
239  return (m_vertices);
240  }
241 
242  template <class T>
243  inline
244  const std::vector<std::shared_ptr<VertexT<T> > >& MeshT<T>::getVertices() const noexcept {
245  return (m_vertices);
246  }
247 
248  template <class T>
249  inline
250  std::vector<std::shared_ptr<EdgeT<T> > >& MeshT<T>::getEdges() noexcept {
251  return (m_edges);
252  }
253 
254  template <class T>
255  inline
256  const std::vector<std::shared_ptr<EdgeT<T> > >& MeshT<T>::getEdges() const noexcept {
257  return (m_edges);
258  }
259 
260  template <class T>
261  inline
262  std::vector<std::shared_ptr<FaceT<T> > >& MeshT<T>::getFaces() noexcept {
263  return (m_faces);
264  }
265 
266  template <class T>
267  inline
268  const std::vector<std::shared_ptr<FaceT<T> > >& MeshT<T>::getFaces() const noexcept {
269  return (m_faces);
270  }
271 
272  template <class T>
273  inline
274  std::vector<Vec3T<T> > MeshT<T>::getAllVertexCoordinates() const noexcept {
275  std::vector<Vec3 > vertexCoordinates;
276  for (const auto& v : m_vertices){
277  vertexCoordinates.emplace_back(v->getPosition());
278  }
279 
280  return vertexCoordinates;
281  }
282 
283  template <class T>
284  inline
285  T MeshT<T>::signedDistance(const Vec3& a_point) const noexcept {
286  return this->signedDistance(a_point, m_algorithm);
287  }
288 
289  template <class T>
290  inline
291  T MeshT<T>::unsignedDistance2(const Vec3& a_point) const noexcept {
292  T minDist2 = std::numeric_limits<T>::max();
293 
294  for (const auto& f : m_faces){
295  const T curDist2 = f->unsignedDistance2(a_point);
296 
297  minDist2 = std::min(minDist2, curDist2);
298  }
299 
300  return minDist2;
301  }
302 
303  template <class T>
304  inline
305  T MeshT<T>::signedDistance(const Vec3& a_point, SearchAlgorithm a_algorithm) const noexcept {
306  T minDist = std::numeric_limits<T>::max();
307 
308  switch(a_algorithm){
309  case SearchAlgorithm::Direct:
310  {
311  minDist = this->DirectSignedDistance(a_point);
312 
313  break;
314  }
315  case SearchAlgorithm::Direct2:
316  {
317  minDist = this->DirectSignedDistance2(a_point);
318 
319  break;
320  }
321  default:
322  {
323  std::cerr << "Error in file 'CD_DcelMeshImplem.H' MeshT<T>::signedDistance unsupported algorithm requested\n";
324 
325  break;
326  }
327  }
328 
329  return minDist;
330  }
331 
332  template <class T>
333  inline
334  T MeshT<T>::DirectSignedDistance(const Vec3& a_point) const noexcept {
335  T minDist = m_faces.front()->signedDistance(a_point);
336  T minDist2 = minDist*minDist;
337 
338  for (const auto& f : m_faces){
339  const T curDist = f->signedDistance(a_point);
340  const T curDist2 = curDist*curDist;
341 
342  if(curDist2 < minDist2){
343  minDist = curDist;
344  minDist2 = curDist2;
345  }
346  }
347 
348  return minDist;
349  }
350 
351  template <class T>
352  inline
353  T MeshT<T>::DirectSignedDistance2(const Vec3& a_point) const noexcept {
354  FacePtr closest = m_faces.front();
355  T minDist2 = closest->unsignedDistance2(a_point);
356 
357  for (const auto& f : m_faces){
358  const T curDist2 = f->unsignedDistance2(a_point);
359 
360  if(curDist2 < minDist2) {
361  closest = f;
362  minDist2 = curDist2;
363  }
364  }
365 
366  return closest->signedDistance(a_point);
367  }
368 }
369 
371 
372 #endif
std::vector< VertexPtr > & getVertices() noexcept
Get modifiable vertices in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:238
-
void reconcileEdges() noexcept
Function which computes internal things for the half-edges.
Definition: EBGeometry_DcelMeshImplem.hpp:213
-
MeshT()
Default constructor. Leaves unobject in an unusable state.
Definition: EBGeometry_DcelMeshImplem.hpp:27
-
void incrementWarning(std::map< std::string, int > &a_warnings, const std::string &a_warn) const noexcept
Increment a warning. This is used in sanityCheck() for locating holes or bad inputs in the mesh...
Definition: EBGeometry_DcelMeshImplem.hpp:57
-
T signedDistance(const Vec3 &a_x0) const noexcept
Compute the signed distance from a point to this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:285
-
std::vector< EdgePtr > m_edges
Mesh half-edges.
Definition: EBGeometry_DcelMesh.hpp:259
-
T DirectSignedDistance2(const Vec3 &a_point) const noexcept
Implementation of squared signed distance function which iterates through all faces.
Definition: EBGeometry_DcelMeshImplem.hpp:353
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
void reconcileFaces() noexcept
Function which computes internal things for the polygon faces.
Definition: EBGeometry_DcelMeshImplem.hpp:205
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Compute the unsigned square distance from a point to this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:291
-
Declaration of a mesh class which stores a DCEL mesh (with signed distance functions) ...
-
~MeshT()
Destructor (does nothing)
Definition: EBGeometry_DcelMeshImplem.hpp:41
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
std::vector< FacePtr > & getFaces() noexcept
Get modifiable faces in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:262
-
void reconcileVertices(typename Dcel::MeshT< T >::VertexNormalWeight a_weight) noexcept
Function which computes internal things for the vertices.
Definition: EBGeometry_DcelMeshImplem.hpp:221
-
Mesh class which stores a full DCEL mesh (with signed distance functions)
Definition: EBGeometry_DcelMesh.hpp:43
-
VertexNormalWeight
How to weight vertex normal.
Definition: EBGeometry_DcelMesh.hpp:58
-
Declaration of iterators for DCEL surface Tesselations.
-
SearchAlgorithm
Possible search algorithms for Dcel::MeshT.
Definition: EBGeometry_DcelMesh.hpp:50
-
SearchAlgorithm m_algorithm
Search algorithm. Only used in signed distance functions.
Definition: EBGeometry_DcelMesh.hpp:249
-
std::vector< EdgePtr > & getEdges() noexcept
Get modifiable half-edges in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:250
-
InsideOutsideAlgorithm
Supported algorithms for performing inside/outside tests when checking if a point projects to the ins...
Definition: EBGeometry_DcelPolygon2D.hpp:41
-
void setSearchAlgorithm(const SearchAlgorithm a_algorithm) noexcept
Search algorithm for direct signed distance computations.
Definition: EBGeometry_DcelMeshImplem.hpp:183
-
std::vector< FacePtr > m_faces
Mesh faces.
Definition: EBGeometry_DcelMesh.hpp:264
-
void printWarnings(const std::map< std::string, int > &a_warnings) const noexcept
Print all warnings to std::cerr.
Definition: EBGeometry_DcelMeshImplem.hpp:63
-
T DirectSignedDistance(const Vec3 &a_point) const noexcept
Implementation of signed distance function which iterates through all faces.
Definition: EBGeometry_DcelMeshImplem.hpp:334
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
std::shared_ptr< Face > FacePtr
Alias to cut down on the typing.
Definition: EBGeometry_DcelMesh.hpp:96
-
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
- -
void setInsideOutsideAlgorithm(typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm a_algorithm) noexcept
Set the inside/outside algorithm to use when computing the signed distance to polygon faces...
Definition: EBGeometry_DcelMeshImplem.hpp:189
-
void reconcile(typename Dcel::MeshT< T >::VertexNormalWeight a_weight=VertexNormalWeight::Angle) noexcept
Reconcile function which computes the internal parameters in vertices, edges, and faces for use with ...
Definition: EBGeometry_DcelMeshImplem.hpp:197
-
std::vector< Vec3T< T > > getAllVertexCoordinates() const noexcept
Return all vertex coordinates in the mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:274
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
void sanityCheck() const noexcept
Perform a sanity check.
Definition: EBGeometry_DcelMeshImplem.hpp:73
-
void define(std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices) noexcept
Define function. Puts Mesh in usable state.
Definition: EBGeometry_DcelMeshImplem.hpp:47
-
std::vector< VertexPtr > m_vertices
Mesh vertices.
Definition: EBGeometry_DcelMesh.hpp:254
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp.html b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp.html deleted file mode 100644 index 577c6a9e..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelMesh.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelMesh.hpp File Reference
-
-
- -

Declaration of a mesh class which stores a DCEL mesh (with signed distance functions) -More...

-
#include <vector>
-#include <memory>
-#include <functional>
-#include <map>
-#include "EBGeometry_DcelPolygon2D.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_DcelMeshImplem.hpp"
-
-Include dependency graph for EBGeometry_DcelMesh.hpp:
-
-
- - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - -

-Classes

class  Dcel::VertexT< T >
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeT< T >
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
class  Dcel::FaceT< T >
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
class  Dcel::Polygon2D< T >
 Class for embedding a DCEL polygon face into 2D. More...
 
class  Dcel::MeshT< T >
 Mesh class which stores a full DCEL mesh (with signed distance functions) More...
 
- - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Declaration of a mesh class which stores a DCEL mesh (with signed distance functions)

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.map deleted file mode 100644 index 7e27195f..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.md5 deleted file mode 100644 index 1dc7970c..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e049adf16a6bd78d6dc2941082f82a12 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.png deleted file mode 100644 index 534f45e1..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.map deleted file mode 100644 index d06c309b..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.md5 deleted file mode 100644 index 9987f235..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c5f0ebc0e1742a3d2540ec15a15ef921 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.png deleted file mode 100644 index b5e744e3..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelMesh_8hpp_source.html deleted file mode 100644 index 0b546244..00000000 --- a/docs/doxygen/html/EBGeometry__DcelMesh_8hpp_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelMesh.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelMesh.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelMesh
13 #define EBGeometry_DcelMesh
14 
15 // Std includes
16 #include <vector>
17 #include <memory>
18 #include <functional>
19 #include <map>
20 
21 // Our includes
24 
25 namespace Dcel {
26 
27  // Forward declare classes.
28  template <class T> class VertexT;
29  template <class T> class EdgeT;
30  template <class T> class FaceT;
31  template <class T> class Polygon2D;
32 
42  template <class T>
43  class MeshT {
44  public:
45 
50  enum class SearchAlgorithm{
51  Direct,
52  Direct2,
53  };
54 
58  enum class VertexNormalWeight {
59  None,
60  Angle,
61  };
62 
66  using Vec3 = Vec3T<T>;
67 
71  using Vertex = VertexT<T>;
72 
76  using Edge = EdgeT<T>;
77 
81  using Face = FaceT<T>;
82 
86  using VertexPtr = std::shared_ptr<Vertex>;
87 
91  using EdgePtr = std::shared_ptr<Edge>;
92 
96  using FacePtr = std::shared_ptr<Face>;
97 
101  using Mesh = MeshT<T>;
102 
106  MeshT();
107 
112  MeshT(const Mesh& a_otherMesh) = delete;
113 
123  MeshT(std::vector<FacePtr >& a_faces,
124  std::vector<EdgePtr >& a_edges,
125  std::vector<VertexPtr >& a_vertices);
126 
130  ~MeshT();
131 
141  inline
142  void define(std::vector<FacePtr >& a_faces,
143  std::vector<EdgePtr >& a_edges,
144  std::vector<VertexPtr >& a_vertices) noexcept;
145 
151  inline
152  void sanityCheck() const noexcept;
153 
158  inline
159  void setSearchAlgorithm(const SearchAlgorithm a_algorithm) noexcept;
160 
167  inline
168  void setInsideOutsideAlgorithm(typename Dcel::Polygon2D<T>::InsideOutsideAlgorithm a_algorithm) noexcept;
169 
175  inline
176  void reconcile(typename Dcel::MeshT<T>::VertexNormalWeight a_weight = VertexNormalWeight::Angle) noexcept;
177 
181  inline
182  std::vector<VertexPtr>& getVertices() noexcept;
183 
187  inline
188  const std::vector<VertexPtr>& getVertices() const noexcept;
189 
193  inline
194  std::vector<EdgePtr>& getEdges() noexcept;
195 
199  inline
200  const std::vector<EdgePtr>& getEdges() const noexcept;
201 
205  inline
206  std::vector<FacePtr>& getFaces() noexcept;
207 
211  inline
212  const std::vector<FacePtr>& getFaces() const noexcept;
213 
221  inline
222  T signedDistance(const Vec3& a_x0) const noexcept;
223 
231  inline
232  T signedDistance(const Vec3& a_x0, SearchAlgorithm a_algorithm) const noexcept;
233 
241  inline
242  T unsignedDistance2(const Vec3& a_x0) const noexcept;
243 
244  protected:
245 
250 
254  std::vector<VertexPtr> m_vertices;
255 
259  std::vector<EdgePtr> m_edges;
260 
264  std::vector<FacePtr> m_faces;
265 
269  inline
270  std::vector<Vec3T<T> > getAllVertexCoordinates() const noexcept;
271 
276  inline
277  void reconcileFaces() noexcept;
278 
283  inline
284  void reconcileEdges() noexcept;
285 
291  inline
292  void reconcileVertices(typename Dcel::MeshT<T>::VertexNormalWeight a_weight) noexcept;
293 
298  inline
299  T DirectSignedDistance(const Vec3& a_point) const noexcept;
300 
306  inline
307  T DirectSignedDistance2(const Vec3& a_point) const noexcept;
308 
314  inline
315  void incrementWarning(std::map<std::string, int>& a_warnings, const std::string& a_warn) const noexcept;
316 
320  inline
321  void printWarnings(const std::map<std::string, int>& a_warnings) const noexcept;
322  };
323 }
324 
325 #include "EBGeometry_NamespaceFooter.hpp"
326 
328 
329 #endif
std::vector< VertexPtr > & getVertices() noexcept
Get modifiable vertices in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:238
-
void reconcileEdges() noexcept
Function which computes internal things for the half-edges.
Definition: EBGeometry_DcelMeshImplem.hpp:213
-
MeshT()
Default constructor. Leaves unobject in an unusable state.
Definition: EBGeometry_DcelMeshImplem.hpp:27
-
void incrementWarning(std::map< std::string, int > &a_warnings, const std::string &a_warn) const noexcept
Increment a warning. This is used in sanityCheck() for locating holes or bad inputs in the mesh...
Definition: EBGeometry_DcelMeshImplem.hpp:57
-
T signedDistance(const Vec3 &a_x0) const noexcept
Compute the signed distance from a point to this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:285
-
std::vector< EdgePtr > m_edges
Mesh half-edges.
Definition: EBGeometry_DcelMesh.hpp:259
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
T DirectSignedDistance2(const Vec3 &a_point) const noexcept
Implementation of squared signed distance function which iterates through all faces.
Definition: EBGeometry_DcelMeshImplem.hpp:353
-
void reconcileFaces() noexcept
Function which computes internal things for the polygon faces.
Definition: EBGeometry_DcelMeshImplem.hpp:205
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Compute the unsigned square distance from a point to this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:291
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
~MeshT()
Destructor (does nothing)
Definition: EBGeometry_DcelMeshImplem.hpp:41
-
std::vector< FacePtr > & getFaces() noexcept
Get modifiable faces in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:262
-
Declaration of a two-dimensional polygon class for embedding 3D polygon faces.
-
void reconcileVertices(typename Dcel::MeshT< T >::VertexNormalWeight a_weight) noexcept
Function which computes internal things for the vertices.
Definition: EBGeometry_DcelMeshImplem.hpp:221
-
Mesh class which stores a full DCEL mesh (with signed distance functions)
Definition: EBGeometry_DcelMesh.hpp:43
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
VertexNormalWeight
How to weight vertex normal.
Definition: EBGeometry_DcelMesh.hpp:58
-
SearchAlgorithm
Possible search algorithms for Dcel::MeshT.
Definition: EBGeometry_DcelMesh.hpp:50
-
SearchAlgorithm m_algorithm
Search algorithm. Only used in signed distance functions.
Definition: EBGeometry_DcelMesh.hpp:249
-
std::vector< EdgePtr > & getEdges() noexcept
Get modifiable half-edges in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:250
-
void setSearchAlgorithm(const SearchAlgorithm a_algorithm) noexcept
Search algorithm for direct signed distance computations.
Definition: EBGeometry_DcelMeshImplem.hpp:183
-
std::vector< FacePtr > m_faces
Mesh faces.
Definition: EBGeometry_DcelMesh.hpp:264
-
void printWarnings(const std::map< std::string, int > &a_warnings) const noexcept
Print all warnings to std::cerr.
Definition: EBGeometry_DcelMeshImplem.hpp:63
-
Implementation of EBGeometry_DcelMesh.hpp.
-
T DirectSignedDistance(const Vec3 &a_point) const noexcept
Implementation of signed distance function which iterates through all faces.
Definition: EBGeometry_DcelMeshImplem.hpp:334
-
std::shared_ptr< Edge > EdgePtr
Alias to cut down on the typing.
Definition: EBGeometry_DcelMesh.hpp:91
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
std::shared_ptr< Face > FacePtr
Alias to cut down on the typing.
Definition: EBGeometry_DcelMesh.hpp:96
- -
void setInsideOutsideAlgorithm(typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm a_algorithm) noexcept
Set the inside/outside algorithm to use when computing the signed distance to polygon faces...
Definition: EBGeometry_DcelMeshImplem.hpp:189
-
void reconcile(typename Dcel::MeshT< T >::VertexNormalWeight a_weight=VertexNormalWeight::Angle) noexcept
Reconcile function which computes the internal parameters in vertices, edges, and faces for use with ...
Definition: EBGeometry_DcelMeshImplem.hpp:197
-
std::vector< Vec3T< T > > getAllVertexCoordinates() const noexcept
Return all vertex coordinates in the mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:274
-
void sanityCheck() const noexcept
Perform a sanity check.
Definition: EBGeometry_DcelMeshImplem.hpp:73
-
Class for embedding a DCEL polygon face into 2D.
Definition: EBGeometry_DcelMesh.hpp:31
-
void define(std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices) noexcept
Define function. Puts Mesh in usable state.
Definition: EBGeometry_DcelMeshImplem.hpp:47
-
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on the typing.
Definition: EBGeometry_DcelMesh.hpp:86
-
std::vector< VertexPtr > m_vertices
Mesh vertices.
Definition: EBGeometry_DcelMesh.hpp:254
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp.html deleted file mode 100644 index a8af858b..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelParserImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelParserImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_DcelParser.hpp. -More...

-
#include <iostream>
-#include <fstream>
-#include <iterator>
-#include <sstream>
-#include "EBGeometry_DcelParser.hpp"
-#include "EBGeometry_DcelVertex.hpp"
-#include "EBGeometry_DcelEdge.hpp"
-#include "EBGeometry_DcelFace.hpp"
-#include "EBGeometry_DcelMesh.hpp"
-#include "EBGeometry_DcelIterator.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-
-Include dependency graph for EBGeometry_DcelParserImplem.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_DcelParser.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.map deleted file mode 100644 index 4597cb59..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 85d7a18f..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c69f46e938073ec939001fada5458866 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.png deleted file mode 100644 index 3a00d09d..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.map deleted file mode 100644 index 99795115..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.map +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.md5 deleted file mode 100644 index fdd9a66c..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -888d8d819f35d6bde91f5e96cba3105f \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.png deleted file mode 100644 index dbcd4255..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp_source.html deleted file mode 100644 index 20e58197..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParserImplem_8hpp_source.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelParserImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelParserImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelParserImplem
13 #define EBGeometry_DcelParserImplem
14 
15 // Std includes
16 #include <iostream>
17 #include <fstream>
18 #include <iterator>
19 #include <sstream>
20 
21 // Our includes
24 #include "EBGeometry_DcelEdge.hpp"
25 #include "EBGeometry_DcelFace.hpp"
26 #include "EBGeometry_DcelMesh.hpp"
29 
30 namespace Dcel {
31 
32  template <class T>
33  inline
34  std::shared_ptr<EBGeometry::Dcel::MeshT<T> > Parser::PLY<T>::readASCII(const std::string a_filename) {
35  auto mesh = std::make_shared<Mesh>();
36 
37  readASCII(*mesh, a_filename);
38 
39  return mesh;
40  }
41 
42  template <class T>
43  inline
44  void Parser::PLY<T>::readASCII(Mesh& a_mesh, const std::string a_filename) {
45  std::ifstream filestream(a_filename);
46 
47  if(filestream.is_open()){
48  std::vector<std::shared_ptr<Vertex> >& vertices = a_mesh.getVertices();
49  std::vector<std::shared_ptr<Edge> >& edges = a_mesh.getEdges();
50  std::vector<std::shared_ptr<Face> >& faces = a_mesh.getFaces();
51 
52  vertices.resize(0);
53  edges.resize(0);
54  faces.resize(0);
55 
56  int numVertices; // Number of vertices
57  int numFaces; // Number of faces
58 
59  Dcel::Parser::PLY<T>::readHeaderASCII(numVertices, numFaces, filestream);
60  Dcel::Parser::PLY<T>::readVerticesASCII(vertices, numVertices, filestream);
61  Dcel::Parser::PLY<T>::readFacesASCII(faces, edges, vertices, numFaces, filestream);
63 
64  a_mesh.sanityCheck();
65 
66  filestream.close();
67 
68  a_mesh.reconcile(EBGeometry::Dcel::MeshT<T>::VertexNormalWeight::Angle);
69  }
70  else{
71  const std::string error = "Dcel::Parser::PLY::readASCII - ERROR! Could not open file " + a_filename;
72  std::cerr << error + "\n";
73  }
74  }
75 
76  template <class T>
77  inline
78  void Parser::PLY<T>::readHeaderASCII(int& a_numVertices,
79  int& a_numFaces,
80  std::ifstream& a_inputStream) {
81 
82  std::string str1;
83  std::string str2;
84  std::string line;
85 
86  // Get number of vertices
87  a_inputStream.clear();
88  a_inputStream.seekg(0);
89  while (getline(a_inputStream, line)){
90  std::stringstream sstream(line);
91  sstream >> str1 >> str2 >> a_numVertices;
92  if(str1 == "element" && str2 == "vertex"){
93  break;
94  }
95  }
96 
97  // Get number of faces
98  a_inputStream.clear();
99  a_inputStream.seekg(0);
100  while (getline(a_inputStream, line)){
101  std::stringstream sstream(line);
102  sstream >> str1 >> str2 >> a_numFaces;
103  if(str1 == "element" && str2 == "face"){
104  break;
105  }
106  }
107 
108  // Find the line # containing "end_header" halt the input stream there
109  a_inputStream.clear();
110  a_inputStream.seekg(0);
111  while (getline(a_inputStream, line)){
112  std::stringstream sstream(line);
113  sstream >> str1;
114  if(str1 == "end_header"){
115  break;
116  }
117  }
118  }
119 
120  template <class T>
121  inline
122  void Parser::PLY<T>::readVerticesASCII(std::vector<std::shared_ptr<Vertex> >& a_vertices,
123  const int a_numVertices,
124  std::ifstream& a_inputStream) {
125 
126  Vec3T<T> pos;
127  T& x = pos[0];
128  T& y = pos[1];
129  T& z = pos[2];
130 
131  Vec3T<T> norm;
132  T& nx = norm[0];
133  T& ny = norm[1];
134  T& nz = norm[2];
135 
136  int num = 0;
137 
138  std::string line;
139  while(std::getline(a_inputStream, line)){
140  std::stringstream sstream(line);
141  sstream >> x >> y >> z >> nx >> ny >> nz;
142 
143  a_vertices.emplace_back(std::make_shared<Vertex>(pos, norm));
144 
145  // We have read all the vertices we should read. Exit now -- after this the inputStream will begin reading faces.
146  num++;
147  if(num == a_numVertices) break;
148  }
149  }
150 
151  template <class T>
152  inline
153  void Dcel::Parser::PLY<T>::readFacesASCII(std::vector<std::shared_ptr<Face> >& a_faces,
154  std::vector<std::shared_ptr<Edge> >& a_edges,
155  const std::vector<std::shared_ptr<Vertex> >& a_vertices,
156  const int a_numFaces,
157  std::ifstream& a_inputStream) {
158  int numVertices;
159  std::vector<int> vertexIndices;
160 
161  std::string line;
162  int counter = 0;
163  while(std::getline(a_inputStream, line)){
164  counter++;
165 
166  std::stringstream sstream(line);
167 
168  sstream >> numVertices;
169  vertexIndices.resize(numVertices);
170  for (int i = 0; i < numVertices; i++){
171  sstream >> vertexIndices[i];
172  }
173 
174  if(numVertices < 3) std::cerr << "Dcel::Parser::PLY::readFacesASCII - a face must have at least three vertices!\n";
175 
176  // Get the vertices that make up this face.
177  std::vector<std::shared_ptr<Vertex> > curVertices;
178  for (int i = 0; i < numVertices; i++){
179  const int vertexIndex = vertexIndices[i];
180  curVertices.emplace_back(a_vertices[vertexIndex]);
181  }
182 
183  // Build inside half edges and give each vertex an outgoing half edge. This may get overwritten later,
184  // but the outgoing edge is not unique so it doesn't matter.
185  std::vector<std::shared_ptr<Edge> > halfEdges;
186  for (const auto& v : curVertices){
187  halfEdges.emplace_back(std::make_shared<Edge>(v));
188  v->setEdge(halfEdges.back());
189  }
190 
191  a_edges.insert(a_edges.end(), halfEdges.begin(), halfEdges.end());
192 
193  // Associate next/previous for the half edges inside the current face. Wish we had a circular iterator
194  // but this will have to do.
195  for (unsigned int i = 0; i < halfEdges.size(); i++){
196  auto& curEdge = halfEdges[i];
197  auto& nextEdge = halfEdges[(i+1)%halfEdges.size()];
198 
199  curEdge->setNextEdge(nextEdge);
200  nextEdge->setPreviousEdge(curEdge);
201  }
202 
203  // Construct a new face
204  a_faces.emplace_back(std::make_shared<Face>(halfEdges.front()));
205  auto& curFace = a_faces.back();
206 
207  // Half edges get a reference to the currently created face
208  for (auto& e : halfEdges){
209  e->setFace(curFace);
210  }
211 
212  // Must give vertices access to all faces associated with them since PLY files do not give any edge association.
213  for (auto& v : curVertices){
214  v->addFace(curFace);
215  }
216 
217 
218  if(counter == a_numFaces) break;
219  }
220  }
221 
222  template <class T>
223  inline
224  void Parser::PLY<T>::reconcilePairEdges(std::vector<std::shared_ptr<Edge> >& a_edges) {
225  for (auto& curEdge : a_edges){
226  const auto& nextEdge = curEdge->getNextEdge();
227 
228  const auto& vertexStart = curEdge->getVertex();
229  const auto& vertexEnd = nextEdge->getVertex();
230 
231  for (const auto& p : vertexStart->getFaces()){
232  for (EdgeIterator edgeIt(*p); edgeIt.ok(); ++edgeIt){
233  const auto& polyCurEdge = edgeIt();
234  const auto& polyNextEdge = polyCurEdge->getNextEdge();
235 
236  const auto& polyVertexStart = polyCurEdge->getVertex();
237  const auto& polyVertexEnd = polyNextEdge->getVertex();
238 
239  if(vertexStart == polyVertexEnd && polyVertexStart == vertexEnd){ // Found the pair edge
240  curEdge->setPairEdge(polyCurEdge);
241  polyCurEdge->setPairEdge(curEdge);
242  }
243  }
244  }
245  }
246  }
247 }
248 
250 
251 #endif
Declaration of utilities for passing data into DCEL structures.
-
std::vector< VertexPtr > & getVertices() noexcept
Get modifiable vertices in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:238
-
static std::shared_ptr< Mesh > readASCII(const std::string a_filename)
Static function which reads an ASCII .ply file and returns a DCEL mesh.
Definition: EBGeometry_DcelParserImplem.hpp:34
-
bool ok() const noexcept
Function which checks if the iteration can be continued.
Definition: EBGeometry_DcelIteratorImplem.hpp:97
-
static void readFacesASCII(std::vector< std::shared_ptr< Face > > &a_faces, std::vector< std::shared_ptr< Edge > > &a_edges, const std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numFaces, std::ifstream &a_inputStream)
Read ASCII faces and create mesh connectivity.
Definition: EBGeometry_DcelParserImplem.hpp:153
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
Declaration of a mesh class which stores a DCEL mesh (with signed distance functions) ...
-
static void readHeaderASCII(int &a_numVertices, int &a_numFaces, std::ifstream &a_inputStream)
Read an ASCII header.
Definition: EBGeometry_DcelParserImplem.hpp:78
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
std::vector< FacePtr > & getFaces() noexcept
Get modifiable faces in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:262
-
Mesh class which stores a full DCEL mesh (with signed distance functions)
Definition: EBGeometry_DcelMesh.hpp:43
-
Declaration of iterators for DCEL surface Tesselations.
-
std::vector< EdgePtr > & getEdges() noexcept
Get modifiable half-edges in this mesh.
Definition: EBGeometry_DcelMeshImplem.hpp:250
-
static void readVerticesASCII(std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numVertices, std::ifstream &a_inputStream)
Read ASCII vertices.
Definition: EBGeometry_DcelParserImplem.hpp:122
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
- -
void reconcile(typename Dcel::MeshT< T >::VertexNormalWeight a_weight=VertexNormalWeight::Angle) noexcept
Reconcile function which computes the internal parameters in vertices, edges, and faces for use with ...
Definition: EBGeometry_DcelMeshImplem.hpp:197
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
void sanityCheck() const noexcept
Perform a sanity check.
Definition: EBGeometry_DcelMeshImplem.hpp:73
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
static void reconcilePairEdges(std::vector< std::shared_ptr< Edge > > &a_edges)
Reconcile pair edges, i.e. find the pair edge for every constructed half-edge.
Definition: EBGeometry_DcelParserImplem.hpp:224
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp.html b/docs/doxygen/html/EBGeometry__DcelParser_8hpp.html deleted file mode 100644 index 539433ed..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParser_8hpp.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelParser.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelParser.hpp File Reference
-
-
- -

Declaration of utilities for passing data into DCEL structures. -More...

-
#include <vector>
-#include <memory>
-#include <map>
-#include "EBGeometry_DcelVertex.hpp"
-#include "EBGeometry_DcelEdge.hpp"
-#include "EBGeometry_DcelFace.hpp"
-#include "EBGeometry_DcelMesh.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_DcelParserImplem.hpp"
-
-Include dependency graph for EBGeometry_DcelParser.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Dcel::Parser::PLY< T >
 Class for generation a Dcel::MeshT<T> from the Stanford PLY file format. More...
 
- - - - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
 Dcel::Parser
 Namespace which encapsulates possible file parsers for building DCEL meshes.
 
-

Detailed Description

-

Declaration of utilities for passing data into DCEL structures.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.map deleted file mode 100644 index 1d1f1f16..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.md5 deleted file mode 100644 index 993aa789..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9d4c84a2c539e84ca13af6ded4ad4264 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.png deleted file mode 100644 index 0e543620..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.map deleted file mode 100644 index 0fced4f6..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.map +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.md5 deleted file mode 100644 index 82ba8484..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -770dcca1b3f86d3c5fe5cbbd463914c0 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.png deleted file mode 100644 index 3236bf3a..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelParser_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelParser_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelParser_8hpp_source.html deleted file mode 100644 index 0926358c..00000000 --- a/docs/doxygen/html/EBGeometry__DcelParser_8hpp_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelParser.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelParser.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelParser
13 #define EBGeometry_DcelParser
14 
15 // Std includes
16 #include <vector>
17 #include <memory>
18 #include <map>
19 
20 // Our includes
22 #include "EBGeometry_DcelEdge.hpp"
23 #include "EBGeometry_DcelFace.hpp"
24 #include "EBGeometry_DcelMesh.hpp"
26 
27 namespace Dcel {
28 
32  namespace Parser {
33 
38  template <class T>
39  class PLY {
40  public:
41 
45  using Vertex = VertexT<T>;
46 
50  using Edge = EdgeT<T>;
51 
55  using Face = FaceT<T>;
56 
60  using Mesh = MeshT<T>;
61 
66 
71  inline
72  static std::shared_ptr<Mesh> readASCII(const std::string a_filename);
73 
79  inline
80  static void readASCII(Mesh& a_mesh, const std::string a_filename);
81 
82  protected:
83 
91  inline
92  static void readHeaderASCII(int& a_numVertices,
93  int& a_numFaces,
94  std::ifstream& a_inputStream);
95 
103  inline
104  static void readVerticesASCII(std::vector<std::shared_ptr<Vertex> >& a_vertices,
105  const int a_numVertices,
106  std::ifstream& a_inputStream);
107 
118  inline
119  static void readFacesASCII(std::vector<std::shared_ptr<Face> >& a_faces,
120  std::vector<std::shared_ptr<Edge> >& a_edges,
121  const std::vector<std::shared_ptr<Vertex> >& a_vertices,
122  const int a_numFaces,
123  std::ifstream& a_inputStream);
124 
129  inline
130  static void reconcilePairEdges(std::vector<std::shared_ptr<Edge> >& a_edges);
131  };
132  }
133 }
134 
136 
138 
139 #endif
Class for generation a Dcel::MeshT<T> from the Stanford PLY file format.
Definition: EBGeometry_DcelParser.hpp:39
-
static std::shared_ptr< Mesh > readASCII(const std::string a_filename)
Static function which reads an ASCII .ply file and returns a DCEL mesh.
Definition: EBGeometry_DcelParserImplem.hpp:34
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
static void readFacesASCII(std::vector< std::shared_ptr< Face > > &a_faces, std::vector< std::shared_ptr< Edge > > &a_edges, const std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numFaces, std::ifstream &a_inputStream)
Read ASCII faces and create mesh connectivity.
Definition: EBGeometry_DcelParserImplem.hpp:153
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
Declaration of a mesh class which stores a DCEL mesh (with signed distance functions) ...
-
static void readHeaderASCII(int &a_numVertices, int &a_numFaces, std::ifstream &a_inputStream)
Read an ASCII header.
Definition: EBGeometry_DcelParserImplem.hpp:78
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
Mesh class which stores a full DCEL mesh (with signed distance functions)
Definition: EBGeometry_DcelMesh.hpp:43
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
static void readVerticesASCII(std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numVertices, std::ifstream &a_inputStream)
Read ASCII vertices.
Definition: EBGeometry_DcelParserImplem.hpp:122
- -
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
- -
Implementation of EBGeometry_DcelParser.hpp.
-
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
static void reconcilePairEdges(std::vector< std::shared_ptr< Edge > > &a_edges)
Reconcile pair edges, i.e. find the pair edge for every constructed half-edge.
Definition: EBGeometry_DcelParserImplem.hpp:224
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp.html deleted file mode 100644 index cb2450e3..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelPolygon2DImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelPolygon2DImplem.hpp File Reference
-
-
- -

Implementation of DcelPolygon.hpp. -More...

-
#include <iostream>
-#include "EBGeometry_DcelPolygon2D.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-
-Include dependency graph for EBGeometry_DcelPolygon2DImplem.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of DcelPolygon.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.map deleted file mode 100644 index 97caa531..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.md5 deleted file mode 100644 index f325e581..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -baa3979a35268f23acfb45388c0089d2 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.png deleted file mode 100644 index ff079b25..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.map deleted file mode 100644 index 7a83e823..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.md5 deleted file mode 100644 index 13393ef9..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7a6612cf98b53b7c93116a59ec87116e \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.png deleted file mode 100644 index 733bd015..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp_source.html deleted file mode 100644 index ce4b8e7b..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2DImplem_8hpp_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelPolygon2DImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelPolygon2DImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelPolygon2DImplem
13 #define EBGeometry_DcelPolygon2DImplem
14 
15 // Std includes
16 #include <iostream>
17 
18 // Our includes
21 
22 namespace Dcel {
23 
24  template <class T>
25  inline
26  Polygon2D<T>::Polygon2D(const Vec3& a_normal, const std::vector<Vec3>& a_points) {
27  this->define(a_normal, a_points);
28  }
29 
30  template <class T>
31  inline
32  bool Polygon2D<T>::isPointInside(const Vec3& a_point, const InsideOutsideAlgorithm a_algorithm) const noexcept {
33  bool ret =false;
34 
35  switch(a_algorithm){
36  case InsideOutsideAlgorithm::SubtendedAngle:
37  {
38  ret = this->isPointInsidePolygonSubtend(a_point);
39 
40  break;
41  }
42  case InsideOutsideAlgorithm::CrossingNumber:
43  {
44  ret = this->isPointInsidePolygonCrossingNumber(a_point);
45 
46  break;
47  }
48  case InsideOutsideAlgorithm::WindingNumber:
49  {
50  ret = this->isPointInsidePolygonWindingNumber(a_point);
51 
52  break;
53  }
54  default:
55  std::cerr << "In file 'CD_DcelPolygon2DImplem.H' function Dcel::Polygon2D<T>::isPointInside - logic bust.\n";
56  }
57 
58  return ret;
59  }
60 
61  template <class T>
62  inline
63  Vec2T<T> Polygon2D<T>::projectPoint(const Vec3& a_point) const noexcept {
64  return Vec2(a_point[m_xDir], a_point[m_yDir]);
65  }
66 
67  template <class T>
68  inline
69  void Polygon2D<T>::define(const Vec3& a_normal, const std::vector<Vec3>& a_points) {
70  m_ignoreDir = 0;
71 
72  for (int dir = 1; dir < 3; dir++){
73  if(std::abs(a_normal[dir]) > std::abs(a_normal[m_ignoreDir])) {
74  m_ignoreDir = dir;
75  }
76  }
77 
78  m_xDir = 3;
79  m_yDir = -1;
80 
81  for (int dir = 0; dir < 3; dir++){
82  if(dir != m_ignoreDir){
83  m_xDir = std::min(m_xDir, dir);
84  m_yDir = std::max(m_yDir, dir);
85  }
86  }
87 
88  for (const auto& p3 : a_points){
89  m_points.emplace_back(this->projectPoint(p3));
90  }
91  }
92 
93  template <class T>
94  inline
95  int Polygon2D<T>::computeWindingNumber(const Vec2& P) const noexcept {
96  int wn = 0; // the winding number counter
97 
98  const int N = m_points.size();
99 
100  auto isLeft = [](const Vec2& P0, const Vec2& P1, const Vec2& P2){
101  return (P1.x - P0.x)*(P2.y - P0.y) - (P2.x - P0.x)*(P1.y - P0.y);
102  };
103 
104  // loop through all edges of the polygon
105  for (int i = 0; i < N; i++) { // edge from V[i] to V[i+1]
106 
107  const Vec2& P1 = m_points[i];
108  const Vec2& P2 = m_points[(i+1)%N];
109 
110  const T res = isLeft(P1, P2, P);
111 
112  if (P1.y <= P.y) { // start y <= P.y
113  if (P2.y > P.y) // an upward crossing
114  if (res > 0.) // P left of edge
115  ++wn; // have a valid up intersect
116  }
117  else { // start y > P.y (no test needed)
118  if (P2.y <= P.y) // a downward crossing
119  if (res < 0.) // P right of edge
120  --wn; // have a valid down intersect
121  }
122  }
123 
124  return wn;
125  }
126 
127  template <class T>
128  inline
129  int Polygon2D<T>::computeCrossingNumber(const Vec2& P) const noexcept {
130  int cn = 0;
131 
132  const int N = m_points.size();
133 
134  for (int i = 0; i < N; i++) { // edge from V[i] to V[i+1]
135  const Vec2& P1 = m_points[i];
136  const Vec2& P2 = m_points[(i+1)%N];
137 
138  const bool upwardCrossing = (P1.y <= P.y) && (P2.y > P.y);
139  const bool downwardCrossing = (P1.y > P.y) && (P2.y <= P.y);
140 
141  if(upwardCrossing || downwardCrossing){
142  const T t = (P.y - P1.y)/(P2.y - P1.y);
143 
144  if (P.x < P1.x + t * (P2.x - P1.x)) {// P.x < intersect
145  cn += 1; // a valid crossing of y=P.y right of P.x
146  }
147  }
148  }
149 
150  return cn;
151  }
152 
153  template <class T>
154  inline
155  T Polygon2D<T>::computeSubtendedAngle(const Vec2& p) const noexcept {
156  T sumTheta = 0.0;
157 
158  const int N = m_points.size();
159 
160  for (int i = 0; i < N; i++){
161  const Vec2 p1 = m_points[i] - p;
162  const Vec2 p2 = m_points[(i+1)%N] - p;
163 
164  const T theta1 = atan2(p1.y, p1.x);
165  const T theta2 = atan2(p2.y, p2.x);
166 
167  T dTheta = theta2 - theta1;
168 
169  while (dTheta > M_PI)
170  dTheta -= 2.0*M_PI;
171  while (dTheta < -M_PI)
172  dTheta += 2.0*M_PI;
173 
174  sumTheta += dTheta;
175  }
176 
177  return sumTheta;
178  }
179 
180  template <class T>
181  inline
182  bool Polygon2D<T>::isPointInsidePolygonWindingNumber(const Vec3& a_point) const noexcept {
183  const Vec2 p = this->projectPoint(a_point);
184 
185  const int wn = this->computeWindingNumber(p);
186 
187  return wn != 0;
188  }
189 
190  template <class T>
191  inline
192  bool Polygon2D<T>::isPointInsidePolygonCrossingNumber(const Vec3& a_point) const noexcept {
193  const Vec2 p = this->projectPoint(a_point);
194 
195  const int cn = this->computeCrossingNumber(p);
196 
197  const bool ret = (cn&1);
198 
199  return ret;
200  }
201 
202  template <class T>
203  inline
204  bool Polygon2D<T>::isPointInsidePolygonSubtend(const Vec3& a_point) const noexcept {
205  const Vec2 p = this->projectPoint(a_point);
206 
207  T sumTheta = this->computeSubtendedAngle(p); // Should be = 2pi if point is inside.
208 
209  sumTheta = std::abs(sumTheta)/(2.*M_PI);
210 
211  const bool ret = (round(sumTheta) == 1); // 2PI if the polygon is inside.
212 
213  return ret;
214  }
215 }
216 
218 
219 #endif
Polygon2D()=delete
Disallowed constructor, use the one with the normal vector and points.
-
T y
Second component in the vector.
Definition: EBGeometry_Vec.hpp:60
-
bool isPointInsidePolygonCrossingNumber(const Vec3 &a_point) const noexcept
Check if a point is inside a 2D polygon, by computing the number of times a ray crosses the polygon e...
Definition: EBGeometry_DcelPolygon2DImplem.hpp:192
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
Declaration of a two-dimensional polygon class for embedding 3D polygon faces.
-
InsideOutsideAlgorithm
Supported algorithms for performing inside/outside tests when checking if a point projects to the ins...
Definition: EBGeometry_DcelPolygon2D.hpp:41
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
T x
First component in the vector.
Definition: EBGeometry_Vec.hpp:55
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
- -
bool isPointInside(const Vec3 &a_point, const InsideOutsideAlgorithm a_algorithm) const noexcept
Check if a point is inside or outside the 2D polygon.
Definition: EBGeometry_DcelPolygon2DImplem.hpp:32
-
Two-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:24
-
Class for embedding a DCEL polygon face into 2D.
Definition: EBGeometry_DcelMesh.hpp:31
-
bool isPointInsidePolygonWindingNumber(const Vec3 &a_point) const noexcept
Check if a point is inside a 2D polygon, using the winding number algorithm.
Definition: EBGeometry_DcelPolygon2DImplem.hpp:182
-
bool isPointInsidePolygonSubtend(const Vec3 &a_point) const noexcept
Check if a point is inside a 2D polygon, using the subtended angles.
Definition: EBGeometry_DcelPolygon2DImplem.hpp:204
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp.html b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp.html deleted file mode 100644 index 6a4a3ebe..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelPolygon2D.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelPolygon2D.hpp File Reference
-
-
- -

Declaration of a two-dimensional polygon class for embedding 3D polygon faces. -More...

-
#include <memory>
-#include <vector>
-#include "EBGeometry_Vec.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_DcelPolygon2DImplem.hpp"
-
-Include dependency graph for EBGeometry_DcelPolygon2D.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Dcel::Polygon2D< T >
 Class for embedding a DCEL polygon face into 2D. More...
 
- - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Declaration of a two-dimensional polygon class for embedding 3D polygon faces.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.map deleted file mode 100644 index c6367c33..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.md5 deleted file mode 100644 index 04ac4477..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -17d54449ea1fce2954d29480659af65b \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.png deleted file mode 100644 index 01ecad7b..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.map deleted file mode 100644 index 1d10562f..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.md5 deleted file mode 100644 index 9f200406..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -68be7c82d4db851b40c54c08bcc577d5 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.png deleted file mode 100644 index 6c3a0473..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp_source.html deleted file mode 100644 index 9e86e515..00000000 --- a/docs/doxygen/html/EBGeometry__DcelPolygon2D_8hpp_source.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelPolygon2D.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelPolygon2D.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
11 #ifndef EBGeometry_DcelPolygon2D
12 #define EBGeometry_DcelPolygon2D
13 
14 // Std includes
15 #include <memory>
16 #include <vector>
17 
18 // Our includes
19 #include "EBGeometry_Vec.hpp"
21 
22 namespace Dcel {
23 
34  template <class T>
35  class Polygon2D {
36  public:
37 
42  SubtendedAngle,
43  CrossingNumber,
44  WindingNumber
45  };
46 
50  using Vec2 = Vec2T<T>;
51 
55  using Vec3 = Vec3T<T>;
56 
60  Polygon2D() = delete;
61 
67  Polygon2D(const Vec3& a_normal, const std::vector<Vec3>& a_points);
68 
72  ~Polygon2D() = default;
73 
80  inline
81  bool isPointInside(const Vec3& a_point, const InsideOutsideAlgorithm a_algorithm) const noexcept;
82 
88  inline
89  bool isPointInsidePolygonWindingNumber(const Vec3& a_point) const noexcept;
90 
96  inline
97  bool isPointInsidePolygonSubtend(const Vec3& a_point) const noexcept;
98 
104  inline
105  bool isPointInsidePolygonCrossingNumber(const Vec3& a_point) const noexcept;
106 
107  private:
108 
109 
113  int m_ignoreDir;
114 
118  int m_xDir;
119 
123  int m_yDir;
124 
128  std::vector<Vec2> m_points;
129 
135  inline
136  Vec2 projectPoint(const Vec3& a_point) const noexcept;
137 
143  inline
144  void define(const Vec3& a_normal, const std::vector<Vec3>& a_points);
145 
151  inline
152  int computeWindingNumber(const Vec2& P) const noexcept;
153 
159  inline
160  int computeCrossingNumber(const Vec2& P) const noexcept;
161 
167  inline
168  T computeSubtendedAngle(const Vec2& P) const noexcept;
169  };
170 }
171 
173 
175 
176 #endif
Polygon2D()=delete
Disallowed constructor, use the one with the normal vector and points.
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
bool isPointInsidePolygonCrossingNumber(const Vec3 &a_point) const noexcept
Check if a point is inside a 2D polygon, by computing the number of times a ray crosses the polygon e...
Definition: EBGeometry_DcelPolygon2DImplem.hpp:192
-
Implementation of DcelPolygon.hpp.
-
InsideOutsideAlgorithm
Supported algorithms for performing inside/outside tests when checking if a point projects to the ins...
Definition: EBGeometry_DcelPolygon2D.hpp:41
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
~Polygon2D()=default
Destructor (does nothing.
- -
bool isPointInside(const Vec3 &a_point, const InsideOutsideAlgorithm a_algorithm) const noexcept
Check if a point is inside or outside the 2D polygon.
Definition: EBGeometry_DcelPolygon2DImplem.hpp:32
-
Two-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:24
-
bool isPointInsidePolygonWindingNumber(const Vec3 &a_point) const noexcept
Check if a point is inside a 2D polygon, using the winding number algorithm.
Definition: EBGeometry_DcelPolygon2DImplem.hpp:182
-
bool isPointInsidePolygonSubtend(const Vec3 &a_point) const noexcept
Check if a point is inside a 2D polygon, using the subtended angles.
Definition: EBGeometry_DcelPolygon2DImplem.hpp:204
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp.html b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp.html deleted file mode 100644 index 7d0102ca..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelVertexImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelVertexImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_DcelVertex.hpp. -More...

-
-Include dependency graph for EBGeometry_DcelVertexImplem.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Implementation of EBGeometry_DcelVertex.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.map deleted file mode 100644 index eeef8b58..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 2b8efe39..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -33da051e0c75469add594c39443e88e8 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.png deleted file mode 100644 index 2102c4cb..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.map deleted file mode 100644 index cc1edaca..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.md5 deleted file mode 100644 index 38b2d048..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -93a1cc1d1f3d10353606b757ddc9fad6 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.png deleted file mode 100644 index 4fd9a6cf..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp_source.html deleted file mode 100644 index 343f3d8d..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertexImplem_8hpp_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelVertexImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelVertexImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelVertexImplem
13 #define EBGeometry_DcelVertexImplem
14 
15 // Our includes
17 #include "EBGeometry_DcelEdge.hpp"
18 #include "EBGeometry_DcelFace.hpp"
21 
22 namespace Dcel {
23 
24  template <class T>
25  inline
27  m_position = Vec3::zero();
28  m_normal = Vec3::zero();
29 
30  m_faces.resize(0);
31  }
32 
33  template <class T>
34  inline
35  VertexT<T>::VertexT(const Vec3& a_position) : VertexT() {
36  m_position = a_position;
37  }
38 
39  template <class T>
40  inline
41  VertexT<T>::VertexT(const Vec3& a_position, const Vec3& a_normal) : VertexT() {
42  m_position = a_position;
43  m_normal = a_normal;
44  }
45 
46  template <class T>
47  inline
48  VertexT<T>::VertexT(const VertexT<T>& a_otherVertex){
49  m_position = a_otherVertex.m_position;
50  m_normal = a_otherVertex.m_m_normal;
51  m_outgoingEdge = a_otherVertex.m_outgoingEdge;
52  }
53 
54  template <class T>
55  inline
57 
58  }
59 
60  template <class T>
61  inline
62  void VertexT<T>::define(const Vec3& a_position, const EdgePtr& a_edge, const Vec3& a_normal) noexcept {
63  m_position = a_position;
64  m_outgoingEdge = a_edge;
65  m_normal = a_normal;
66  }
67 
68  template <class T>
69  inline
70  void VertexT<T>::setPosition(const Vec3& a_position) noexcept {
71  m_position = a_position;
72  }
73 
74  template <class T>
75  inline
76  void VertexT<T>::setEdge(const EdgePtr& a_edge) noexcept {
77  m_outgoingEdge = a_edge;
78  }
79 
80  template <class T>
81  inline
82  void VertexT<T>::setNormal(const Vec3& a_normal) noexcept {
83  m_normal = a_normal;
84  }
85 
86  template <class T>
87  inline
88  void VertexT<T>::addFace(const FacePtr& a_face) noexcept {
89  m_faces.emplace_back(a_face);
90  }
91 
92  template <class T>
93  inline
96  }
97 
98  template <class T>
99  inline
102  }
103 
104  template <class T>
105  inline
106  void VertexT<T>::computeVertexNormalAverage(const std::vector<FacePtr>& a_faces) noexcept {
107  m_normal = Vec3::zero();
108 
109  // TLDR: We simply compute the sum of the normal vectors for each face in a_faces and then normalize. This
110  // will yield an "average" of the normal vectors of the faces circulating this vertex.
111  for (const auto& f : a_faces){
112  m_normal += f->getNormal();
113  }
114 
115  this->normalizeNormalVector();
116  }
117 
118  template <class T>
119  inline
122  }
123 
124  template <class T>
125  inline
126  void VertexT<T>::computeVertexNormalAngleWeighted(const std::vector<FacePtr>& a_faces) noexcept {
127  m_normal = Vec3::zero();
128 
129  // This routine computes the pseudonormal from pseudnormal algorithm from Baerentzen and Aanes in
130  // "Signed distance computation using the angle weighted pseudonormal" (DOI: 10.1109/TVCG.2005.49).
131  // This algorithm computes an average normal vector using the normal vectors of each face connected
132  // to this vertex, i.e. in the form
133  //
134  // n = sum(w * n(face))/sum(w)
135  //
136  // where w are weights for each face. This weight is given by the subtended angle of the face, which means the angle spanned
137  // by the incoming/outgoing edges of the face that pass through this vertex.
138  //
139  //
140  // The below code is more complicated than it looks. It happens because we want the two half edges that has the current vertex
141  // as a mutual vertex (i.e. the "incoming" and "outgoing" edges into this vertex). Normally we'd just iterate through edges,
142  // but if it happens that an input face is flipped, this will result in infinite iteration. Instead, we have stored the pointers
143  // to each face connected to this vertex. We look through each face to find the endpoints of the edges the have the current vertex
144  // as the common vertex, and then compute the subtended angle between those. Sigh...
145 
146  const VertexPtr& originVertex = m_outgoingEdge->getVertex(); // AKA 'this'
147 
148  for (const auto& f : a_faces){
149 
150  std::vector<VertexPtr> inoutVertices(0);
151  for (EdgeIterator edgeIt(f->getHalfEdge()); edgeIt.ok(); ++edgeIt){
152  const auto& e = edgeIt();
153 
154  const auto& v1 = e->getVertex();
155  const auto& v2 = e->getOtherVertex();
156 
157  if(v1 == originVertex || v2 == originVertex){
158  if(v1 == originVertex){
159  inoutVertices.emplace_back(v2);
160  }
161  else if(v2 == originVertex){
162  inoutVertices.emplace_back(v1);
163  }
164  else{
165  std::cerr << "In file 'CD_DcelVertexImplem.H' function vertexT<T>::computeVertexNormalAngleWeighted() - logic bust.\n";
166  }
167  }
168  }
169 
170  if(inoutVertices.size() != 2) {
171  std::cerr << "In file 'CD_DcelVertexImplem.H' function vertexT<T>::computeVertexNormalAngleWeighted() - logic bust 2.\n";
172  }
173 
174  const Vec3& x0 = originVertex ->getPosition();
175  const Vec3& x1 = inoutVertices[0]->getPosition();
176  const Vec3& x2 = inoutVertices[1]->getPosition();
177 
178  if(x0 == x1 || x0 == x2 || x1 == x2){
179  std::cerr << "In file 'CD_DcelVertexImplem.H' function vertexT<T>::computeVertexNormalAngleWeighted() - logic bust 3.\n";
180  }
181 
182  Vec3 v1 = x1-x0;
183  Vec3 v2 = x2-x0;
184 
185  v1 = v1/v1.length();
186  v2 = v2/v2.length();
187 
188  const Vec3& norm = f->getNormal();
189 
190  const T alpha = acos(v1.dot(v2));
191 
192  m_normal += alpha*norm;
193  }
194 
195  this->normalizeNormalVector();
196  }
197 
198  template <class T>
199  inline
201  return (m_position);
202  }
203 
204  template <class T>
205  inline
206  const Vec3T<T>& VertexT<T>::getPosition() const noexcept {
207  return (m_position);
208  }
209 
210  template <class T>
211  inline
213  return (m_normal);
214  }
215 
216  template <class T>
217  inline
218  const Vec3T<T>& VertexT<T>::getNormal() const noexcept {
219  return (m_normal);
220  }
221 
222  template <class T>
223  inline
224  std::shared_ptr<EdgeT<T> >& VertexT<T>::getOutgoingEdge() noexcept {
225  return (m_outgoingEdge);
226  }
227 
228  template <class T>
229  inline
230  const std::shared_ptr<EdgeT<T> >& VertexT<T>::getOutgoingEdge() const noexcept {
231  return (m_outgoingEdge);
232  }
233 
234  template <class T>
235  inline
236  std::vector<std::shared_ptr<FaceT<T> > >& VertexT<T>::getFaces() noexcept {
237  return (m_faces);
238  }
239 
240  template <class T>
241  inline
242  const std::vector<std::shared_ptr<FaceT<T> > >& VertexT<T>::getFaces() const noexcept {
243  return (m_faces);
244  }
245 
246  template <class T>
247  inline
248  T VertexT<T>::signedDistance(const Vec3& a_x0) const noexcept {
249  const auto delta = a_x0 - m_position;
250  const T dist = delta.length();
251  const T dot = m_normal.dot(delta);
252  const int sign = (dot > 0.) ? 1 : -1;
253 
254  return dist*sign;
255  }
256 
257  template <class T>
258  inline
259  T VertexT<T>::unsignedDistance2(const Vec3& a_x0) const noexcept {
260  const auto d = a_x0 - m_position;
261 
262  return d.dot(d);
263  }
264 }
265 
267 
268 #endif
void define(const Vec3 &a_position, const EdgePtr &a_edge, const Vec3 &a_normal) noexcept
Define function.
Definition: EBGeometry_DcelVertexImplem.hpp:62
-
static constexpr Vec3T< T > zero() noexcept
Return av vector with x = y = z = 0.
Definition: EBGeometry_VecImplem.hpp:205
-
bool ok() const noexcept
Function which checks if the iteration can be continued.
Definition: EBGeometry_DcelIteratorImplem.hpp:97
-
std::vector< FacePtr > & getFaces() noexcept
Get modifiable polygon face list for this vertex.
Definition: EBGeometry_DcelVertexImplem.hpp:236
-
Vec3 m_position
Vertex position.
Definition: EBGeometry_DcelVertex.hpp:268
-
VertexT()
Default constructor.
Definition: EBGeometry_DcelVertexImplem.hpp:26
-
std::shared_ptr< Face > FacePtr
Alias to cut down on typing. Note that this is std::shared_ptr<FaceT<T> >
Definition: EBGeometry_DcelVertex.hpp:78
-
~VertexT()
Destructor (does nothing)
Definition: EBGeometry_DcelVertexImplem.hpp:56
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
void setEdge(const EdgePtr &a_edge) noexcept
Set the reference to the outgoing edge.
Definition: EBGeometry_DcelVertexImplem.hpp:76
-
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring its length is 1.
Definition: EBGeometry_DcelVertexImplem.hpp:94
-
Vec3 m_normal
Vertex normal vector.
Definition: EBGeometry_DcelVertex.hpp:273
-
Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
Vec3T< T > & getNormal() noexcept
Return modifiable vertex normal vector.
Definition: EBGeometry_DcelVertexImplem.hpp:212
-
Declaration of iterators for DCEL surface Tesselations.
-
void setNormal(const Vec3 &a_normal) noexcept
Set the vertex normal vector.
Definition: EBGeometry_DcelVertexImplem.hpp:82
-
T dot(const Vec3T< T > &u) const noexcept
Vector dot product.
Definition: EBGeometry_VecImplem.hpp:438
-
void setPosition(const Vec3 &a_position) noexcept
Set the vertex position.
Definition: EBGeometry_DcelVertexImplem.hpp:70
-
EdgePtr m_outgoingEdge
Pointer to an outgoing edge from this vertex.
Definition: EBGeometry_DcelVertex.hpp:263
-
void computeVertexNormalAverage() noexcept
Compute the vertex normal, using an average the normal vector in this vertex&#39;s face list (m_faces) ...
Definition: EBGeometry_DcelVertexImplem.hpp:100
-
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing. Note that this is std::shared_ptr<EdgeT<T> >
Definition: EBGeometry_DcelVertex.hpp:73
-
Vec3T< T > & getPosition() noexcept
Return modifiable vertex position.
Definition: EBGeometry_DcelVertexImplem.hpp:200
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
std::vector< FacePtr > m_faces
List of faces connected to this vertex (these must be "manually" added)
Definition: EBGeometry_DcelVertex.hpp:278
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Get the squared unsigned distance to this vertex.
Definition: EBGeometry_DcelVertexImplem.hpp:259
-
Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
-
EdgePtr & getOutgoingEdge() noexcept
Return modifiable pointer to outgoing edge.
Definition: EBGeometry_DcelVertexImplem.hpp:224
-
T length() const noexcept
Compute vector length.
Definition: EBGeometry_VecImplem.hpp:444
- -
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
T signedDistance(const Vec3 &a_x0) const noexcept
Get the signed distance to this vertex.
Definition: EBGeometry_DcelVertexImplem.hpp:248
-
void addFace(const FacePtr &a_face) noexcept
Add a face to the polygon face list.
Definition: EBGeometry_DcelVertexImplem.hpp:88
-
void computeVertexNormalAngleWeighted() noexcept
Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtend...
Definition: EBGeometry_DcelVertexImplem.hpp:120
-
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on typing. Note that this is std::shared_ptr<VertexT<T> >
Definition: EBGeometry_DcelVertex.hpp:68
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp.html b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp.html deleted file mode 100644 index 04d7a0f9..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelVertex.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_DcelVertex.hpp File Reference
-
-
- -

Declaration of a vertex class for use in DCEL descriptions of polygon tesselations. -More...

-
#include <vector>
-#include <memory>
-#include "EBGeometry_Vec.hpp"
-#include "EBGeometry_Dcel.hpp"
-#include "EBGeometry_DcelFace.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_DcelVertexImplem.hpp"
-
-Include dependency graph for EBGeometry_DcelVertex.hpp:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - -

-Classes

class  Dcel::VertexT< T >
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeT< T >
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
class  Dcel::FaceT< T >
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
class  Dcel::EdgeIteratorT< T >
 Class which can iterate through edges and vertices around a DCEL polygon face. More...
 
class  Dcel::VertexT< T >
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
- - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.map deleted file mode 100644 index 846c6ac2..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.md5 deleted file mode 100644 index 2bbbf7fa..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e834913a4abb5576108bb5d01c267e67 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.png deleted file mode 100644 index e57e8a3a..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.map b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.map deleted file mode 100644 index 42899284..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.md5 deleted file mode 100644 index 4a8e5dee..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f3b9855a80efe90ece8a62ce46024732 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.png b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.png deleted file mode 100644 index 4dcb61d8..00000000 Binary files a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp_source.html b/docs/doxygen/html/EBGeometry__DcelVertex_8hpp_source.html deleted file mode 100644 index 92c54f9a..00000000 --- a/docs/doxygen/html/EBGeometry__DcelVertex_8hpp_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_DcelVertex.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_DcelVertex.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_DcelVertex
13 #define EBGeometry_DcelVertex
14 
15 // Std includes
16 #include <vector>
17 #include <memory>
18 
19 // Our includes
20 #include "EBGeometry_Vec.hpp"
21 #include "EBGeometry_Dcel.hpp"
22 #include "EBGeometry_DcelFace.hpp"
24 
25 namespace Dcel {
26 
27  // Forward declare classes.
28  template <class T> class VertexT;
29  template <class T> class EdgeT;
30  template <class T> class FaceT;
31  template <class T> class EdgeIteratorT;
32 
41  template <class T>
42  class VertexT {
43  public:
44 
48  using Vec3 = Vec3T<T>;
49 
53  using Vertex = VertexT<T>;
54 
58  using Edge = EdgeT<T>;
59 
63  using Face = FaceT<T>;
64 
68  using VertexPtr = std::shared_ptr<Vertex>;
69 
73  using EdgePtr = std::shared_ptr<Edge>;
74 
78  using FacePtr = std::shared_ptr<Face>;
79 
84 
89  VertexT();
90 
96  VertexT(const Vec3& a_position);
97 
104  VertexT(const Vec3& a_position, const Vec3& a_normal);
105 
111  VertexT(const Vertex& a_otherVertex);
112 
116  ~VertexT();
117 
125  inline
126  void define(const Vec3& a_position, const EdgePtr& a_edge, const Vec3& a_normal) noexcept;
127 
132  inline
133  void setPosition(const Vec3& a_position) noexcept;
134 
139  inline
140  void setNormal(const Vec3& a_normal) noexcept;
141 
146  inline
147  void setEdge(const EdgePtr& a_edge) noexcept;
148 
153  inline
154  void addFace(const FacePtr& a_face) noexcept;
155 
159  inline
160  void normalizeNormalVector() noexcept;
161 
165  inline
166  void computeVertexNormalAverage() noexcept;
167 
173  inline
174  void computeVertexNormalAverage(const std::vector<FacePtr>& a_faces) noexcept;
175 
182  inline
183  void computeVertexNormalAngleWeighted() noexcept;
184 
191  inline
192  void computeVertexNormalAngleWeighted(const std::vector<FacePtr>& a_faces) noexcept;
193 
197  inline
198  Vec3T<T>& getPosition() noexcept;
199 
203  inline
204  const Vec3T<T>& getPosition() const noexcept;
205 
209  inline
210  Vec3T<T>& getNormal() noexcept;
211 
215  inline
216  const Vec3T<T>& getNormal() const noexcept;
217 
221  inline
222  EdgePtr& getOutgoingEdge() noexcept;
223 
227  inline
228  const EdgePtr& getOutgoingEdge() const noexcept;
229 
233  inline
234  std::vector<FacePtr>& getFaces() noexcept;
235 
239  inline
240  const std::vector<FacePtr>& getFaces() const noexcept;
241 
247  inline
248  T signedDistance(const Vec3& a_x0) const noexcept;
249 
255  inline
256  T unsignedDistance2(const Vec3& a_x0) const noexcept;
257 
258  protected:
259 
264 
269 
274 
278  std::vector<FacePtr > m_faces;
279  };
280 }
281 
282 #include "EBGeometry_NamespaceFooter.hpp"
283 
285 
286 #endif
Implementation of EBGeometry_DcelVertex.hpp.
-
void define(const Vec3 &a_position, const EdgePtr &a_edge, const Vec3 &a_normal) noexcept
Define function.
Definition: EBGeometry_DcelVertexImplem.hpp:62
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
Class which represents a polygon face in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:29
-
std::vector< FacePtr > & getFaces() noexcept
Get modifiable polygon face list for this vertex.
Definition: EBGeometry_DcelVertexImplem.hpp:236
-
Vec3 m_position
Vertex position.
Definition: EBGeometry_DcelVertex.hpp:268
-
VertexT()
Default constructor.
Definition: EBGeometry_DcelVertexImplem.hpp:26
-
std::shared_ptr< Face > FacePtr
Alias to cut down on typing. Note that this is std::shared_ptr<FaceT<T> >
Definition: EBGeometry_DcelVertex.hpp:78
-
~VertexT()
Destructor (does nothing)
Definition: EBGeometry_DcelVertexImplem.hpp:56
-
Class which can iterate through edges and vertices around a DCEL polygon face.
Definition: EBGeometry_DcelEdge.hpp:30
-
void setEdge(const EdgePtr &a_edge) noexcept
Set the reference to the outgoing edge.
Definition: EBGeometry_DcelVertexImplem.hpp:76
-
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring its length is 1.
Definition: EBGeometry_DcelVertexImplem.hpp:94
-
Class which represents a half-edge in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:28
-
Vec3 m_normal
Vertex normal vector.
Definition: EBGeometry_DcelVertex.hpp:273
-
Class which represents a vertex node in a double-edge connected list (DCEL).
Definition: EBGeometry_DcelEdge.hpp:27
-
Vec3T< T > & getNormal() noexcept
Return modifiable vertex normal vector.
Definition: EBGeometry_DcelVertexImplem.hpp:212
-
void setNormal(const Vec3 &a_normal) noexcept
Set the vertex normal vector.
Definition: EBGeometry_DcelVertexImplem.hpp:82
-
void setPosition(const Vec3 &a_position) noexcept
Set the vertex position.
Definition: EBGeometry_DcelVertexImplem.hpp:70
-
EdgePtr m_outgoingEdge
Pointer to an outgoing edge from this vertex.
Definition: EBGeometry_DcelVertex.hpp:263
-
void computeVertexNormalAverage() noexcept
Compute the vertex normal, using an average the normal vector in this vertex&#39;s face list (m_faces) ...
Definition: EBGeometry_DcelVertexImplem.hpp:100
-
std::shared_ptr< Edge > EdgePtr
Alias to cut down on typing. Note that this is std::shared_ptr<EdgeT<T> >
Definition: EBGeometry_DcelVertex.hpp:73
-
Vec3T< T > & getPosition() noexcept
Return modifiable vertex position.
Definition: EBGeometry_DcelVertexImplem.hpp:200
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
std::vector< FacePtr > m_faces
List of faces connected to this vertex (these must be "manually" added)
Definition: EBGeometry_DcelVertex.hpp:278
-
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Get the squared unsigned distance to this vertex.
Definition: EBGeometry_DcelVertexImplem.hpp:259
-
EdgePtr & getOutgoingEdge() noexcept
Return modifiable pointer to outgoing edge.
Definition: EBGeometry_DcelVertexImplem.hpp:224
- -
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
-
T signedDistance(const Vec3 &a_x0) const noexcept
Get the signed distance to this vertex.
Definition: EBGeometry_DcelVertexImplem.hpp:248
-
void addFace(const FacePtr &a_face) noexcept
Add a face to the polygon face list.
Definition: EBGeometry_DcelVertexImplem.hpp:88
-
void computeVertexNormalAngleWeighted() noexcept
Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtend...
Definition: EBGeometry_DcelVertexImplem.hpp:120
-
Namespace documentation.
-
std::shared_ptr< Vertex > VertexPtr
Alias to cut down on typing. Note that this is std::shared_ptr<VertexT<T> >
Definition: EBGeometry_DcelVertex.hpp:68
-
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp.html b/docs/doxygen/html/EBGeometry__Dcel_8hpp.html deleted file mode 100644 index eb061d7e..00000000 --- a/docs/doxygen/html/EBGeometry__Dcel_8hpp.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_Dcel.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_Dcel.hpp File Reference
-
-
- -

Namespace documentation. -More...

-
-Include dependency graph for EBGeometry_Dcel.hpp:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 Dcel
 Namespace containing various double-connected edge list (DCEL) functionality.
 
-

Detailed Description

-

Namespace documentation.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.map deleted file mode 100644 index f61332dc..00000000 --- a/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.md5 deleted file mode 100644 index a30e63f5..00000000 --- a/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ac6449fa5feaa39e7530d91dadafce6b \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.png deleted file mode 100644 index 41524229..00000000 Binary files a/docs/doxygen/html/EBGeometry__Dcel_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.map b/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.map deleted file mode 100644 index 29f768aa..00000000 --- a/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.md5 deleted file mode 100644 index 8d4c2b06..00000000 --- a/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c096df0970a05fcceb6b93689c8dddee \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.png b/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.png deleted file mode 100644 index 83e43953..00000000 Binary files a/docs/doxygen/html/EBGeometry__Dcel_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__Dcel_8hpp_source.html b/docs/doxygen/html/EBGeometry__Dcel_8hpp_source.html deleted file mode 100644 index a8e75e82..00000000 --- a/docs/doxygen/html/EBGeometry__Dcel_8hpp_source.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_Dcel.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_Dcel.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_Dcel
13 #define EBGeometry_Dcel
14 
16 
21 namespace Dcel {
22 
23 }
24 
25 #endif
26 
- -
Namespace containing various double-connected edge list (DCEL) functionality.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp.html b/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp.html deleted file mode 100644 index 2890320e..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_NamespaceFooter.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_NamespaceFooter.hpp File Reference
-
-
- -

Name space footer. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

-

Detailed Description

-

Name space footer.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.map deleted file mode 100644 index a0664f38..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.map +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.md5 deleted file mode 100644 index ec737005..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -484bcfe25db3ea4eb0b94a23430f85a1 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.png deleted file mode 100644 index 9e10c9f2..00000000 Binary files a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp_source.html b/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp_source.html deleted file mode 100644 index b09ca65e..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceFooter_8hpp_source.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_NamespaceFooter.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_NamespaceFooter.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 }
- - - - diff --git a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp.html b/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp.html deleted file mode 100644 index 4f227935..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_NamespaceHeader.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_NamespaceHeader.hpp File Reference
-
-
- -

Name space header. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

-

Detailed Description

-

Name space header.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.map deleted file mode 100644 index 2e693c35..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.map +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.md5 deleted file mode 100644 index e42bce17..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -69324f54015a58892babe7b5944d72cf \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.png deleted file mode 100644 index 5d63579d..00000000 Binary files a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp_source.html b/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp_source.html deleted file mode 100644 index 3e464263..00000000 --- a/docs/doxygen/html/EBGeometry__NamespaceHeader_8hpp_source.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_NamespaceHeader.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_NamespaceHeader.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 namespace EBGeometry {
Name space for all of EBGeometry.
Definition: EBGeometry.hpp:18
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp.html b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp.html deleted file mode 100644 index 18986c64..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_SignedDistanceFunctionImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_SignedDistanceFunctionImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_SignedDistanceFunctionImplem.hpp. -More...

-
-Include dependency graph for EBGeometry_SignedDistanceFunctionImplem.hpp:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - -
-
-

Go to the source code of this file.

-

Detailed Description

-

Implementation of EBGeometry_SignedDistanceFunctionImplem.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.map deleted file mode 100644 index 5df8b05f..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.md5 deleted file mode 100644 index ddd096f9..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ef8b54572ac88d550bb65677f4f0fe5a \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.png deleted file mode 100644 index 8e7a86c6..00000000 Binary files a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.map deleted file mode 100644 index 6aeca4f4..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.md5 deleted file mode 100644 index 90f0efc3..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c6636b26291fe2340ec5b623d5165d33 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.png deleted file mode 100644 index ba2d107b..00000000 Binary files a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp_source.html deleted file mode 100644 index 7516a603..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunctionImplem_8hpp_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_SignedDistanceFunctionImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_SignedDistanceFunctionImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_SignedDistanceFunctionImplem
13 #define EBGeometry_SignedDistanceFunctionImplem
14 
15 // Our includes
18 
19 template <class T>
20 void SignedDistanceFunction<T>::translate(const Vec3T<T>& a_translation) noexcept {
21  m_transformOps.emplace_back(std::make_shared<EBGeometry::TranslateOp<T> > (a_translation));
22 }
23 
24 template <class T>
25 void SignedDistanceFunction<T>::rotate(const T a_angle, const int a_axis) noexcept {
26  m_transformOps.emplace_back(std::make_shared<EBGeometry::RotateOp<T> >(a_angle, a_axis));
27 }
28 
29 template <class T>
31  auto p = a_point;
32 
33  for (const auto& op : m_transformOps){
34  p = op->transform(p);
35  }
36 
37  return p;
38 }
39 
41 
42 #endif
void rotate(const T a_angle, const int a_axis) noexcept
Rotate the signed distance function around.
Definition: EBGeometry_SignedDistanceFunctionImplem.hpp:25
-
void translate(const Vec3T< T > &a_translation) noexcept
Translate signed distance function.
Definition: EBGeometry_SignedDistanceFunctionImplem.hpp:20
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Abstract base class for representing a signed distance function.
- -
Vec3T< T > transformPoint(const Vec3T< T > &a_point) const noexcept
Apply transformation operators and move point.
Definition: EBGeometry_SignedDistanceFunctionImplem.hpp:30
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp.html b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp.html deleted file mode 100644 index c605ca40..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_SignedDistanceFunction.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_SignedDistanceFunction.hpp File Reference
-
-
- -

Abstract base class for representing a signed distance function. -More...

-
#include <memory>
-#include <deque>
-#include "EBGeometry_TransformOps.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-#include "EBGeometry_SignedDistanceFunctionImplem.hpp"
-
-Include dependency graph for EBGeometry_SignedDistanceFunction.hpp:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  SignedDistanceFunction< T >
 Abstract representation of a signed distance function. More...
 
-

Detailed Description

-

Abstract base class for representing a signed distance function.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.map deleted file mode 100644 index d8e1fbe5..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.md5 deleted file mode 100644 index 234891ec..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -744550eb5acb7fa9c93fc0f54090d80a \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.png deleted file mode 100644 index ffc0ef52..00000000 Binary files a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.map b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.map deleted file mode 100644 index ab9294a1..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.md5 deleted file mode 100644 index 453812b6..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -da40908d802214cdff008ac6f847ab84 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.png b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.png deleted file mode 100644 index aa9a354a..00000000 Binary files a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp_source.html b/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp_source.html deleted file mode 100644 index 3f2fba22..00000000 --- a/docs/doxygen/html/EBGeometry__SignedDistanceFunction_8hpp_source.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_SignedDistanceFunction.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_SignedDistanceFunction.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_SignedDistanceFunction
13 #define EBGeometry_SignedDistanceFunction
14 
15 #include <memory>
16 #include <deque>
17 
18 // Our includes
21 
28 template <class T>
30 public:
31 
35  SignedDistanceFunction() = default;
36 
40  virtual ~SignedDistanceFunction() = default;
41 
46  virtual T signedDistance(const Vec3T<T>& a_point) const noexcept = 0;
47 
52  inline
53  void translate(const Vec3T<T>& a_translation) noexcept;
54 
60  inline
61  void rotate(const T a_angle, const int a_axis) noexcept;
62 
63 protected:
64 
68  std::deque<std::shared_ptr<TransformOp<T> > > m_transformOps;
69 
73  inline
74  Vec3T<T> transformPoint(const Vec3T<T>& a_point) const noexcept;
75 };
76 
78 
80 
81 #endif
void rotate(const T a_angle, const int a_axis) noexcept
Rotate the signed distance function around.
Definition: EBGeometry_SignedDistanceFunctionImplem.hpp:25
-
std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
List of transformation operators for the signed distance field.
Definition: EBGeometry_SignedDistanceFunction.hpp:68
-
Implementation of EBGeometry_SignedDistanceFunctionImplem.hpp.
-
void translate(const Vec3T< T > &a_translation) noexcept
Translate signed distance function.
Definition: EBGeometry_SignedDistanceFunctionImplem.hpp:20
-
Declaration of transformation operators for signed distance fields.
-
SignedDistanceFunction()=default
Disallowed, use the full constructor.
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Abstract representation of a signed distance function.
Definition: EBGeometry_SignedDistanceFunction.hpp:29
- -
Vec3T< T > transformPoint(const Vec3T< T > &a_point) const noexcept
Apply transformation operators and move point.
Definition: EBGeometry_SignedDistanceFunctionImplem.hpp:30
-
virtual T signedDistance(const Vec3T< T > &a_point) const noexcept=0
Signed distance function.
-
virtual ~SignedDistanceFunction()=default
Destructor (does nothing)
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp.html b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp.html deleted file mode 100644 index 6e28355b..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_TransformOpsImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_TransformOpsImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_TransformOps.hpp. -More...

-
-Include dependency graph for EBGeometry_TransformOpsImplem.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - -
-
-

Go to the source code of this file.

-

Detailed Description

-

Implementation of EBGeometry_TransformOps.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.map deleted file mode 100644 index 8033cfb4..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 88568adb..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -dd3663bd474e7f6c87e765fc8ca5d0c0 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.png deleted file mode 100644 index 43688bb7..00000000 Binary files a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.map deleted file mode 100644 index bf93e86d..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.md5 deleted file mode 100644 index 568564ba..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4e5300cfa5315d3d43396c421cbfbd6e \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.png deleted file mode 100644 index 68c30bcc..00000000 Binary files a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp_source.html deleted file mode 100644 index 37858bf4..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOpsImplem_8hpp_source.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_TransformOpsImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_TransformOpsImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_TransformOpsImplem
13 #define EBGeometry_TransformOpsImplem
14 
15 // Our includes
18 
19 template <class T>
21  m_translation = Vec3T<T>::zero();
22 }
23 
24 template <class T>
25 TranslateOp<T>::TranslateOp(const Vec3T<T>& a_translation) {
26  m_translation = a_translation;
27 }
28 
29 template <class T>
30 Vec3T<T> TranslateOp<T>::transform(const Vec3T<T>& a_inputPoint) const noexcept {
31  return a_inputPoint - m_translation;
32 }
33 
34 template <class T>
36  m_axis = Vec3T<T>::unit();
37  m_cosAngle = std::cos(T(0.0));
38  m_sinAngle = std::sin(T(0.0));
39 }
40 
41 template <class T>
42 RotateOp<T>::RotateOp(const T a_angle, const int a_axis) noexcept {
43  m_axis = a_axis;
44  m_cosAngle = std::cos(a_angle);
45  m_sinAngle = std::sin(a_angle);
46 }
47 
48 template <class T>
49 Vec3T<T> RotateOp<T>::transform(const Vec3T<T>& a_inputPoint) const noexcept {
50 
51  const T& x = a_inputPoint[0];
52  const T& y = a_inputPoint[1];
53  const T& z = a_inputPoint[2];
54 
55  Vec3T<T> rotatePoint = a_inputPoint;
56 
57  switch(m_axis){
58  case 0:
59  {
60  rotatePoint[1] = y*m_cosAngle + z*m_sinAngle;
61  rotatePoint[2] = -y*m_sinAngle + z*m_cosAngle;
62 
63  break;
64  }
65  case 1:
66  {
67  rotatePoint[0] = x*m_cosAngle - z*m_sinAngle;
68  rotatePoint[2] = y*m_sinAngle + z*m_cosAngle;
69 
70  break;
71  }
72  case 2:
73  {
74  rotatePoint[0] = x*m_cosAngle + y*m_sinAngle;
75  rotatePoint[1] = -x*m_sinAngle + y*m_cosAngle;
76 
77  break;
78  }
79  }
80 
81  return rotatePoint;
82 }
83 
85 
86 #endif
TranslateOp()
Default constructor.
Definition: EBGeometry_TransformOpsImplem.hpp:20
-
Vec3T< T > transform(const Vec3T< T > &a_inputPoint) const noexcept override
Transform input point.
Definition: EBGeometry_TransformOpsImplem.hpp:49
-
static constexpr Vec3T< T > zero() noexcept
Return av vector with x = y = z = 0.
Definition: EBGeometry_VecImplem.hpp:205
-
Vec3T< T > transform(const Vec3T< T > &a_inputPoint) const noexcept override
Transform input point.
Definition: EBGeometry_TransformOpsImplem.hpp:30
-
RotateOp()
Weak constructor.
Definition: EBGeometry_TransformOpsImplem.hpp:35
-
Declaration of transformation operators for signed distance fields.
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
- -
- - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp.html b/docs/doxygen/html/EBGeometry__TransformOps_8hpp.html deleted file mode 100644 index 762a3661..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOps_8hpp.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_TransformOps.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_TransformOps.hpp File Reference
-
-
- -

Declaration of transformation operators for signed distance fields. -More...

-
-Include dependency graph for EBGeometry_TransformOps.hpp:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

class  TransformOp< T >
 Base class for transformation operators. More...
 
class  TranslateOp< T >
 Translation operator. Can translate an input point. More...
 
class  RotateOp< T >
 Rotation operator. Can scale an input point. More...
 
-

Detailed Description

-

Declaration of transformation operators for signed distance fields.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.map deleted file mode 100644 index 049dd33d..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.md5 deleted file mode 100644 index a3f83972..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -05e21e67ba122d096b245b0ceef11fd4 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.png deleted file mode 100644 index d10306cc..00000000 Binary files a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.map b/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.map deleted file mode 100644 index 4b5e0efd..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.md5 deleted file mode 100644 index 2f8c2c39..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -432c0480f85c0746daa98a3a92f6b53f \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.png b/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.png deleted file mode 100644 index b7b3adaa..00000000 Binary files a/docs/doxygen/html/EBGeometry__TransformOps_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__TransformOps_8hpp_source.html b/docs/doxygen/html/EBGeometry__TransformOps_8hpp_source.html deleted file mode 100644 index 978eb2db..00000000 --- a/docs/doxygen/html/EBGeometry__TransformOps_8hpp_source.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_TransformOps.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_TransformOps.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_TransformOps
13 #define EBGeometry_TransformOps
14 
15 // Our includes
16 #include "EBGeometry_Vec.hpp"
18 
22 template <class T>
23 class TransformOp {
24 public:
25 
29  TransformOp() = default;
30 
34  virtual ~TransformOp() = default;
35 
41  virtual Vec3T<T> transform(const Vec3T<T>& a_inputPoint) const noexcept = 0;
42 };
43 
47 template <class T>
48 class TranslateOp : public TransformOp<T> {
49 public:
50 
54  TranslateOp();
55 
59  TranslateOp(const Vec3T<T>& a_translation);
60 
64  virtual ~TranslateOp() = default;
65 
69  Vec3T<T> transform(const Vec3T<T>& a_inputPoint) const noexcept override;
70 
71 protected:
72 
77 };
78 
82 template <class T>
83 class RotateOp : public TransformOp<T> {
84 public:
85 
89  RotateOp();
90 
96  RotateOp(const T a_angle, const int a_axis) noexcept;
97 
101  virtual ~RotateOp() = default;
102 
106  Vec3T<T> transform(const Vec3T<T>& a_inputPoint) const noexcept override;
107 
108 protected:
109 
113  int m_axis;
114 
119 
124 };
125 
127 
129 
130 #endif
Translation operator. Can translate an input point.
Definition: EBGeometry_TransformOps.hpp:48
-
T m_cosAngle
Theta-rotation (degrees)
Definition: EBGeometry_TransformOps.hpp:118
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
int m_axis
Rotation axis. 0 = x, 1=y etc.
Definition: EBGeometry_TransformOps.hpp:113
-
Base class for transformation operators.
Definition: EBGeometry_TransformOps.hpp:23
-
virtual Vec3T< T > transform(const Vec3T< T > &a_inputPoint) const noexcept=0
Transform input coordinate.
-
Rotation operator. Can scale an input point.
Definition: EBGeometry_TransformOps.hpp:83
-
T m_sinAngle
Phi-rotation (degrees)
Definition: EBGeometry_TransformOps.hpp:123
-
Vec3T< T > m_translation
Translation of input point.
Definition: EBGeometry_TransformOps.hpp:76
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
TransformOp()=default
Default constructor.
- -
Implementation of EBGeometry_TransformOps.hpp.
-
virtual ~TransformOp()=default
Destructor.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp.html b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp.html deleted file mode 100644 index 9eb05914..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_UnionBVHImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_UnionBVHImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_UnionBVH.hpp. -More...

-
-Include dependency graph for EBGeometry_UnionBVHImplem.hpp:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

-

Detailed Description

-

Implementation of EBGeometry_UnionBVH.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.map deleted file mode 100644 index e581b26f..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.md5 deleted file mode 100644 index af4a7851..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ff3d60360991635c2b148aa9a9ab9629 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.png deleted file mode 100644 index abd57d22..00000000 Binary files a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.map deleted file mode 100644 index d0a71e05..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.md5 deleted file mode 100644 index f2dc208e..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -acff515523b74711a03077f0cc1b3248 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.png deleted file mode 100644 index 3e9e107f..00000000 Binary files a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp_source.html deleted file mode 100644 index 0caf1f58..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVHImplem_8hpp_source.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_UnionBVHImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_UnionBVHImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_UnionBVHImplem
13 #define EBGeometry_UnionBVHImplem
14 
15 // Our includes
16 #include "EBGeometry_UnionBVH.hpp"
18 
19 template <class T, class BV, int K>
20 UnionBVH<T, BV, K>::UnionBVH(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions, const bool a_flipSign) {
21  for (const auto& sdf : a_distanceFunctions){
22  m_distanceFunctions.emplace_back(sdf);
23  }
24 
25  m_flipSign = a_flipSign;
26  m_isGood = false;
27 }
28 
29 template <class T, class BV, int K>
30 UnionBVH<T, BV, K>::UnionBVH(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions, const bool a_flipSign, const BVConstructor& a_bvConstructor) :
31  UnionBVH<T, BV, K>(a_distanceFunctions, a_flipSign) {
32 
33  this->buildTree(a_bvConstructor);
34 }
35 
36 template <class T, class BV, int K>
37 void UnionBVH<T, BV, K>::buildTree(const BVConstructor& a_bvConstructor) {
38 
39  // This function is a partitioning function taking the input SDFs and partitioning them into K subvolumes. Since the SDFs don't themselves
40  // have vertices, centroids, etc., we use their bounding volumes as criteria for subdividing them. We do this by computing the spatial centroid
41  // of each bounding volume that encloses the SDFs. We then do a spatial subdivision along the longest coordinate into K almost-equal chunks.
42  EBGeometry::BVH::PartitionerT<SDF, K> partitioner = [a_bvConstructor] (const SDFList& a_primitives) -> std::array<SDFList, K> {
43  const int numPrimitives = a_primitives.size();
44 
45  if(numPrimitives < K){
46  std::cerr << "UnionBVH<T, BV, K>::buildTree -- not enough primitives to partition into K new nodes\n";
47  }
48 
49  // 1. Compute the bounding volume centroids for each input SDF.
50  std::vector<Vec3T<T> > bvCentroids;
51  for (const auto& P : a_primitives){
52  bvCentroids.emplace_back((a_bvConstructor(P)).getCentroid());
53  }
54 
55  // 2. Figure out which coordinate direction has the longest/smallest extent. We split along the longest direction.
56  auto lo = Vec3T<T>::infinity();
57  auto hi = -Vec3T<T>::infinity();
58 
59  for (const auto& c : bvCentroids){
60  lo = min(lo, c);
61  hi = max(hi, c);
62  }
63 
64  const int splitDir = (hi-lo).maxDir(true);
65 
66  // 3. Sort input primitives based on the centroid location of their bounding volumes. We do this by packing the SDFs and their BV centroids
67  // in a vector which we sort (I love C++).
68  using Primitive = std::shared_ptr<const SDF>;
69  using Centroid = Vec3T<T>;
70  using PC = std::pair<Primitive, Centroid>;
71 
72  // Vector pack.
73  std::vector<PC> primsAndCentroids;
74  for (unsigned int i = 0; i < a_primitives.size(); i++){
75  primsAndCentroids.emplace_back(a_primitives[i], bvCentroids[i]);
76  }
77 
78  // Vector sort.
79  std::sort(primsAndCentroids.begin(),
80  primsAndCentroids.end(),
81  [splitDir](const PC& sdf1, const PC& sdf2) -> bool {
82  return sdf1.second[splitDir] < sdf2.second[splitDir];
83  });
84 
85  // Vector unpack. The input SDFs are not sorted based on their bounding volume centroids.
86  std::vector<Primitive> sortedPrimitives;
87  for (int i = 0 ; i < numPrimitives; i++){
88  sortedPrimitives.emplace_back(primsAndCentroids[i].first);
89  }
90 
91  // 4. Figure out where along the PC vector we should do our spatial splits. We try to balance the chunks.
92  const int almostEqualChunkSize = numPrimitives / K;
93  int remainder = numPrimitives % K;
94 
95  std::array<int, K> startIndices;
96  std::array<int, K> endIndices;
97 
98  startIndices[0] = 0;
99  endIndices [K-1] = numPrimitives;
100 
101  for (unsigned int i = 1; i < K; i++){
102  startIndices[i] = startIndices[i-1] + almostEqualChunkSize;
103 
104  if(remainder > 0){
105  startIndices[i]++;
106  remainder--;
107  }
108  }
109 
110  for (unsigned int i = 0; i < K-1; i++){
111  endIndices[i] = startIndices[i+1];
112  }
113 
114  // 5. Put the primitives in separate lists and return them like the API says.
115  std::array<SDFList, K> subVolumePrimitives;
116  for (int i = 0; i < K; i++){
117  typename SDFList::const_iterator first = sortedPrimitives.begin() + startIndices[i];
118  typename SDFList::const_iterator last = sortedPrimitives.begin() + endIndices [i];
119 
120  subVolumePrimitives[i] = SDFList(first, last);
121  }
122 
123  return subVolumePrimitives;
124  };
125 
126  // Stop function. Exists subdivision if there are not enough primitives left to keep subdividing. We set the limit at 10 primitives.
127  EBGeometry::BVH::StopFunctionT<T, SDF, BV, K> stopFunc = [] (const BuilderNode& a_node) -> bool {
128  const int numPrimsInNode = (a_node.getPrimitives()).size();
129  return numPrimsInNode < K;
130  };
131 
132  // Init the root node and partition the primitives.
133  auto root = std::make_shared<BuilderNode>(m_distanceFunctions);
134 
135  root->topDownSortAndPartitionPrimitives(a_bvConstructor,
136  partitioner,
137  stopFunc);
138 
139  m_rootNode = root->flattenTree();
140 
141  m_isGood = true;
142 }
143 
144 template <class T, class BV, int K>
145 T UnionBVH<T, BV, K>::signedDistance(const Vec3T<T>& a_point) const noexcept {
146  const T sign = (m_flipSign) ? -1.0 : 1.0;
147 
148  return sign * m_rootNode->signedDistance(a_point);
149 }
150 
152 
153 #endif
EBGeometry::BVH::BVConstructorT< SDF, BV > BVConstructor
Alias for cutting down on typing. This is a std::function<BV(SDF)>, i.e. a function which returns a b...
Definition: EBGeometry_UnionBVH.hpp:38
-
T signedDistance(const Vec3T< T > &a_point) const noexcept override
Value function.
Definition: EBGeometry_UnionBVHImplem.hpp:145
-
EBGeometry::BVH::NodeT< T, SDF, BV, K > BuilderNode
Builder node type in BVH tree. Tree is constructed in "full".
Definition: EBGeometry_UnionBVH.hpp:89
-
bool m_isGood
Is good or not.
Definition: EBGeometry_UnionBVH.hpp:109
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
static constexpr Vec3T< T > infinity() noexcept
Return a vector with inf components.
Definition: EBGeometry_VecImplem.hpp:229
-
bool m_flipSign
Hook for turning inside to outside.
Definition: EBGeometry_UnionBVH.hpp:114
-
std::vector< std::shared_ptr< const SDF > > m_distanceFunctions
List of distance functions.
Definition: EBGeometry_UnionBVH.hpp:99
-
std::vector< std::shared_ptr< const SDF > > SDFList
Alias for cutting down on typing.
Definition: EBGeometry_UnionBVH.hpp:84
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
void buildTree(const BVConstructor &a_bvConstructor)
Build BVH tree for the input objects. User must supply a partitioner and a BV constructor for the SDF...
Definition: EBGeometry_UnionBVHImplem.hpp:37
-
std::shared_ptr< LinearNode > m_rootNode
Root node for BVH tree.
Definition: EBGeometry_UnionBVH.hpp:104
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
- -
UnionBVH()=delete
Disallowed, use the full constructor.
-
Distance function union using BVHs. Computes the signed distance to the closest object of N non-overl...
Definition: EBGeometry_UnionBVH.hpp:27
-
Declaration of a union operator for creating multi-object scenes.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp.html b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp.html deleted file mode 100644 index 2e765c39..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_UnionBVH.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_UnionBVH.hpp File Reference
-
-
- -

Declaration of a union operator for creating multi-object scenes. -More...

-
-Include dependency graph for EBGeometry_UnionBVH.hpp:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  UnionBVH< T, BV, K >
 Distance function union using BVHs. Computes the signed distance to the closest object of N non-overlapping objects. More...
 
-

Detailed Description

-

Declaration of a union operator for creating multi-object scenes.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.map deleted file mode 100644 index 19641980..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.md5 deleted file mode 100644 index 087128c6..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -489f8bd9ebeb24549ca68431399475cd \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.png deleted file mode 100644 index 815fa709..00000000 Binary files a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.map b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.map deleted file mode 100644 index 79fc9800..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.md5 deleted file mode 100644 index b6865123..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8f5656c95bdfe835ba600de805d3d58d \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.png b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.png deleted file mode 100644 index 0e93da5c..00000000 Binary files a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp_source.html b/docs/doxygen/html/EBGeometry__UnionBVH_8hpp_source.html deleted file mode 100644 index 41a1e03e..00000000 --- a/docs/doxygen/html/EBGeometry__UnionBVH_8hpp_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_UnionBVH.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_UnionBVH.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_UnionBVH
13 #define EBGeometry_UnionBVH
14 
15 // Std includes
16 #include <vector>
17 
18 // Our includes
21 
26 template <class T, class BV, int K>
27 class UnionBVH : public SignedDistanceFunction<T> {
28 public:
29 
34 
38  using BVConstructor = EBGeometry::BVH::BVConstructorT<SDF, BV>;
39 
43  UnionBVH() = delete;
44 
50  UnionBVH(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions, const bool a_flipSign);
51 
58  UnionBVH(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions,
59  const bool a_flipSign,
60  const BVConstructor& a_bvConstructor);
61 
66  void buildTree(const BVConstructor& a_bvConstructor);
67 
71  virtual ~UnionBVH() = default;
72 
77  T signedDistance(const Vec3T<T>& a_point) const noexcept override;
78 
79 protected:
80 
84  using SDFList = std::vector<std::shared_ptr<const SDF> >;
85 
89  using BuilderNode = EBGeometry::BVH::NodeT<T, SDF, BV, K>;
90 
94  using LinearNode = EBGeometry::BVH::LinearBVH<T, SDF, BV, K>;
95 
99  std::vector<std::shared_ptr<const SDF> > m_distanceFunctions;
100 
104  std::shared_ptr<LinearNode> m_rootNode;
105 
109  bool m_isGood;
110 
115 };
116 
118 
120 
121 #endif
EBGeometry::BVH::BVConstructorT< SDF, BV > BVConstructor
Alias for cutting down on typing. This is a std::function<BV(SDF)>, i.e. a function which returns a b...
Definition: EBGeometry_UnionBVH.hpp:38
-
T signedDistance(const Vec3T< T > &a_point) const noexcept override
Value function.
Definition: EBGeometry_UnionBVHImplem.hpp:145
-
EBGeometry::BVH::NodeT< T, SDF, BV, K > BuilderNode
Builder node type in BVH tree. Tree is constructed in "full".
Definition: EBGeometry_UnionBVH.hpp:89
-
virtual ~UnionBVH()=default
Destructor (does nothing)
-
bool m_isGood
Is good or not.
Definition: EBGeometry_UnionBVH.hpp:109
-
Implementation of EBGeometry_UnionBVH.hpp.
-
bool m_flipSign
Hook for turning inside to outside.
Definition: EBGeometry_UnionBVH.hpp:114
-
std::vector< std::shared_ptr< const SDF > > m_distanceFunctions
List of distance functions.
Definition: EBGeometry_UnionBVH.hpp:99
-
std::vector< std::shared_ptr< const SDF > > SDFList
Alias for cutting down on typing.
Definition: EBGeometry_UnionBVH.hpp:84
- -
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
void buildTree(const BVConstructor &a_bvConstructor)
Build BVH tree for the input objects. User must supply a partitioner and a BV constructor for the SDF...
Definition: EBGeometry_UnionBVHImplem.hpp:37
-
std::shared_ptr< LinearNode > m_rootNode
Root node for BVH tree.
Definition: EBGeometry_UnionBVH.hpp:104
-
Abstract base class for representing a signed distance function.
-
Abstract representation of a signed distance function.
Definition: EBGeometry_SignedDistanceFunction.hpp:29
- -
UnionBVH()=delete
Disallowed, use the full constructor.
-
Distance function union using BVHs. Computes the signed distance to the closest object of N non-overl...
Definition: EBGeometry_UnionBVH.hpp:27
-
EBGeometry::BVH::LinearBVH< T, SDF, BV, K > LinearNode
Node type in BVH tree. We use a flattened tree.
Definition: EBGeometry_UnionBVH.hpp:94
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp.html b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp.html deleted file mode 100644 index 56a3fd97..00000000 --- a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_UnionImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_UnionImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_Union.hpp. -More...

-
-Include dependency graph for EBGeometry_UnionImplem.hpp:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

-

Detailed Description

-

Implementation of EBGeometry_Union.hpp.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.map deleted file mode 100644 index ab3835dd..00000000 --- a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 2b5e2374..00000000 --- a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1d99e30e296e58264164681f25a1f78d \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.png deleted file mode 100644 index 007812ed..00000000 Binary files a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.map deleted file mode 100644 index 1fc69c9f..00000000 --- a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.md5 deleted file mode 100644 index 3d1eb08f..00000000 --- a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e56bba42fd7e05e33da2aa7accc5b62a \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.png deleted file mode 100644 index 638578a6..00000000 Binary files a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__UnionImplem_8hpp_source.html deleted file mode 100644 index 3f6865a0..00000000 --- a/docs/doxygen/html/EBGeometry__UnionImplem_8hpp_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_UnionImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_UnionImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_UnionImplem
13 #define EBGeometry_UnionImplem
14 
15 // Our includes
16 #include "EBGeometry_Union.hpp"
18 
19 template <class T>
20 Union<T>::Union(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions, const bool a_flipSign) {
21  for (const auto& sdf : a_distanceFunctions){
22  m_distanceFunctions.emplace_back(sdf);
23  }
24 
25  m_flipSign = a_flipSign;
26 }
27 
28 template <class T>
29 T Union<T>::signedDistance(const Vec3T<T>& a_point) const noexcept {
30  const int numDistanceFunctions = m_distanceFunctions.size();
31 
32  T ret = std::numeric_limits<T>::infinity();
33 
34  for (const auto & sdf : m_distanceFunctions){
35  const T cur = sdf->signedDistance(a_point);
36 
37  ret = (std::abs(cur) < std::abs(ret)) ? cur : ret;
38  }
39 
40  T sign = (m_flipSign) ? -1.0 : 1.0;
41 
42  return sign * ret;
43 }
44 
46 
47 #endif
Union()=delete
Disallowed, use the full constructor.
-
Declaration of a union operator for creating multi-object scenes.
- -
T signedDistance(const Vec3T< T > &a_point) const noexcept override
Value function.
Definition: EBGeometry_UnionImplem.hpp:29
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
- -
- - - - diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp.html b/docs/doxygen/html/EBGeometry__Union_8hpp.html deleted file mode 100644 index 71ae32a6..00000000 --- a/docs/doxygen/html/EBGeometry__Union_8hpp.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_Union.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_Union.hpp File Reference
-
-
- -

Declaration of a union operator for creating multi-object scenes. -More...

-
-Include dependency graph for EBGeometry_Union.hpp:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Union< T >
 Distance function union. Computes the signed distance to the closest object of N non-overlapping objects. More...
 
-

Detailed Description

-

Declaration of a union operator for creating multi-object scenes.

-
Author
Robert Marskar
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.map deleted file mode 100644 index 15f63513..00000000 --- a/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.md5 deleted file mode 100644 index d7708d21..00000000 --- a/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5a4680e1977966c5d74cac148bf5d512 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.png deleted file mode 100644 index e85aaef1..00000000 Binary files a/docs/doxygen/html/EBGeometry__Union_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp__incl.map b/docs/doxygen/html/EBGeometry__Union_8hpp__incl.map deleted file mode 100644 index a6b58c14..00000000 --- a/docs/doxygen/html/EBGeometry__Union_8hpp__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__Union_8hpp__incl.md5 deleted file mode 100644 index a60dfade..00000000 --- a/docs/doxygen/html/EBGeometry__Union_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9be88e1aca6b39c6a6dbcbe8f4315b5d \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp__incl.png b/docs/doxygen/html/EBGeometry__Union_8hpp__incl.png deleted file mode 100644 index 51f7ab96..00000000 Binary files a/docs/doxygen/html/EBGeometry__Union_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__Union_8hpp_source.html b/docs/doxygen/html/EBGeometry__Union_8hpp_source.html deleted file mode 100644 index e79c95b9..00000000 --- a/docs/doxygen/html/EBGeometry__Union_8hpp_source.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_Union.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_Union.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_Union
13 #define EBGeometry_Union
14 
15 // Std includes
16 #include <vector>
17 
18 // Our includes
21 
26 template <class T>
27 class Union : public SignedDistanceFunction<T> {
28 public:
29 
34 
38  Union() = delete;
39 
45  Union(const std::vector<std::shared_ptr<SDF> >& a_distanceFunctions, const bool a_flipSign);
46 
50  virtual ~Union() = default;
51 
56  T signedDistance(const Vec3T<T>& a_point) const noexcept override;
57 
58 protected:
59 
63  std::vector<std::shared_ptr<const SDF> > m_distanceFunctions;
64 
68  bool m_flipSign;
69 };
70 
72 
74 
75 #endif
Union()=delete
Disallowed, use the full constructor.
-
virtual ~Union()=default
Destructor (does nothing)
-
bool m_flipSign
Hook for turning inside to outside.
Definition: EBGeometry_Union.hpp:68
-
Distance function union. Computes the signed distance to the closest object of N non-overlapping obje...
Definition: EBGeometry_Union.hpp:27
-
std::vector< std::shared_ptr< const SDF > > m_distanceFunctions
List of distance functions.
Definition: EBGeometry_Union.hpp:63
- -
T signedDistance(const Vec3T< T > &a_point) const noexcept override
Value function.
Definition: EBGeometry_UnionImplem.hpp:29
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
Abstract base class for representing a signed distance function.
-
Abstract representation of a signed distance function.
Definition: EBGeometry_SignedDistanceFunction.hpp:29
- -
Implementation of EBGeometry_Union.hpp.
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp.html b/docs/doxygen/html/EBGeometry__VecImplem_8hpp.html deleted file mode 100644 index 3e132748..00000000 --- a/docs/doxygen/html/EBGeometry__VecImplem_8hpp.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_VecImplem.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_VecImplem.hpp File Reference
-
-
- -

Implementation of EBGeometry_Vec.hpp. -More...

-
#include <math.h>
-#include <algorithm>
-#include "EBGeometry_Vec.hpp"
-#include "EBGeometry_NamespaceHeader.hpp"
-#include "EBGeometry_NamespaceFooter.hpp"
-
-Include dependency graph for EBGeometry_VecImplem.hpp:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<class T >
Vec2T< T > operator* (const T &s, const Vec2T< T > &a_other) noexcept
 Multiplication operator in the form s*Vec2T. More...
 
template<class T >
Vec2T< T > operator/ (const T &s, const Vec2T< T > &a_other) noexcept
 Division operator in the form s*Vec2T. More...
 
template<class T >
Vec3T< T > operator* (const T &s, const Vec3T< T > &a_other) noexcept
 Multiplication operator. More...
 
template<class T >
Vec3T< T > operator/ (const T &s, const Vec3T< T > &a_other) noexcept
 Division operator. More...
 
template<class T >
Vec3T< T > min (const Vec3T< T > &u, const Vec3T< T > &v) noexcept
 Minimum fucntion. Returns new vector with component-wise minimums. More...
 
template<class T >
Vec3T< T > max (const Vec3T< T > &u, const Vec3T< T > &v) noexcept
 Minimum fucntion. Returns new vector with component-wise minimums. More...
 
-

Detailed Description

-

Implementation of EBGeometry_Vec.hpp.

-
Author
Robert Marskar
-

Function Documentation

- -

◆ max()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> max (const Vec3T< T > & u,
const Vec3T< T > & v 
)
-
-inlinenoexcept
-
- -

Minimum fucntion. Returns new vector with component-wise minimums.

-
Parameters
- - - -
[in]uVector
[in]vOther vector
-
-
-
Returns
Returns new vector with components X[0] = std::max(u.X[0], v.X[0]) and so on
- -
-
- -

◆ min()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> min (const Vec3T< T > & u,
const Vec3T< T > & v 
)
-
-inlinenoexcept
-
- -

Minimum fucntion. Returns new vector with component-wise minimums.

-
Parameters
- - - -
[in]uVector
[in]vOther vector
-
-
-
Returns
Returns new vector with components X[0] = std::min(u.X[0], v.X[0]) and so on
- -
-
- -

◆ operator*() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec2T<T> operator* (const T & s,
const Vec2T< T > & a_other 
)
-
-inlinenoexcept
-
- -

Multiplication operator in the form s*Vec2T.

-
Parameters
- - - -
[in]sMultiplication factor
[in]a_otherOther vector
-
-
-
Returns
Returns a new vector with components x = s*a_other.x (and same for y)
- -
-
- -

◆ operator*() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> operator* (const T & s,
const Vec3T< T > & u 
)
-
-inlinenoexcept
-
- -

Multiplication operator.

-
Parameters
- - - -
[in]sMultiplication scalar
[in]uVector
-
-
-
Returns
Returns new vector with components X[0] = s*X[0] and so on.
- -
-
- -

◆ operator/() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec2T<T> operator/ (const T & s,
const Vec2T< T > & a_other 
)
-
-inlinenoexcept
-
- -

Division operator in the form s*Vec2T.

-
Parameters
- - - -
[in]sDivision factor
[in]a_otherOther vector
-
-
-
Returns
Returns a new vector with components x = (1/s)*a_other.x (and same for y)
- -
-
- -

◆ operator/() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> operator/ (const T & s,
const Vec3T< T > & u 
)
-
-inlinenoexcept
-
- -

Division operator.

-
Parameters
- - - -
[in]sDivision scalar
[in]uVector
-
-
-
Returns
Returns new vector with components X[0] = X[0]/s and so on.
- -
-
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.map deleted file mode 100644 index ed51107b..00000000 --- a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.map +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 85552299..00000000 --- a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fec4ec5e9a79cb4b1eef6c80b7d145dc \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.png deleted file mode 100644 index bf5f939e..00000000 Binary files a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.map b/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.map deleted file mode 100644 index d1d17e22..00000000 --- a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.md5 deleted file mode 100644 index 516dcdbd..00000000 --- a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -35c70af9e26477eadddfbb0d829ee10d \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.png b/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.png deleted file mode 100644 index 51869a6c..00000000 Binary files a/docs/doxygen/html/EBGeometry__VecImplem_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__VecImplem_8hpp_source.html b/docs/doxygen/html/EBGeometry__VecImplem_8hpp_source.html deleted file mode 100644 index 78612000..00000000 --- a/docs/doxygen/html/EBGeometry__VecImplem_8hpp_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_VecImplem.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_VecImplem.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_VecImplem
13 #define EBGeometry_VecImplem
14 
15 // Std includes
16 #include <math.h>
17 #include <algorithm>
18 
19 // Our includes
20 #include "EBGeometry_Vec.hpp"
22 
23 template <class T>
24 inline
26  *this = Vec2T<T>::zero();
27 }
28 
29 template <class T>
30 inline
32  x = u.x;
33  y = u.y;
34 }
35 
36 template <class T>
37 inline
38 Vec2T<T>::Vec2T(const T& a_x, const T& a_y){
39  x = a_x;
40  y = a_y;
41 }
42 
43 template <class T>
44 inline
45 constexpr Vec2T<T> Vec2T<T>::zero() noexcept {
46  return Vec2T<T>(T(0.0), T(0.0));
47 }
48 
49 template <class T>
50 inline
51 constexpr Vec2T<T> Vec2T<T>::one() noexcept {
52  return Vec2T<T>(T(1.0), T(1.0));
53 }
54 
55 template <class T>
56 inline
57 constexpr Vec2T<T> Vec2T<T>::min() noexcept {
59 }
60 
61 template <class T>
62 inline
63 constexpr Vec2T<T> Vec2T<T>::max() noexcept {
65 }
66 
67 template <class T>
68 inline
69 constexpr Vec2T<T> Vec2T<T>::infinity() noexcept {
70  return Vec2T<T>(std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity());
71 }
72 
73 template <class T>
74 inline
75 Vec2T<T>& Vec2T<T>::operator=(const Vec2T<T>& u) noexcept {
76  x = u.x;
77  y = u.y;
78 
79  return (*this);
80 }
81 
82 template <class T>
83 inline
84 Vec2T<T> Vec2T<T>::operator+(const Vec2T<T>& u) const noexcept {
85  return Vec2T<T>(x+u.x, y+u.y);
86 }
87 
88 template <class T>
89 inline
90 Vec2T<T> Vec2T<T>::operator-(const Vec2T<T>& u) const noexcept {
91  return Vec2T<T>(x-u.x, y-u.y);
92 }
93 
94 template <class T>
95 inline
96 Vec2T<T> Vec2T<T>::operator-() const noexcept {
97  return Vec2T<T>(-x, -y);
98 }
99 
100 template <class T>
101 inline
102 Vec2T<T> Vec2T<T>::operator*(const T& s) const noexcept {
103  return Vec2T<T>(x*s, y*s);
104 }
105 
106 template <class T>
107 inline
108 Vec2T<T> Vec2T<T>::operator/(const T& s) const noexcept {
109  const T is = 1./s;
110  return Vec2T<T>(x*is, y*is);
111 }
112 
113 template <class T>
114 inline
116  x += u.x;
117  y += u.y;
118 
119  return (*this);
120 }
121 
122 template <class T>
123 inline
125  x -= u.x;
126  y -= u.y;
127 
128  return (*this);
129 }
130 
131 template <class T>
132 inline
133 Vec2T<T>& Vec2T<T>::operator*=(const T& s) noexcept {
134  x *= s;
135  y *= s;
136 
137  return (*this);
138 }
139 
140 template <class T>
141 inline
142 Vec2T<T>& Vec2T<T>::operator/=(const T& s) noexcept {
143  const T is = 1./s;
144 
145  x *= is;
146  y *= is;
147 
148  return (*this);
149 }
150 
151 template <class T>
152 inline
153 T Vec2T<T>::dot(const Vec2T<T>& u) const noexcept {
154  return x*u.x + y*u.y;
155 }
156 
157 template <class T>
158 inline
159 T Vec2T<T>::length() const noexcept {
160  return sqrt(x*x + y*y);
161 }
162 
163 template <class T>
164 inline
165 T Vec2T<T>::length2() const noexcept {
166  return x*x + y*y;
167 }
168 
169 template <class T>
170 inline
171 Vec2T<T> operator*(const T& s, const Vec2T<T>& a_other) noexcept {
172  return a_other*s;
173 }
174 
175 template <class T>
176 inline
177 Vec2T<T> operator/(const T& s, const Vec2T<T>& a_other) noexcept {
178  return a_other/s;
179 }
180 
181 template <class T>
182 inline
184  (*this) = Vec3T<T>::zero();
185 }
186 
187 template <class T>
188 inline
190  X[0] = u[0];
191  X[1] = u[1];
192  X[2] = u[2];
193 }
194 
195 template <class T>
196 inline
197 Vec3T<T>::Vec3T(const T& a_x, const T& a_y, const T& a_z){
198  X[0] = a_x;
199  X[1] = a_y;
200  X[2] = a_z;
201 }
202 
203 template <class T>
204 inline
205 constexpr Vec3T<T> Vec3T<T>::zero() noexcept {
206  return Vec3T<T>(0, 0, 0);
207 }
208 
209 template <class T>
210 inline
211 constexpr Vec3T<T> Vec3T<T>::one() noexcept {
212  return Vec3T<T>(1, 1, 1);
213 }
214 
215 template <class T>
216 inline
217 constexpr Vec3T<T> Vec3T<T>::min() noexcept {
219 }
220 
221 template <class T>
222 inline
223 constexpr Vec3T<T> Vec3T<T>::max() noexcept {
225 }
226 
227 template <class T>
228 inline
229 constexpr Vec3T<T> Vec3T<T>::infinity() noexcept {
230  return Vec3T<T>(std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity());
231 }
232 
233 template <class T>
234 inline
235 Vec3T<T>& Vec3T<T>::operator=(const Vec3T<T>& u) noexcept {
236  X[0] = u[0];
237  X[1] = u[1];
238  X[2] = u[2];
239 
240  return (*this);
241 }
242 
243 template <class T>
244 inline
245 Vec3T<T> Vec3T<T>::operator+(const Vec3T<T>& u) const noexcept {
246  return Vec3T<T>(X[0]+u[0], X[1]+u[1], X[2]+u[2]);
247 }
248 
249 template <class T>
250 inline
251 Vec3T<T> Vec3T<T>::operator-(const Vec3T<T>& u) const noexcept {
252  return Vec3T<T>(X[0]-u[0], X[1]-u[1], X[2]-u[2]);
253 }
254 
255 template <class T>
256 inline
257 Vec3T<T> Vec3T<T>::operator-() const noexcept {
258  return Vec3T<T>(-X[0], -X[1], -X[2]);
259 }
260 
261 template <class T>
262 inline
263 Vec3T<T> Vec3T<T>::operator*(const T& s) const noexcept {
264  return Vec3T<T>(s*X[0], s*X[1], s*X[2]);
265 }
266 
267 template <class T>
268 inline
269 Vec3T<T> Vec3T<T>::operator/(const T& s) const noexcept {
270  const T is = 1./s;
271  return Vec3T<T>(is*X[0], is*X[1], is*X[2]);
272 }
273 
274 template <class T>
275 inline
276 Vec3T<T> Vec3T<T>::operator/(const Vec3T<T>& v) const noexcept {
277  return Vec3T<T>(X[0]/v[0], X[1]/v[1], X[2]/v[2]);
278 }
279 
280 template <class T>
281 inline
283  X[0] += u[0];
284  X[1] += u[1];
285  X[2] += u[2];
286 
287  return (*this);
288 }
289 
290 template <class T>
291 inline
293  X[0] -= u[0];
294  X[1] -= u[1];
295  X[2] -= u[2];
296 
297  return (*this);
298 }
299 
300 template <class T>
301 
302 inline
303 Vec3T<T>& Vec3T<T>::operator*=(const T& s) noexcept {
304  X[0] *= s;
305  X[1] *= s;
306  X[2] *= s;
307 
308  return (*this);
309 }
310 
311 template <class T>
312 inline
313 Vec3T<T>& Vec3T<T>::operator/=(const T& s) noexcept {
314  const T is = 1./s;
315 
316  X[0] *= is;
317  X[1] *= is;
318  X[2] *= is;
319 
320  return (*this);
321 }
322 
323 template <class T>
324 inline
325 Vec3T<T> Vec3T<T>::cross(const Vec3T<T>& u) const noexcept {
326  return Vec3T<T>(X[1]*u[2] - X[2]*u[1],
327  X[2]*u[0] - X[0]*u[2],
328  X[0]*u[1] - X[1]*u[0]);
329 }
330 
331 template <class T>
332 inline
333 T& Vec3T<T>::operator[](int i) noexcept {
334  return X[i];
335 }
336 
337 template <class T>
338 inline
339 const T& Vec3T<T>::operator[](int i) const noexcept {
340  return X[i];
341 }
342 
343 template <class T>
344 inline
345 Vec3T<T> Vec3T<T>::min(const Vec3T<T>& u) noexcept {
346  X[0] = std::min(X[0], u[0]);
347  X[1] = std::min(X[1], u[1]);
348  X[2] = std::min(X[2], u[2]);
349 
350  return *this;
351 }
352 
353 template <class T>
354 inline
355 Vec3T<T> Vec3T<T>::max(const Vec3T<T>& u) noexcept {
356  X[0] = std::max(X[0], u[0]);
357  X[1] = std::max(X[1], u[1]);
358  X[2] = std::max(X[2], u[2]);
359 
360  return *this;
361 }
362 
363 template <class T>
364 inline
365 int Vec3T<T>::minDir(const bool a_doAbs) const noexcept {
366  int mDir = 0;
367 
368  for (int dir = 0; dir < 3; dir++){
369  if (a_doAbs){
370  if (std::abs(X[dir]) < std::abs(X[mDir])) {
371  mDir = dir;
372  }
373  }
374  else{
375  if (X[dir] < X[mDir]){
376  mDir = dir;
377  }
378  }
379  }
380 
381  return mDir;
382 }
383 
384 template <class T>
385 inline
386 int Vec3T<T>::maxDir(const bool a_doAbs) const noexcept {
387  int mDir = 0;
388 
389  for (int dir = 0; dir < 3; dir++){
390  if (a_doAbs){
391  if (std::abs(X[dir]) > std::abs(X[mDir])) {
392  mDir = dir;
393  }
394  }
395  else{
396  if (X[dir] > X[mDir]){
397  mDir = dir;
398  }
399  }
400  }
401 
402  return mDir;
403 }
404 
405 template <class T>
406 inline
407 bool Vec3T<T>::operator==(const Vec3T<T>& u) const noexcept {
408  return (X[0]==u[0] && X[1]==u[1] && X[2]==u[2]);
409 }
410 
411 template <class T>
412 inline
413 bool Vec3T<T>::operator<(const Vec3T<T>& u) const noexcept {
414  return (X[0]<u[0] && X[1]<u[1] && X[2]<u[2]);
415 }
416 
417 template <class T>
418 inline
419 bool Vec3T<T>::operator>(const Vec3T<T>& u) const noexcept {
420  return (X[0]>u[0] && X[1]>u[1] && X[2]>u[2]);
421 }
422 
423 template <class T>
424 inline
425 bool Vec3T<T>::operator<=(const Vec3T<T>& u) const noexcept {
426  return (X[0]<=u[0] && X[1]<=u[1] && X[2]<=u[2]);
427 }
428 
429 template <class T>
430 
431 inline
432 bool Vec3T<T>::operator>=(const Vec3T<T>& u) const noexcept {
433  return (X[0]>=u[0] && X[1]>=u[1] && X[2]>=u[2]);
434 }
435 
436 template <class T>
437 inline
438 T Vec3T<T>::dot(const Vec3T<T>& u) const noexcept {
439  return X[0]*u[0] + X[1]*u[1] + X[2]*u[2];
440 }
441 
442 template <class T>
443 inline
444 T Vec3T<T>::length() const noexcept {
445  return sqrt(X[0]*X[0] + X[1]*X[1] + X[2]*X[2]);
446 }
447 
448 template <class T>
449 inline
450 T Vec3T<T>::length2() const noexcept {
451  return X[0]*X[0] + X[1]*X[1] + X[2]*X[2];
452 }
453 
454 template <class T>
455 inline
456 Vec3T<T> operator*(const T& s, const Vec3T<T>& a_other) noexcept {
457  return a_other*s;
458 }
459 
460 template <class T>
461 inline
462 Vec3T<T> operator/(const T& s, const Vec3T<T>& a_other) noexcept {
463  return a_other/s;
464 }
465 
466 template <class T>
467 inline
468 Vec3T<T> min(const Vec3T<T>& u, const Vec3T<T>& v) noexcept {
469  return Vec3T<T>(std::min(u[0], v[0]),
470  std::min(u[1], v[1]),
471  std::min(u[2], v[2]));
472 }
473 
474 template <class T>
475 inline
476 Vec3T<T> max(const Vec3T<T>& u, const Vec3T<T>& v) noexcept {
477  return Vec3T<T>(std::max(u[0], v[0]),
478  std::max(u[1], v[1]),
479  std::max(u[2], v[2]));
480 }
481 
483 
484 #endif
Vec3T< T > & operator*=(const T &s) noexcept
Vector multiplication operator.
Definition: EBGeometry_VecImplem.hpp:303
-
Vec3T< T > & operator=(const Vec3T< T > &u) noexcept
Assignment operator. Sets components equal to the argument vector&#39;s components.
Definition: EBGeometry_VecImplem.hpp:235
-
Vec3T< T > & operator+=(const Vec3T< T > &u) noexcept
Vector addition operator.
Definition: EBGeometry_VecImplem.hpp:282
-
Vec2T< T > & operator/=(const T &s) noexcept
Division operator operator.
Definition: EBGeometry_VecImplem.hpp:142
-
static constexpr Vec2T< T > zero() noexcept
Return av vector with x = y = 0.
Definition: EBGeometry_VecImplem.hpp:45
-
bool operator<(const Vec3T< T > &u) const noexcept
"Smaller than" operator.
Definition: EBGeometry_VecImplem.hpp:413
-
T & operator[](int i) noexcept
Return component in vector. (i=0 => x and so on)
Definition: EBGeometry_VecImplem.hpp:333
-
bool operator>(const Vec3T< T > &u) const noexcept
"Greater than" operator.
Definition: EBGeometry_VecImplem.hpp:419
-
Vec3T< T > & operator-=(const Vec3T< T > &u) noexcept
Vector subtraction operator.
Definition: EBGeometry_VecImplem.hpp:292
-
Vec2T< T > & operator-=(const Vec2T &a_other) noexcept
Subtraction operator.
Definition: EBGeometry_VecImplem.hpp:124
-
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools...
-
static constexpr Vec3T< T > zero() noexcept
Return av vector with x = y = z = 0.
Definition: EBGeometry_VecImplem.hpp:205
-
bool operator<=(const Vec3T< T > &u) const noexcept
"Smaller or equal to" operator.
Definition: EBGeometry_VecImplem.hpp:425
-
Vec3T< T > max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:476
-
T dot(const Vec2T &a_other) const noexcept
Dot product operator.
Definition: EBGeometry_VecImplem.hpp:153
-
T y
Second component in the vector.
Definition: EBGeometry_Vec.hpp:60
-
Vec3T()
Default constructor. Sets the vector to the zero vector.
Definition: EBGeometry_VecImplem.hpp:183
-
Vec3T< T > operator+(const Vec3T< T > &u) const noexcept
Addition operator. Returns a new vector with added compoments.
Definition: EBGeometry_VecImplem.hpp:245
-
static constexpr Vec2T< T > infinity() noexcept
Return a vector with inf components.
Definition: EBGeometry_VecImplem.hpp:69
-
static constexpr Vec3T< T > min() noexcept
Return a vector with minimum representable components.
Definition: EBGeometry_VecImplem.hpp:217
-
Vec2T< T > operator+(const Vec2T &a_other) const noexcept
Addition operator.
Definition: EBGeometry_VecImplem.hpp:84
-
static constexpr Vec2T< T > one() noexcept
Return av vector with x = y = 1.
Definition: EBGeometry_VecImplem.hpp:51
-
Vec3T< T > operator-() const noexcept
Negation operator. Returns a vector with negated components.
Definition: EBGeometry_VecImplem.hpp:257
-
Vec2T< T > operator/(const T &s, const Vec2T< T > &a_other) noexcept
Division operator in the form s*Vec2T.
Definition: EBGeometry_VecImplem.hpp:177
-
bool operator==(const Vec3T< T > &u) const noexcept
Comparison operator. Returns true if all components are the same.
Definition: EBGeometry_VecImplem.hpp:407
-
static constexpr Vec3T< T > infinity() noexcept
Return a vector with inf components.
Definition: EBGeometry_VecImplem.hpp:229
-
Vec3T< T > operator*(const T &s) const noexcept
Multiplication operator. Returns a vector with scalar multiplied components.
Definition: EBGeometry_VecImplem.hpp:263
-
int minDir(const bool a_doAbs) const noexcept
Return the direction which has the smallest component (can be absolute)
Definition: EBGeometry_VecImplem.hpp:365
-
int maxDir(const bool a_doAbs) const noexcept
Return the direction which has the largest component (can be absolute)
Definition: EBGeometry_VecImplem.hpp:386
-
Vec3T< T > & operator/=(const T &s) noexcept
Vector division operator.
Definition: EBGeometry_VecImplem.hpp:313
-
static constexpr Vec3T< T > max() noexcept
Return a vector with maximum representable components.
Definition: EBGeometry_VecImplem.hpp:223
-
T dot(const Vec3T< T > &u) const noexcept
Vector dot product.
Definition: EBGeometry_VecImplem.hpp:438
-
Vec3T< T > operator/(const T &s) const noexcept
Division operator. Returns a vector with scalar divided components.
Definition: EBGeometry_VecImplem.hpp:269
-
static constexpr Vec2T< T > max() noexcept
Return maximum possible representative vector.
Definition: EBGeometry_VecImplem.hpp:63
- -
T length2() const noexcept
Compute square of vector.
Definition: EBGeometry_VecImplem.hpp:165
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
static constexpr Vec2T< T > min() noexcept
Return minimum possible representative vector.
Definition: EBGeometry_VecImplem.hpp:57
-
Vec2T< T > & operator+=(const Vec2T &a_other) noexcept
Addition operator.
Definition: EBGeometry_VecImplem.hpp:115
-
bool operator>=(const Vec3T< T > &u) const noexcept
"Greater or equal to" operator.
Definition: EBGeometry_VecImplem.hpp:432
-
T x
First component in the vector.
Definition: EBGeometry_Vec.hpp:55
-
Vec2T< T > operator*(const T &s) const noexcept
Multiplication operator.
Definition: EBGeometry_VecImplem.hpp:102
-
T length() const noexcept
Compute vector length.
Definition: EBGeometry_VecImplem.hpp:444
- -
static constexpr Vec3T< T > one() noexcept
Return av vector with x = y = z = 1.
Definition: EBGeometry_VecImplem.hpp:211
-
Vec2T< T > operator*(const T &s, const Vec2T< T > &a_other) noexcept
Multiplication operator in the form s*Vec2T.
Definition: EBGeometry_VecImplem.hpp:171
-
Vec2T< T > & operator=(const Vec2T &a_other) noexcept
Assignment operator. Sets this.x = a_other.x and this.y = a_other.y.
Definition: EBGeometry_VecImplem.hpp:75
-
Vec3T< T > cross(const Vec3T< T > &u) const noexcept
Vector cross product.
Definition: EBGeometry_VecImplem.hpp:325
-
Vec2T< T > operator-() const noexcept
Negation operator. Returns a new Vec2T<T> with negated components.
Definition: EBGeometry_VecImplem.hpp:96
-
Vec2T()
Default constructor. Sets the vector to the zero vector.
Definition: EBGeometry_VecImplem.hpp:25
-
Two-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:24
-
T length() const noexcept
Compute length of vector.
Definition: EBGeometry_VecImplem.hpp:159
-
Vec2T< T > & operator*=(const T &s) noexcept
Multiplication operator.
Definition: EBGeometry_VecImplem.hpp:133
-
Vec3T< T > min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept
Minimum fucntion. Returns new vector with component-wise minimums.
Definition: EBGeometry_VecImplem.hpp:468
-
T length2() const noexcept
Compute vector length squared.
Definition: EBGeometry_VecImplem.hpp:450
-
Vec2T< T > operator/(const T &s) const noexcept
Division operator.
Definition: EBGeometry_VecImplem.hpp:108
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp.html b/docs/doxygen/html/EBGeometry__Vec_8hpp.html deleted file mode 100644 index 70ffc118..00000000 --- a/docs/doxygen/html/EBGeometry__Vec_8hpp.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_Vec.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry_Vec.hpp File Reference
-
-
- -

Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools. -More...

-
-Include dependency graph for EBGeometry_Vec.hpp:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

class  Vec2T< T >
 Two-dimensional vector class with arithmetic operators. More...
 
class  Vec3T< T >
 Three-dimensional vector class with arithmetic operators. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<class T >
Vec2T< T > operator* (const T &s, const Vec2T< T > &a_other) noexcept
 Multiplication operator in the form s*Vec2T. More...
 
template<class T >
Vec2T< T > operator/ (const T &s, const Vec2T< T > &a_other) noexcept
 Division operator in the form s*Vec2T. More...
 
template<class T >
Vec3T< T > operator* (const T &s, const Vec3T< T > &u) noexcept
 Multiplication operator. More...
 
template<class T >
Vec3T< T > operator/ (const T &s, const Vec3T< T > &u) noexcept
 Division operator. More...
 
template<class T >
Vec3T< T > min (const Vec3T< T > &u, const Vec3T< T > &v) noexcept
 Minimum fucntion. Returns new vector with component-wise minimums. More...
 
template<class T >
Vec3T< T > max (const Vec3T< T > &u, const Vec3T< T > &v) noexcept
 Minimum fucntion. Returns new vector with component-wise minimums. More...
 
-

Detailed Description

-

Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools.

-
Author
Robert Marskar
-

Function Documentation

- -

◆ max()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> max (const Vec3T< T > & u,
const Vec3T< T > & v 
)
-
-inlinenoexcept
-
- -

Minimum fucntion. Returns new vector with component-wise minimums.

-
Parameters
- - - -
[in]uVector
[in]vOther vector
-
-
-
Returns
Returns new vector with components X[0] = std::max(u.X[0], v.X[0]) and so on
- -
-
- -

◆ min()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> min (const Vec3T< T > & u,
const Vec3T< T > & v 
)
-
-inlinenoexcept
-
- -

Minimum fucntion. Returns new vector with component-wise minimums.

-
Parameters
- - - -
[in]uVector
[in]vOther vector
-
-
-
Returns
Returns new vector with components X[0] = std::min(u.X[0], v.X[0]) and so on
- -
-
- -

◆ operator*() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec2T<T> operator* (const T & s,
const Vec2T< T > & a_other 
)
-
-inlinenoexcept
-
- -

Multiplication operator in the form s*Vec2T.

-
Parameters
- - - -
[in]sMultiplication factor
[in]a_otherOther vector
-
-
-
Returns
Returns a new vector with components x = s*a_other.x (and same for y)
- -
-
- -

◆ operator*() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> operator* (const T & s,
const Vec3T< T > & u 
)
-
-inlinenoexcept
-
- -

Multiplication operator.

-
Parameters
- - - -
[in]sMultiplication scalar
[in]uVector
-
-
-
Returns
Returns new vector with components X[0] = s*X[0] and so on.
- -
-
- -

◆ operator/() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec2T<T> operator/ (const T & s,
const Vec2T< T > & a_other 
)
-
-inlinenoexcept
-
- -

Division operator in the form s*Vec2T.

-
Parameters
- - - -
[in]sDivision factor
[in]a_otherOther vector
-
-
-
Returns
Returns a new vector with components x = (1/s)*a_other.x (and same for y)
- -
-
- -

◆ operator/() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec3T<T> operator/ (const T & s,
const Vec3T< T > & u 
)
-
-inlinenoexcept
-
- -

Division operator.

-
Parameters
- - - -
[in]sDivision scalar
[in]uVector
-
-
-
Returns
Returns new vector with components X[0] = X[0]/s and so on.
- -
-
-
- - - - diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.map b/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.map deleted file mode 100644 index 0899196d..00000000 --- a/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.map +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.md5 b/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.md5 deleted file mode 100644 index 01389f49..00000000 --- a/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -36760280ed4de133b33592c7cabecd1a \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.png b/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.png deleted file mode 100644 index 470c8043..00000000 Binary files a/docs/doxygen/html/EBGeometry__Vec_8hpp__dep__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.map b/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.map deleted file mode 100644 index 9444a3a7..00000000 --- a/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.md5 b/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.md5 deleted file mode 100644 index 2d84a56a..00000000 --- a/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e5700da657834e089882a2b0788f8425 \ No newline at end of file diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.png b/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.png deleted file mode 100644 index 0858f3f0..00000000 Binary files a/docs/doxygen/html/EBGeometry__Vec_8hpp__incl.png and /dev/null differ diff --git a/docs/doxygen/html/EBGeometry__Vec_8hpp_source.html b/docs/doxygen/html/EBGeometry__Vec_8hpp_source.html deleted file mode 100644 index 763cd746..00000000 --- a/docs/doxygen/html/EBGeometry__Vec_8hpp_source.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -EBGeometry: Source/EBGeometry_Vec.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry_Vec.hpp
-
-
-Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_Vec
13 #define EBGeometry_Vec
14 
15 // Our includes
17 
23 template<class T>
24 class Vec2T {
25 public:
26 
30  Vec2T();
31 
37  Vec2T(const Vec2T& u);
38 
45  Vec2T(const T& a_x, const T& a_y);
46 
50  ~Vec2T() = default;
51 
55  T x;
56 
60  T y;
61 
65  inline
66  static constexpr Vec2T<T> zero() noexcept;
67 
71  inline
72  static constexpr Vec2T<T> one() noexcept;
73 
77  inline
78  static constexpr Vec2T<T> min() noexcept;
79 
83  inline
84  static constexpr Vec2T<T> max() noexcept;
85 
89  inline
90  static constexpr Vec2T<T> infinity() noexcept;
91 
96  inline
97  Vec2T<T>& operator=(const Vec2T& a_other) noexcept;
98 
104  inline
105  Vec2T<T> operator+(const Vec2T& a_other) const noexcept;
106 
112  inline
113  Vec2T<T> operator-(const Vec2T& a_other) const noexcept;
114 
118  inline
119  Vec2T<T> operator-() const noexcept;
120 
126  inline
127  Vec2T<T> operator*(const T& s) const noexcept;
128 
134  inline
135  Vec2T<T> operator/(const T& s) const noexcept;
136 
142  inline
143  Vec2T<T>& operator+=(const Vec2T& a_other) noexcept;
144 
150  inline
151  Vec2T<T>& operator-=(const Vec2T& a_other) noexcept;
152 
158  inline
159  Vec2T<T>& operator*=(const T& s) noexcept;
160 
166  inline
167  Vec2T<T>& operator/=(const T& s) noexcept;
168 
174  inline
175  T dot(const Vec2T& a_other) const noexcept;
176 
181  inline
182  T length() const noexcept;
183 
188  inline
189  T length2() const noexcept;
190 };
191 
198 template <class T>
199 inline
200 Vec2T<T> operator*(const T& s, const Vec2T<T>& a_other) noexcept;
201 
208 template <class T>
209 inline
210 Vec2T<T> operator/(const T& s, const Vec2T<T>& a_other) noexcept;
211 
212 
219 template <class T>
220 class Vec3T {
221 public:
222 
226  Vec3T();
227 
233  Vec3T(const Vec3T<T>& a_u);
234 
242  Vec3T(const T& a_x, const T& a_y, const T& a_z);
243 
247  ~Vec3T() = default;
248 
252  inline
253  static constexpr Vec3T<T> zero() noexcept;
254 
258  inline
259  static constexpr Vec3T<T> one() noexcept;
260 
264  inline
265  static constexpr Vec3T<T> min() noexcept;
266 
270  inline
271  static constexpr Vec3T<T> max() noexcept;
272 
276  inline
277  static constexpr Vec3T<T> infinity() noexcept;
278 
283  inline
284  T& operator[](int i) noexcept;
285 
290  inline
291  const T& operator[](int i) const noexcept;
292 
297  inline
298  bool operator==(const Vec3T<T>& u) const noexcept;
299 
305  inline
306  bool operator<(const Vec3T<T>& u) const noexcept;
307 
313  inline
314  bool operator>(const Vec3T<T>& u) const noexcept;
315 
321  inline
322  bool operator<=(const Vec3T<T>& u) const noexcept;
323 
329  inline
330  bool operator>=(const Vec3T<T>& u) const noexcept;
331 
336  inline
337  Vec3T<T>& operator=(const Vec3T<T>& u) noexcept;
338 
344  inline
345  Vec3T<T> operator+(const Vec3T<T>& u) const noexcept;
346 
352  inline
353  Vec3T<T> operator-(const Vec3T<T>& u) const noexcept;
354 
358  inline
359  Vec3T<T> operator-() const noexcept;
360 
366  inline
367  Vec3T<T> operator*(const T& s) const noexcept;
368 
374  inline
375  Vec3T<T> operator*(const Vec3T<T>& s) const noexcept;
376 
382  inline
383  Vec3T<T> operator/(const T& s) const noexcept;
384 
390  inline
391  Vec3T<T> operator/(const Vec3T<T>& v) const noexcept;
392 
398  inline
399  Vec3T<T>& operator+=(const Vec3T<T>& u) noexcept;
400 
406  inline
407  Vec3T<T>& operator-=(const Vec3T<T>& u) noexcept;
408 
414  inline
415  Vec3T<T>& operator*=(const T& s) noexcept;
416 
422  inline
423  Vec3T<T>& operator/=(const T& s) noexcept;
424 
430  inline
431  Vec3T<T> min(const Vec3T<T>& u) noexcept;
432 
438  inline
439  Vec3T<T> max(const Vec3T<T>& u) noexcept;
440 
446  inline
447  Vec3T<T> cross(const Vec3T<T>& u) const noexcept;
448 
454  inline
455  T dot(const Vec3T<T>& u) const noexcept;
456 
462  inline
463  int minDir(const bool a_doAbs) const noexcept;
464 
470  inline
471  int maxDir(const bool a_doAbs) const noexcept;
472 
477  inline
478  T length() const noexcept;
479 
484  inline
485  T length2() const noexcept;
486 
487 protected:
488 
492  T X[3];
493 };
494 
501 template <class T>
502 inline
503 Vec3T<T> operator*(const T& s, const Vec3T<T>& u) noexcept;
504 
511 template <class T>
512 inline
513 Vec3T<T> operator/(const T& s, const Vec3T<T>& u) noexcept;
514 
521 template <class T>
522 inline
523 Vec3T<T> min(const Vec3T<T>& u, const Vec3T<T>& v) noexcept;
524 
531 template <class T>
532 inline
533 Vec3T<T> max(const Vec3T<T>& u, const Vec3T<T>& v) noexcept;
534 
536 
537 #include "EBGeometry_VecImplem.hpp"
538 
539 #endif
Vec2T< T > & operator/=(const T &s) noexcept
Division operator operator.
Definition: EBGeometry_VecImplem.hpp:142
-
static constexpr Vec2T< T > zero() noexcept
Return av vector with x = y = 0.
Definition: EBGeometry_VecImplem.hpp:45
-
Vec2T< T > & operator-=(const Vec2T &a_other) noexcept
Subtraction operator.
Definition: EBGeometry_VecImplem.hpp:124
-
T dot(const Vec2T &a_other) const noexcept
Dot product operator.
Definition: EBGeometry_VecImplem.hpp:153
-
T y
Second component in the vector.
Definition: EBGeometry_Vec.hpp:60
-
static constexpr Vec2T< T > infinity() noexcept
Return a vector with inf components.
Definition: EBGeometry_VecImplem.hpp:69
-
Vec2T< T > operator+(const Vec2T &a_other) const noexcept
Addition operator.
Definition: EBGeometry_VecImplem.hpp:84
-
static constexpr Vec2T< T > one() noexcept
Return av vector with x = y = 1.
Definition: EBGeometry_VecImplem.hpp:51
-
static constexpr Vec2T< T > max() noexcept
Return maximum possible representative vector.
Definition: EBGeometry_VecImplem.hpp:63
- -
T length2() const noexcept
Compute square of vector.
Definition: EBGeometry_VecImplem.hpp:165
-
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:220
-
static constexpr Vec2T< T > min() noexcept
Return minimum possible representative vector.
Definition: EBGeometry_VecImplem.hpp:57
-
Vec2T< T > & operator+=(const Vec2T &a_other) noexcept
Addition operator.
Definition: EBGeometry_VecImplem.hpp:115
-
T x
First component in the vector.
Definition: EBGeometry_Vec.hpp:55
-
Vec2T< T > operator*(const T &s) const noexcept
Multiplication operator.
Definition: EBGeometry_VecImplem.hpp:102
- -
Vec2T< T > & operator=(const Vec2T &a_other) noexcept
Assignment operator. Sets this.x = a_other.x and this.y = a_other.y.
Definition: EBGeometry_VecImplem.hpp:75
-
Vec2T< T > operator-() const noexcept
Negation operator. Returns a new Vec2T<T> with negated components.
Definition: EBGeometry_VecImplem.hpp:96
-
Vec2T()
Default constructor. Sets the vector to the zero vector.
Definition: EBGeometry_VecImplem.hpp:25
-
Two-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:24
-
T length() const noexcept
Compute length of vector.
Definition: EBGeometry_VecImplem.hpp:159
-
Vec2T< T > & operator*=(const T &s) noexcept
Multiplication operator.
Definition: EBGeometry_VecImplem.hpp:133
-
~Vec2T()=default
Destructor (does nothing)
-
Implementation of EBGeometry_Vec.hpp.
-
Vec2T< T > operator/(const T &s) const noexcept
Division operator.
Definition: EBGeometry_VecImplem.hpp:108
-
- - - - diff --git a/docs/doxygen/html/annotated.html b/docs/doxygen/html/annotated.html deleted file mode 100644 index ee2597de..00000000 --- a/docs/doxygen/html/annotated.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -EBGeometry: Class List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 NBoundingVolumesNamespace for encapsulating various bounding volumes for usage with BVHs
 CAABBTAxis-aligned bounding box as bounding volume
 CBoundingSphereTClass which encloses a set of points using a bounding sphere
 NBVHNamespace for various bounding volume heirarchy (BVH) functionality
 CLinearBVHForward declare linear BVH class
 CLinearNodeTForward declare linear node class
 CNodeTForward declare the BVH node since it is needed for the polymorphic lambdas
 NDcelNamespace containing various double-connected edge list (DCEL) functionality
 NParserNamespace which encapsulates possible file parsers for building DCEL meshes
 CPLYClass for generation a Dcel::MeshT<T> from the Stanford PLY file format
 CEdgeIteratorTClass which can iterate through edges and vertices around a DCEL polygon face
 CEdgeTClass which represents a half-edge in a double-edge connected list (DCEL)
 CFaceTClass which represents a polygon face in a double-edge connected list (DCEL)
 CMeshTMesh class which stores a full DCEL mesh (with signed distance functions)
 CPolygon2DClass for embedding a DCEL polygon face into 2D
 CVertexTClass which represents a vertex node in a double-edge connected list (DCEL)
 CBoxSDFSigned distance field for an axis-aligned box
 CCylinderSDFSigned distance field for a cylinder
 CRotateOpRotation operator. Can scale an input point
 CSignedDistanceFunctionAbstract representation of a signed distance function
 CSphereSDFSigned distance field for sphere
 CTorusSDFSigned distance field for a torus
 CTransformOpBase class for transformation operators
 CTranslateOpTranslation operator. Can translate an input point
 CUnionDistance function union. Computes the signed distance to the closest object of N non-overlapping objects
 CUnionBVHDistance function union using BVHs. Computes the signed distance to the closest object of N non-overlapping objects
 CVec2TTwo-dimensional vector class with arithmetic operators
 CVec3TThree-dimensional vector class with arithmetic operators
-
-
- - - - diff --git a/docs/doxygen/html/bc_s.png b/docs/doxygen/html/bc_s.png deleted file mode 100644 index 224b29aa..00000000 Binary files a/docs/doxygen/html/bc_s.png and /dev/null differ diff --git a/docs/doxygen/html/bdwn.png b/docs/doxygen/html/bdwn.png deleted file mode 100644 index 940a0b95..00000000 Binary files a/docs/doxygen/html/bdwn.png and /dev/null differ diff --git a/docs/doxygen/html/classBVH_1_1LinearBVH-members.html b/docs/doxygen/html/classBVH_1_1LinearBVH-members.html deleted file mode 100644 index f53345c6..00000000 --- a/docs/doxygen/html/classBVH_1_1LinearBVH-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
BVH::LinearBVH< T, P, BV, K > Member List
-
-
- -

This is the complete list of members for BVH::LinearBVH< T, P, BV, K >, including all inherited members.

- - - - - - - - - - - -
LinearBVH()=deleteBVH::LinearBVH< T, P, BV, K >
LinearBVH(const std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)BVH::LinearBVH< T, P, BV, K >inline
LinearBVH(const std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)BVH::LinearBVH< T, P, BV, K >inline
LinearNode typedefBVH::LinearBVH< T, P, BV, K >
m_linearNodesBVH::LinearBVH< T, P, BV, K >protected
m_primitivesBVH::LinearBVH< T, P, BV, K >protected
PrimitiveList typedefBVH::LinearBVH< T, P, BV, K >
signedDistance(const Vec3 &a_point) const noexceptBVH::LinearBVH< T, P, BV, K >inline
Vec3 typedefBVH::LinearBVH< T, P, BV, K >
~LinearBVH()BVH::LinearBVH< T, P, BV, K >inlinevirtual
- - - - diff --git a/docs/doxygen/html/classBVH_1_1LinearBVH.html b/docs/doxygen/html/classBVH_1_1LinearBVH.html deleted file mode 100644 index 4ddd9961..00000000 --- a/docs/doxygen/html/classBVH_1_1LinearBVH.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - -EBGeometry: BVH::LinearBVH< T, P, BV, K > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BVH::LinearBVH< T, P, BV, K > Class Template Reference
-
-
- -

Forward declare linear BVH class. - More...

- -

#include <EBGeometry_BVH.hpp>

- - - - - - - - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Cut down on typing.
 
-using LinearNode = LinearNodeT< T, P, BV, K >
 Alias for cutting down on typing.
 
-using PrimitiveList = std::vector< std::shared_ptr< const P > >
 List of primitives.
 
- - - - - - - - - - - - - - - - -

-Public Member Functions

LinearBVH ()=delete
 Disallowed. Use the full constructor please.
 
 LinearBVH (const std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)
 Full constructor. Associates the nodes and primitives. More...
 
 LinearBVH (const std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)
 Full constructor. Associates the nodes and primitives. More...
 
-virtual ~LinearBVH ()
 Destructor. Does nothing.
 
signedDistance (const Vec3 &a_point) const noexcept
 Function which computes the signed distance. This calls the other version. More...
 
- - - - - - - -

-Protected Attributes

-std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > m_linearNodes
 List of linearly stored nodes.
 
-std::vector< std::shared_ptr< const P > > m_primitives
 Global list of primitives. Note that this is ALL primitives, sorted so that LinearNodeT can interface into it.
 
-

Detailed Description

-

template<class T, class P, class BV, int K>
-class BVH::LinearBVH< T, P, BV, K >

- -

Forward declare linear BVH class.

-

Linear root node for BVH hierarchy.

-

T is the precision used in the BVH computations, P is the enclosing primitive and BV is the bounding volume used in the BVH. K is the tree degree.

-

Constructor & Destructor Documentation

- -

◆ LinearBVH() [1/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
BVH::LinearBVH< T, P, BV, K >::LinearBVH (const std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > & a_linearNodes,
const std::vector< std::shared_ptr< const P > > & a_primitives 
)
-
-inline
-
- -

Full constructor. Associates the nodes and primitives.

-
Parameters
- - - -
[in]a_linearNodesLinearized BVH nodes.
[in]a_primitivesPrimitives.
-
-
- -
-
- -

◆ LinearBVH() [2/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
BVH::LinearBVH< T, P, BV, K >::LinearBVH (const std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > & a_linearNodes,
const std::vector< std::shared_ptr< const P > > & a_primitives 
)
-
-inline
-
- -

Full constructor. Associates the nodes and primitives.

-
Parameters
- - - -
[in]a_linearNodesLinearized BVH nodes.
[in]a_primitivesPrimitives.
-
-
- -
-
-

Member Function Documentation

- -

◆ signedDistance()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
T BVH::LinearBVH< T, P, BV, K >::signedDistance (const Vec3a_point) const
-
-inlinenoexcept
-
- -

Function which computes the signed distance. This calls the other version.

-
Parameters
- - -
[in]a_point3D point in space
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classBVH_1_1LinearNodeT-members.html b/docs/doxygen/html/classBVH_1_1LinearNodeT-members.html deleted file mode 100644 index 20304218..00000000 --- a/docs/doxygen/html/classBVH_1_1LinearNodeT-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
BVH::LinearNodeT< T, P, BV, K > Member List
-
-
- -

This is the complete list of members for BVH::LinearNodeT< T, P, BV, K >, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
getBoundingVolume() const noexceptBVH::LinearNodeT< T, P, BV, K >inline
getChildOffsets() const noexceptBVH::LinearNodeT< T, P, BV, K >inline
getDistanceToBoundingVolume(const Vec3 &a_point) const noexceptBVH::LinearNodeT< T, P, BV, K >inline
getDistanceToPrimitives(const Vec3 &a_point, const std::vector< std::shared_ptr< const P > > &a_primitives) const noexceptBVH::LinearNodeT< T, P, BV, K >inline
getNumPrimitives() const noexceptBVH::LinearNodeT< T, P, BV, K >inline
getPrimitivesOffset() const noexceptBVH::LinearNodeT< T, P, BV, K >inline
isLeaf() const noexceptBVH::LinearNodeT< T, P, BV, K >inline
LinearNodeT()BVH::LinearNodeT< T, P, BV, K >inline
m_boundingVolumeBVH::LinearNodeT< T, P, BV, K >protected
m_childOffsetsBVH::LinearNodeT< T, P, BV, K >protected
m_numPrimitivesBVH::LinearNodeT< T, P, BV, K >protected
m_primitivesOffsetBVH::LinearNodeT< T, P, BV, K >protected
setBoundingVolume(const BV &a_boundingVolume) noexceptBVH::LinearNodeT< T, P, BV, K >inline
setChildOffset(const unsigned long a_childOffset, const int a_whichChild) noexceptBVH::LinearNodeT< T, P, BV, K >inline
setNumPrimitives(const int a_numPrimitives) noexceptBVH::LinearNodeT< T, P, BV, K >inline
setPrimitivesOffset(const unsigned long a_primitivesOffset) noexceptBVH::LinearNodeT< T, P, BV, K >inline
Vec3 typedefBVH::LinearNodeT< T, P, BV, K >
~LinearNodeT()BVH::LinearNodeT< T, P, BV, K >inlinevirtual
- - - - diff --git a/docs/doxygen/html/classBVH_1_1LinearNodeT.html b/docs/doxygen/html/classBVH_1_1LinearNodeT.html deleted file mode 100644 index 1b38ca18..00000000 --- a/docs/doxygen/html/classBVH_1_1LinearNodeT.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - - - - -EBGeometry: BVH::LinearNodeT< T, P, BV, K > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BVH::LinearNodeT< T, P, BV, K > Class Template Reference
-
-
- -

Forward declare linear node class. - More...

- -

#include <EBGeometry_BVH.hpp>

- - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Alias for cutting down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

LinearNodeT ()
 Constructor.
 
-virtual ~LinearNodeT ()
 Destructor.
 
void setBoundingVolume (const BV &a_boundingVolume) noexcept
 Set the bounding volume. More...
 
-void setPrimitivesOffset (const unsigned long a_primitivesOffset) noexcept
 Set the offset into the primitives array.
 
void setNumPrimitives (const int a_numPrimitives) noexcept
 Set number of primitives. More...
 
void setChildOffset (const unsigned long a_childOffset, const int a_whichChild) noexcept
 Set the child offsets. More...
 
-const BV & getBoundingVolume () const noexcept
 Get the node bounding volume. return m_boundingVolume.
 
const unsigned long & getPrimitivesOffset () const noexcept
 Get the primitives offset. More...
 
const unsigned long & getNumPrimitives () const noexcept
 Get the number of primitives. More...
 
const std::array< unsigned long, K > & getChildOffsets () const noexcept
 Get the child offsets. More...
 
-bool isLeaf () const noexcept
 Is leaf or not.
 
getDistanceToBoundingVolume (const Vec3 &a_point) const noexcept
 Get the distance from a 3D point to the bounding volume. More...
 
getDistanceToPrimitives (const Vec3 &a_point, const std::vector< std::shared_ptr< const P > > &a_primitives) const noexcept
 Compute signed distance to primitives. More...
 
- - - - - - - - - - - - - -

-Protected Attributes

-BV m_boundingVolume
 Bounding volume.
 
-unsigned long m_primitivesOffset
 Offset into primitives array.
 
-int m_numPrimitives
 Number of primitives.
 
-std::array< unsigned long, K > m_childOffsets
 Offset to child nodes.
 
-

Detailed Description

-

template<class T, class P, class BV, int K>
-class BVH::LinearNodeT< T, P, BV, K >

- -

Forward declare linear node class.

-

Node type for linearized (flattened) BVH. This will be constructed from the other (conventional) BVH type.

-

T is the precision used in the BVH computations, P is the enclosing primitive and BV is the bounding volume used in the BVH. K is the tree degree.

-

T is the precision for Vec3, P is the primitive type you want to enclose, BV is the bounding volume you use for it.

-
Note
P MUST supply function signedDistance(...) BV must supply a function getDistance (had this been C++20, we would have use concepts to enforce this). Note that LinearNode is the result of a flattened BVH hierarchy where nodes are stored with depth-first ordering for improved cache-location in the downward traversal.
-
-This class exists so that we can fit the nodes with a smaller memory footprint. The standard BVH node (NodeT) is very useful when building the tree but less useful when traversing it since it stores references to the primitives in the node itself. It will span multiple cache lines. This node exists so that we can fit all the BVH info onto fewer cache lines. The number of cache lines will depend on the tree degree, precision, and bounding volume that is chosen.
-
Todo:
There's a minor optimization that can be made to the memory alignment, which is as follows: For a leaf node we never really need the m_childOffsets array, and for a regular node we never really need the m_primitivesOffset member. Moreover, m_childOffsets could be made into a K-1 sized array because we happen to know that the linearized hierarchy will store the first child node immediately after the regular node. We could shave off 16 bytes of storage, which would mean that a double-precision binary tree only takes up one word of CPU memory.
-

Member Function Documentation

- -

◆ getChildOffsets()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
const std::array< unsigned long, K > & BVH::LinearNodeT< T, P, BV, K >::getChildOffsets () const
-
-inlinenoexcept
-
- -

Get the child offsets.

-
Returns
Returns m_childOffsets
- -
-
- -

◆ getDistanceToBoundingVolume()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
T BVH::LinearNodeT< T, P, BV, K >::getDistanceToBoundingVolume (const Vec3a_point) const
-
-inlinenoexcept
-
- -

Get the distance from a 3D point to the bounding volume.

-
Parameters
- - -
[in]a_point3D point
-
-
-
Returns
Returns distance to bounding volume. A zero distance implies that the input point is inside the bounding volume.
- -
-
- -

◆ getDistanceToPrimitives()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
T BVH::LinearNodeT< T, P, BV, K >::getDistanceToPrimitives (const Vec3a_point,
const std::vector< std::shared_ptr< const P > > & a_primitives 
) const
-
-inlinenoexcept
-
- -

Compute signed distance to primitives.

-
Parameters
- - - -
[in]a_pointPoint
[in]a_primitivesList of primitives
-
-
-
Note
Only call if this is a leaf node.
- -
-
- -

◆ getNumPrimitives()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
const unsigned long & BVH::LinearNodeT< T, P, BV, K >::getNumPrimitives () const
-
-inlinenoexcept
-
- -

Get the number of primitives.

-
Returns
Returns m_numPrimitives
- -
-
- -

◆ getPrimitivesOffset()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
const unsigned long & BVH::LinearNodeT< T, P, BV, K >::getPrimitivesOffset () const
-
-inlinenoexcept
-
- -

Get the primitives offset.

-
Returns
Returns m_primitivesOffset
- -
-
- -

◆ setBoundingVolume()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
void BVH::LinearNodeT< T, P, BV, K >::setBoundingVolume (const BV & a_boundingVolume)
-
-inlinenoexcept
-
- -

Set the bounding volume.

-
Parameters
- - -
[in]a_boundingVolumeBounding volume for this node.
-
-
- -
-
- -

◆ setChildOffset()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void BVH::LinearNodeT< T, P, BV, K >::setChildOffset (const unsigned long a_childOffset,
const int a_whichChild 
)
-
-inlinenoexcept
-
- -

Set the child offsets.

-
Parameters
- - - -
[in]a_childOffsetOffset in node array.
[in]a_whichChildChild index in m_childrenOffsets. Must be [0,K-1]
-
-
- -
-
- -

◆ setNumPrimitives()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
void BVH::LinearNodeT< T, P, BV, K >::setNumPrimitives (const int a_numPrimitives)
-
-inlinenoexcept
-
- -

Set number of primitives.

-
Parameters
- - -
[in]a_numPrimitivesNumber of primitives.
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classBVH_1_1NodeT-members.html b/docs/doxygen/html/classBVH_1_1NodeT-members.html deleted file mode 100644 index 7fd91e57..00000000 --- a/docs/doxygen/html/classBVH_1_1NodeT-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
BVH::NodeT< T, P, BV, K > Member List
-
-
- -

This is the complete list of members for BVH::NodeT< T, P, BV, K >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BVConstructor typedefBVH::NodeT< T, P, BV, K >
flattenTree() const noexceptBVH::NodeT< T, P, BV, K >inline
flattenTree(std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, std::vector< std::shared_ptr< const P > > &a_sortedPrimitives, unsigned long &a_offset) const noexceptBVH::NodeT< T, P, BV, K >inlineprotected
getBoundingVolume() const noexceptBVH::NodeT< T, P, BV, K >inline
getChildren() const noexceptBVH::NodeT< T, P, BV, K >inline
getDistanceToBoundingVolume(const Vec3 &a_point) const noexceptBVH::NodeT< T, P, BV, K >inlineprotected
getDistanceToPrimitives(const Vec3 &a_point) const noexceptBVH::NodeT< T, P, BV, K >inlineprotected
getPrimitives() const noexceptBVH::NodeT< T, P, BV, K >inline
getPrimitives() noexceptBVH::NodeT< T, P, BV, K >inlineprotected
insertChildren(const std::array< PrimitiveList, K > &a_primitives) noexceptBVH::NodeT< T, P, BV, K >inlineprotected
isLeaf() const noexceptBVH::NodeT< T, P, BV, K >inline
m_boundingVolumeBVH::NodeT< T, P, BV, K >protected
m_childrenBVH::NodeT< T, P, BV, K >protected
m_primitivesBVH::NodeT< T, P, BV, K >protected
Node typedefBVH::NodeT< T, P, BV, K >
NodePtr typedefBVH::NodeT< T, P, BV, K >
NodeT()BVH::NodeT< T, P, BV, K >inline
NodeT(const std::vector< std::shared_ptr< P > > &a_primitives)BVH::NodeT< T, P, BV, K >inline
NodeT(const std::vector< std::shared_ptr< const P > > &a_primitives)BVH::NodeT< T, P, BV, K >inline
Partitioner typedefBVH::NodeT< T, P, BV, K >
PrimitiveList typedefBVH::NodeT< T, P, BV, K >
pruneOrdered(T &a_closest, const Vec3 &a_point) const noexceptBVH::NodeT< T, P, BV, K >inlineprotected
pruneStack(const Vec3 &a_point) const noexceptBVH::NodeT< T, P, BV, K >inlineprotected
pruneUnordered(T &a_closest, const Vec3 &a_point) const noexceptBVH::NodeT< T, P, BV, K >inlineprotected
setPrimitives(const PrimitiveList &a_primitives) noexceptBVH::NodeT< T, P, BV, K >inlineprotected
signedDistance(const Vec3T< T > &a_point) const noexceptBVH::NodeT< T, P, BV, K >inline
signedDistance(const Vec3T< T > &a_point, const Prune a_pruning) const noexceptBVH::NodeT< T, P, BV, K >inline
StopFunction typedefBVH::NodeT< T, P, BV, K >
topDownSortAndPartitionPrimitives(const BVConstructor &a_bvConstructor, const Partitioner &a_partitioner, const StopFunction &a_stopCrit) noexceptBVH::NodeT< T, P, BV, K >inline
Vec3 typedefBVH::NodeT< T, P, BV, K >
~NodeT()BVH::NodeT< T, P, BV, K >inlinevirtual
- - - - diff --git a/docs/doxygen/html/classBVH_1_1NodeT.html b/docs/doxygen/html/classBVH_1_1NodeT.html deleted file mode 100644 index a409c442..00000000 --- a/docs/doxygen/html/classBVH_1_1NodeT.html +++ /dev/null @@ -1,916 +0,0 @@ - - - - - - - -EBGeometry: BVH::NodeT< T, P, BV, K > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BVH::NodeT< T, P, BV, K > Class Template Reference
-
-
- -

Forward declare the BVH node since it is needed for the polymorphic lambdas. - More...

- -

#include <EBGeometry_BVH.hpp>

- - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

-using PrimitiveList = PrimitiveListT< P >
 Alias for cutting down on typing. This is a std::vector<std::shared_ptr<const P> >.
 
-using Vec3 = Vec3T< T >
 Alias for cutting down on typing.
 
-using Node = NodeT< T, P, BV, K >
 Alias for cutting down on typing.
 
-using NodePtr = std::shared_ptr< Node >
 Alias for cutting down on typing.
 
-using StopFunction = StopFunctionT< T, P, BV, K >
 Alias for cutting down on typing.
 
-using Partitioner = PartitionerT< P, K >
 Alias for cutting down on typing.
 
-using BVConstructor = BVConstructorT< P, BV >
 Alias for cutting down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

NodeT ()
 Default constructor which sets a regular node.
 
 NodeT (const std::vector< std::shared_ptr< P > > &a_primitives)
 Construct node from a set of primitives. More...
 
 NodeT (const std::vector< std::shared_ptr< const P > > &a_primitives)
 Construct node from a set of primitives. More...
 
-virtual ~NodeT ()
 Destructor (does nothing)
 
void topDownSortAndPartitionPrimitives (const BVConstructor &a_bvConstructor, const Partitioner &a_partitioner, const StopFunction &a_stopCrit) noexcept
 Function for using top-down construction of the bounding volume hierarchy. More...
 
-bool isLeaf () const noexcept
 Get node type.
 
const PrimitiveListgetPrimitives () const noexcept
 Get the primitives stored in this node. More...
 
const BV & getBoundingVolume () const noexcept
 Get bounding volume. More...
 
const std::array< std::shared_ptr< NodeT< T, P, BV, K > >, K > & getChildren () const noexcept
 Return this node's children. More...
 
signedDistance (const Vec3T< T > &a_point) const noexcept
 Function which computes the signed distance. More...
 
signedDistance (const Vec3T< T > &a_point, const Prune a_pruning) const noexcept
 Function which computes the signed distance. This version allows the user to manually select a traversal algorithm. More...
 
std::shared_ptr< LinearBVH< T, P, BV, K > > flattenTree () const noexcept
 Flatten everything beneath this node into a depth-first sorted BVH hierarchy. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Protected Member Functions

void insertChildren (const std::array< PrimitiveList, K > &a_primitives) noexcept
 Insert nodes with primitives. More...
 
void setPrimitives (const PrimitiveList &a_primitives) noexcept
 Set primitives in this node. More...
 
getDistanceToBoundingVolume (const Vec3 &a_point) const noexcept
 Get the distance from a 3D point to the bounding volume. More...
 
getDistanceToPrimitives (const Vec3 &a_point) const noexcept
 Compute the shortest distance to the primitives in this node. More...
 
PrimitiveListgetPrimitives () noexcept
 Get the list of primitives in this node. More...
 
pruneStack (const Vec3 &a_point) const noexcept
 Iterative ordered pruning along the BVH tree. More...
 
void pruneOrdered (T &a_closest, const Vec3 &a_point) const noexcept
 Recursively ordered pruning along the BVH tree. More...
 
void pruneUnordered (T &a_closest, const Vec3 &a_point) const noexcept
 Recursive unordered pruning along the BVH tree. More...
 
unsigned long flattenTree (std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, std::vector< std::shared_ptr< const P > > &a_sortedPrimitives, unsigned long &a_offset) const noexcept
 Flatten tree method. More...
 
- - - - - - - - - - -

-Protected Attributes

-BV m_boundingVolume
 Bounding volume object.
 
-std::vector< std::shared_ptr< const P > > m_primitives
 Primitives list. This will be empty for regular nodes.
 
-std::array< std::shared_ptr< NodeT< T, P, BV, K > >, K > m_children
 Children nodes.
 
-

Detailed Description

-

template<class T, class P, class BV, int K>
-class BVH::NodeT< T, P, BV, K >

- -

Forward declare the BVH node since it is needed for the polymorphic lambdas.

-

Class which encapsulates a node in a bounding volume hierarchy.

-

T is the precision used in the BVH computations, P is the enclosing primitive and BV is the bounding volume used in the BVH. K is the tree degree.

-

T is the precision, P is the primitive type you want to enclose, BV is the bounding volume type used at the nodes. The parameter K (which must be > 1) is the tree degree. K=2 is a binary tree, K=3 is a tertiary tree and so on.

Note
Template constraints are as following:
-

P MUST supply function signedDistance(...) . BV MUST supply a function getDistance

-

Had this been C++20, we would have use concepts to enforce this.

-

Constructor & Destructor Documentation

- -

◆ NodeT() [1/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
BVH::NodeT< T, P, BV, K >::NodeT (const std::vector< std::shared_ptr< P > > & a_primitives)
-
-inline
-
- -

Construct node from a set of primitives.

-

This node becomes a leaf node which contains the input primitives.

Parameters
- - -
[in]a_primitivesInput primitives.
-
-
- -
-
- -

◆ NodeT() [2/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
BVH::NodeT< T, P, BV, K >::NodeT (const std::vector< std::shared_ptr< const P > > & a_primitives)
-
-inline
-
- -

Construct node from a set of primitives.

-

This node becomes a leaf node which contains the input primitives.

Parameters
- - -
[in]a_primitivesInput primitives.
-
-
- -
-
-

Member Function Documentation

- -

◆ flattenTree() [1/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
std::shared_ptr< LinearBVH< T, P, BV, K > > BVH::NodeT< T, P, BV, K >::flattenTree () const
-
-inlinenoexcept
-
- -

Flatten everything beneath this node into a depth-first sorted BVH hierarchy.

-

This will compute the flattening of the standard BVH tree and return a pointer to the linear corresponding to the current node.

- -
-
- -

◆ flattenTree() [2/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
unsigned long BVH::NodeT< T, P, BV, K >::flattenTree (std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > & a_linearNodes,
std::vector< std::shared_ptr< const P > > & a_sortedPrimitives,
unsigned long & a_offset 
) const
-
-inlineprotectednoexcept
-
- -

Flatten tree method.

-

This function will flatten everything beneath the current node and linearize all the nodes and primitives beneath it to a_linearNodes and a_sortedPrimitives. This function is called recursively.

Parameters
- - - - -
[in,out]a_linearNodesBVH nodes, linearized onto a vector.
[in,out]a_sortedPrimitivesSorted primitives (in leaf node order).
[in,out]a_offsetSupporting integer for figuring out where in the tree we are.
-
-
-
Note
When called from the root node, a_linearNodes and a_sortedPrimitives should be empty and a_offset=0UL.
- -
-
- -

◆ getBoundingVolume()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
const BV & BVH::NodeT< T, P, BV, K >::getBoundingVolume () const
-
-inlinenoexcept
-
- -

Get bounding volume.

-
Returns
m_bv
- -
-
- -

◆ getChildren()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
const std::array< std::shared_ptr< NodeT< T, P, BV, K > >, K > & BVH::NodeT< T, P, BV, K >::getChildren () const
-
-inlinenoexcept
-
- -

Return this node's children.

-
Returns
m_children.
- -
-
- -

◆ getDistanceToBoundingVolume()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
T BVH::NodeT< T, P, BV, K >::getDistanceToBoundingVolume (const Vec3a_point) const
-
-inlineprotectednoexcept
-
- -

Get the distance from a 3D point to the bounding volume.

-
Parameters
- - -
[in]a_point3D point
-
-
-
Returns
Returns distance to bounding volume. A zero distance implies that the input point is inside the bounding volume.
- -
-
- -

◆ getDistanceToPrimitives()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
T BVH::NodeT< T, P, BV, K >::getDistanceToPrimitives (const Vec3a_point) const
-
-inlineprotectednoexcept
-
- -

Compute the shortest distance to the primitives in this node.

-
Parameters
- - -
[in]a_point3D point
-
-
-
Returns
Returns the signed distance to the primitives.
- -
-
- -

◆ getPrimitives() [1/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
const PrimitiveListT< P > & BVH::NodeT< T, P, BV, K >::getPrimitives () const
-
-inlinenoexcept
-
- -

Get the primitives stored in this node.

-
Returns
m_primitives.
- -
-
- -

◆ getPrimitives() [2/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - -
PrimitiveListT< P > & BVH::NodeT< T, P, BV, K >::getPrimitives ()
-
-inlineprotectednoexcept
-
- -

Get the list of primitives in this node.

-
Returns
Primitives list
- -
-
- -

◆ insertChildren()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
void BVH::NodeT< T, P, BV, K >::insertChildren (const std::array< PrimitiveList, K > & a_primitives)
-
-inlineprotectednoexcept
-
- -

Insert nodes with primitives.

-
Parameters
- - -
[in]a_primitivesPrimitives for children.
-
-
- -
-
- -

◆ pruneOrdered()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void BVH::NodeT< T, P, BV, K >::pruneOrdered (T & a_closest,
const Vec3a_point 
) const
-
-inlineprotectednoexcept
-
- -

Recursively ordered pruning along the BVH tree.

-
Parameters
- - - -
[in,out]a_closestShortest distance to primitives so far.
[in,out]a_pointInput 3D point
-
-
- -
-
- -

◆ pruneStack()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
T BVH::NodeT< T, P, BV, K >::pruneStack (const Vec3a_point) const
-
-inlineprotectednoexcept
-
- -

Iterative ordered pruning along the BVH tree.

-
Parameters
- - -
[in,out]a_pointInput 3D point
-
-
- -
-
- -

◆ pruneUnordered()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void BVH::NodeT< T, P, BV, K >::pruneUnordered (T & a_closest,
const Vec3a_point 
) const
-
-inlineprotectednoexcept
-
- -

Recursive unordered pruning along the BVH tree.

-
Parameters
- - - -
[in,out]a_closestShortest distance to primitives so far.
[in,out]a_pointInput 3D point
-
-
- -
-
- -

◆ setPrimitives()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
void BVH::NodeT< T, P, BV, K >::setPrimitives (const PrimitiveLista_primitives)
-
-inlineprotectednoexcept
-
- -

Set primitives in this node.

-
Parameters
- - -
[in]a_primitivesPrimitives
-
-
- -
-
- -

◆ signedDistance() [1/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - -
T BVH::NodeT< T, P, BV, K >::signedDistance (const Vec3T< T > & a_point) const
-
-inlinenoexcept
-
- -

Function which computes the signed distance.

-
Parameters
- - -
[in]a_point3D point in space
-
-
-
Returns
Signed distance to the input point.
- -
-
- -

◆ signedDistance() [2/2]

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - -
T BVH::NodeT< T, P, BV, K >::signedDistance (const Vec3T< T > & a_point,
const Prune a_pruning 
) const
-
-inlinenoexcept
-
- -

Function which computes the signed distance. This version allows the user to manually select a traversal algorithm.

-
Parameters
- - - -
[in]a_point3D point in space
[in]a_pruningPruning algorithm
-
-
-
Returns
Signed distance to the input point.
- -
-
- -

◆ topDownSortAndPartitionPrimitives()

- -
-
-
-template<class T , class P , class BV , int K>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void BVH::NodeT< T, P, BV, K >::topDownSortAndPartitionPrimitives (const BVConstructora_bvConstructor,
const Partitionera_partitioner,
const StopFunctiona_stopCrit 
)
-
-inlinenoexcept
-
- -

Function for using top-down construction of the bounding volume hierarchy.

-

The rules for terminating the hierarchy construction, how to partition sets of primitives, and how to enclose them by bounding volumes are given in the input arguments (a_stopFunc, a_partFunc, a_bvFunc)

Parameters
- - - - -
[in]a_bvConstructorPolymorphic function which builds a bounding volume from a set of primitives.
[in]a_partitionerPartitioning function. This is a polymorphic function which divides a set of primitives into two lists.
[in]a_stopCritTermination function which tells us when to stop the recursion.
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classBoundingVolumes_1_1AABBT-members.html b/docs/doxygen/html/classBoundingVolumes_1_1AABBT-members.html deleted file mode 100644 index 860b3fbc..00000000 --- a/docs/doxygen/html/classBoundingVolumes_1_1AABBT-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
BoundingVolumes::AABBT< T > Member List
-
-
- -

This is the complete list of members for BoundingVolumes::AABBT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
AABBT()BoundingVolumes::AABBT< T >
AABBT(const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)BoundingVolumes::AABBT< T >
AABBT(const AABBT &a_other)BoundingVolumes::AABBT< T >
AABBT(const std::vector< AABBT< T > > &a_others)BoundingVolumes::AABBT< T >
AABBT(const std::vector< Vec3T< P > > &a_points)BoundingVolumes::AABBT< T >
define(const std::vector< Vec3T< P > > &a_points) noexceptBoundingVolumes::AABBT< T >inline
getArea() const noexceptBoundingVolumes::AABBT< T >inline
getCentroid() const noexceptBoundingVolumes::AABBT< T >inline
getDistance(const Vec3 &a_x0) const noexceptBoundingVolumes::AABBT< T >inline
getHighCorner() noexceptBoundingVolumes::AABBT< T >inline
getHighCorner() const noexceptBoundingVolumes::AABBT< T >inline
getLowCorner() noexceptBoundingVolumes::AABBT< T >inline
getLowCorner() const noexceptBoundingVolumes::AABBT< T >inline
getOverlappingVolume(const AABBT< T > &a_other) const noexceptBoundingVolumes::AABBT< T >inline
getVolume() const noexceptBoundingVolumes::AABBT< T >inline
intersects(const AABBT &a_other) const noexceptBoundingVolumes::AABBT< T >inline
m_hiCornerBoundingVolumes::AABBT< T >protected
m_loCornerBoundingVolumes::AABBT< T >protected
Vec3 typedefBoundingVolumes::AABBT< T >
~AABBT()BoundingVolumes::AABBT< T >virtual
- - - - diff --git a/docs/doxygen/html/classBoundingVolumes_1_1AABBT.html b/docs/doxygen/html/classBoundingVolumes_1_1AABBT.html deleted file mode 100644 index 91f1b0bf..00000000 --- a/docs/doxygen/html/classBoundingVolumes_1_1AABBT.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - -EBGeometry: BoundingVolumes::AABBT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BoundingVolumes::AABBT< T > Class Template Reference
-
-
- -

Axis-aligned bounding box as bounding volume. - More...

- -

#include <EBGeometry_BoundingVolumes.hpp>

- - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Alias which cuts down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

AABBT ()
 Default constructor (does nothing)
 
 AABBT (const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)
 Full constructor taking the low/high corners of the bounding box. More...
 
 AABBT (const AABBT &a_other)
 Copy constructor of another bounding box. More...
 
 AABBT (const std::vector< AABBT< T > > &a_others)
 Constructor which creates an AABB which encloses a set of other AABBs. More...
 
-virtual ~AABBT ()
 Destructor (does nothing)
 
template<class P >
 AABBT (const std::vector< Vec3T< P > > &a_points)
 Template constructor (since mixed precision allowed) which creates an AABB that encloses a set of 3D points. More...
 
template<class P >
void define (const std::vector< Vec3T< P > > &a_points) noexcept
 Define function (since mixed precision allowed) which sets this AABB such that it encloses a set of 3D points. More...
 
bool intersects (const AABBT &a_other) const noexcept
 Check if this AABB intersects another AABB. More...
 
-Vec3T< T > & getLowCorner () noexcept
 Get the modifiable lower-left corner of the AABB.
 
-const Vec3T< T > & getLowCorner () const noexcept
 Get the immutable lower-left corner of the AABB.
 
-Vec3T< T > & getHighCorner () noexcept
 Get the modifiable upper-right corner of the AABB.
 
-const Vec3T< T > & getHighCorner () const noexcept
 Get the immutable upper-right corner of the AABB.
 
-Vec3 getCentroid () const noexcept
 Get bounding volume centroid.
 
getOverlappingVolume (const AABBT< T > &a_other) const noexcept
 Compute the overlapping volume between this AABB and another AABB. More...
 
getDistance (const Vec3 &a_x0) const noexcept
 Get the distance to this AABB (points inside the bounding box have a zero distance) More...
 
-T getVolume () const noexcept
 Compute the bounding box volume.
 
-T getArea () const noexcept
 Compute the bounding box area.
 
- - - - - - - -

-Protected Attributes

-Vec3 m_loCorner
 Lower-left corner of bounding box.
 
-Vec3 m_hiCorner
 Upper-right corner of bounding box.
 
-

Detailed Description

-

template<class T>
-class BoundingVolumes::AABBT< T >

- -

Axis-aligned bounding box as bounding volume.

-

This class represents a Cartesian box that encloses a set of 3D points.

Note
The template parameter T is the precision.
-

Constructor & Destructor Documentation

- -

◆ AABBT() [1/4]

- -
-
-
-template<class T >
- - - - - - - - - - - - - - - - - - -
BoundingVolumes::AABBT< T >::AABBT (const Vec3T< T > & a_lo,
const Vec3T< T > & a_hi 
)
-
- -

Full constructor taking the low/high corners of the bounding box.

-
Parameters
- - - -
[in]a_loLow corner
[in]a_hiHigh
-
-
- -
-
- -

◆ AABBT() [2/4]

- -
-
-
-template<class T >
- - - - - - - - -
BoundingVolumes::AABBT< T >::AABBT (const AABBT< T > & a_other)
-
- -

Copy constructor of another bounding box.

-
Parameters
- - -
[in]a_otherOther bounding box
-
-
- -
-
- -

◆ AABBT() [3/4]

- -
-
-
-template<class T >
- - - - - - - - -
BoundingVolumes::AABBT< T >::AABBT (const std::vector< AABBT< T > > & a_others)
-
- -

Constructor which creates an AABB which encloses a set of other AABBs.

-
Parameters
- - -
[in]a_othersOther bounding boxes
-
-
- -
-
- -

◆ AABBT() [4/4]

- -
-
-
-template<class T >
-
-template<class P >
- - - - - - - - -
BoundingVolumes::AABBT< T >::AABBT (const std::vector< Vec3T< P > > & a_points)
-
- -

Template constructor (since mixed precision allowed) which creates an AABB that encloses a set of 3D points.

-
Parameters
- - -
[in]a_pointsSet of 3D points
-
-
-
Note
Calls the define function
- -
-
-

Member Function Documentation

- -

◆ define()

- -
-
-
-template<class T >
-
-template<class P >
- - - - - -
- - - - - - - - -
void BoundingVolumes::AABBT< T >::define (const std::vector< Vec3T< P > > & a_points)
-
-inlinenoexcept
-
- -

Define function (since mixed precision allowed) which sets this AABB such that it encloses a set of 3D points.

-
Parameters
- - -
[in]a_pointsSet of 3D points
-
-
- -
-
- -

◆ getDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T BoundingVolumes::AABBT< T >::getDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the distance to this AABB (points inside the bounding box have a zero distance)

-
Parameters
- - -
[in]a_x03D point
-
-
-
Returns
Returns the distance to the bounding box (a point inside has a zero distance)
- -
-
- -

◆ getOverlappingVolume()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T BoundingVolumes::AABBT< T >::getOverlappingVolume (const AABBT< T > & a_other) const
-
-inlinenoexcept
-
- -

Compute the overlapping volume between this AABB and another AABB.

-
Parameters
- - -
[in]a_otherThe other AABB
-
-
-
Returns
Returns overlapping volume
- -
-
- -

◆ intersects()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool BoundingVolumes::AABBT< T >::intersects (const AABBT< T > & a_other) const
-
-inlinenoexcept
-
- -

Check if this AABB intersects another AABB.

-
Parameters
- - -
[in]a_otherThe other AABB
-
-
-
Returns
True if they intersect and false otherwise.
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classBoundingVolumes_1_1BoundingSphereT-members.html b/docs/doxygen/html/classBoundingVolumes_1_1BoundingSphereT-members.html deleted file mode 100644 index 191eedbf..00000000 --- a/docs/doxygen/html/classBoundingVolumes_1_1BoundingSphereT-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
BoundingVolumes::BoundingSphereT< T > Member List
-
-
- -

This is the complete list of members for BoundingVolumes::BoundingSphereT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - -
BoundingSphereT()BoundingVolumes::BoundingSphereT< T >inline
BoundingSphereT(const Vec3T< T > &a_center, const T &a_radius)BoundingVolumes::BoundingSphereT< T >inline
BoundingSphereT(const std::vector< BoundingSphereT< T > > &a_otherSpheres)BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const BoundingSphereT &a_other)BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg=BoundingVolumeAlgorithm::Ritter)BoundingVolumes::BoundingSphereT< T >
BoundingVolumeAlgorithm enum nameBoundingVolumes::BoundingSphereT< T >
buildRitter(const std::vector< Vec3T< P > > &a_points) noexceptBoundingVolumes::BoundingSphereT< T >inlineprotected
define(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg) noexceptBoundingVolumes::BoundingSphereT< T >inline
getArea() const noexceptBoundingVolumes::BoundingSphereT< T >inline
getCentroid() noexceptBoundingVolumes::BoundingSphereT< T >inline
getCentroid() const noexceptBoundingVolumes::BoundingSphereT< T >inline
getDistance(const Vec3 &a_x0) const noexceptBoundingVolumes::BoundingSphereT< T >inline
getOverlappingVolume(const BoundingSphereT< T > &a_other) const noexceptBoundingVolumes::BoundingSphereT< T >inline
getRadius() noexceptBoundingVolumes::BoundingSphereT< T >inline
getRadius() const noexceptBoundingVolumes::BoundingSphereT< T >inline
getVolume() const noexceptBoundingVolumes::BoundingSphereT< T >inline
intersects(const BoundingSphereT &a_other) const noexceptBoundingVolumes::BoundingSphereT< T >inline
m_centerBoundingVolumes::BoundingSphereT< T >protected
m_radiusBoundingVolumes::BoundingSphereT< T >protected
Vec3 typedefBoundingVolumes::BoundingSphereT< T >
~BoundingSphereT()BoundingVolumes::BoundingSphereT< T >virtual
- - - - diff --git a/docs/doxygen/html/classBoundingVolumes_1_1BoundingSphereT.html b/docs/doxygen/html/classBoundingVolumes_1_1BoundingSphereT.html deleted file mode 100644 index 7e64aea2..00000000 --- a/docs/doxygen/html/classBoundingVolumes_1_1BoundingSphereT.html +++ /dev/null @@ -1,556 +0,0 @@ - - - - - - - -EBGeometry: BoundingVolumes::BoundingSphereT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BoundingVolumes::BoundingSphereT< T > Class Template Reference
-
-
- -

Class which encloses a set of points using a bounding sphere. - More...

- -

#include <EBGeometry_BoundingVolumes.hpp>

- - - - - - - - -

-Public Types

enum  BoundingVolumeAlgorithm { Ritter - }
 Typename for possible algorithms that support the computation of a bounding sphere for a set of 3D points.
 
-using Vec3 = Vec3T< T >
 Alias to cut down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

BoundingSphereT ()
 Default constructor. Leaves object in undefined state.
 
 BoundingSphereT (const Vec3T< T > &a_center, const T &a_radius)
 Full constructor. Sets the center and radius of the bounding sphere. More...
 
 BoundingSphereT (const std::vector< BoundingSphereT< T > > &a_otherSpheres)
 Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres. More...
 
 BoundingSphereT (const BoundingSphereT &a_other)
 Copy constructor. Sets the center and radius from the other sphere. More...
 
-virtual ~BoundingSphereT ()
 Destructor (does nothing).
 
template<class P >
 BoundingSphereT (const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg=BoundingVolumeAlgorithm::Ritter)
 Template constructor which takes a set of 3D points (mixed precision allowed). More...
 
template<class P >
void define (const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg) noexcept
 Template define function which takes a set of 3D points (mixed precision allowed). More...
 
bool intersects (const BoundingSphereT &a_other) const noexcept
 Check if this bounding sphere intersect another bounding sphere. More...
 
-T & getRadius () noexcept
 Get modifiable radius for this sphere.
 
-const T & getRadius () const noexcept
 Get immutable radius for this sphere.
 
-Vec3getCentroid () noexcept
 Get modifiable center for this sphere.
 
-const Vec3getCentroid () const noexcept
 Get immutable center for this sphere.
 
getOverlappingVolume (const BoundingSphereT< T > &a_other) const noexcept
 Compute the overlapping volume between this bounding sphere and another. More...
 
getDistance (const Vec3 &a_x0) const noexcept
 Get the distance to this bounding sphere (points inside the sphere have a zero distance) More...
 
getVolume () const noexcept
 Get the sphere volume. More...
 
getArea () const noexcept
 Get the sphere area. More...
 
- - - - - -

-Protected Member Functions

-template<class P >
void buildRitter (const std::vector< Vec3T< P > > &a_points) noexcept
 Template function which computes the bounding sphere for a set of points (mixed precision allowed) using Ritter's algorithm.
 
- - - - - - - -

-Protected Attributes

-T m_radius
 Sphere radius.
 
-Vec3 m_center
 Sphere center.
 
-

Detailed Description

-

template<class T>
-class BoundingVolumes::BoundingSphereT< T >

- -

Class which encloses a set of points using a bounding sphere.

-

The template parameter T is the floating-point precision which is used.

-

Constructor & Destructor Documentation

- -

◆ BoundingSphereT() [1/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const Vec3T< T > & a_center,
const T & a_radius 
)
-
-inline
-
- -

Full constructor. Sets the center and radius of the bounding sphere.

-
Parameters
- - - -
[in]a_centerBounding sphere center
[in]a_radiusBounding sphere radius
-
-
- -
-
- -

◆ BoundingSphereT() [2/4]

- -
-
-
-template<class T >
- - - - - - - - -
BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const std::vector< BoundingSphereT< T > > & a_otherSpheres)
-
- -

Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres.

-
Parameters
- - -
[in]a_otherSpheresOther bounding spheres.
-
-
- -
-
- -

◆ BoundingSphereT() [3/4]

- -
-
-
-template<class T >
- - - - - - - - -
BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const BoundingSphereT< T > & a_other)
-
- -

Copy constructor. Sets the center and radius from the other sphere.

-
Parameters
- - -
[in]a_otherOther sphere
-
-
- -
-
- -

◆ BoundingSphereT() [4/4]

- -
-
-
-template<class T >
-
-template<class P >
- - - - - - - - - - - - - - - - - - -
BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const std::vector< Vec3T< P > > & a_points,
const BoundingVolumeAlgorithma_alg = BoundingVolumeAlgorithm::Ritter 
)
-
- -

Template constructor which takes a set of 3D points (mixed precision allowed).

-

This computes the bounding sphere using the supplied algorithm.

Parameters
- - - -
[in]a_pointsSet of 3D points
[in]a_algBounding sphere algorithm.
-
-
-
Note
This calls the define(...) function.
- -
-
-

Member Function Documentation

- -

◆ define()

- -
-
-
-template<class T >
-
-template<class P >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void BoundingVolumes::BoundingSphereT< T >::define (const std::vector< Vec3T< P > > & a_points,
const BoundingVolumeAlgorithma_alg 
)
-
-inlinenoexcept
-
- -

Template define function which takes a set of 3D points (mixed precision allowed).

-

This computes the bounding sphere using the supplied algorithm.

Parameters
- - - -
[in]a_pointsSet of 3D points
[in]a_algBounding sphere algorithm.
-
-
- -
-
- -

◆ getArea()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T BoundingVolumes::BoundingSphereT< T >::getArea () const
-
-inlinenoexcept
-
- -

Get the sphere area.

-
Returns
Sphere area.
- -
-
- -

◆ getDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T BoundingVolumes::BoundingSphereT< T >::getDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the distance to this bounding sphere (points inside the sphere have a zero distance)

-
Parameters
- - -
[in]a_x03D point
-
-
-
Returns
Returns the distance to the sphere (a point inside has a zero distance)
- -
-
- -

◆ getOverlappingVolume()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T BoundingVolumes::BoundingSphereT< T >::getOverlappingVolume (const BoundingSphereT< T > & a_other) const
-
-inlinenoexcept
-
- -

Compute the overlapping volume between this bounding sphere and another.

-
Parameters
- - -
[in]a_otherOther bounding sphere
-
-
-
Returns
The overlapping volume, computing using standard expressions.
- -
-
- -

◆ getVolume()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T BoundingVolumes::BoundingSphereT< T >::getVolume () const
-
-inlinenoexcept
-
- -

Get the sphere volume.

-
Returns
Sphere volume
- -
-
- -

◆ intersects()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool BoundingVolumes::BoundingSphereT< T >::intersects (const BoundingSphereT< T > & a_other) const
-
-inlinenoexcept
-
- -

Check if this bounding sphere intersect another bounding sphere.

-
Parameters
- - -
[in]a_otherOther bounding sphere.
-
-
-
Returns
True if the two sphere intersect.
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classBoxSDF-members.html b/docs/doxygen/html/classBoxSDF-members.html deleted file mode 100644 index f718a666..00000000 --- a/docs/doxygen/html/classBoxSDF-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
BoxSDF< T > Member List
-
-
- -

This is the complete list of members for BoxSDF< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - -
BoxSDF()=deleteBoxSDF< T >
BoxSDF(const Vec3T< T > &a_loCorner, const Vec3T< T > &a_hiCorner, const bool a_flipInside)BoxSDF< T >inline
getHighCorner() const noexceptBoxSDF< T >inline
getHighCorner() noexceptBoxSDF< T >inline
getLowCorner() const noexceptBoxSDF< T >inline
getLowCorner() noexceptBoxSDF< T >inline
m_flipInsideBoxSDF< T >protected
m_hiCornerBoxSDF< T >protected
m_loCornerBoxSDF< T >protected
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
signedDistance(const Vec3T< T > &a_point) const noexcept overrideBoxSDF< T >inlinevirtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
~BoxSDF()BoxSDF< T >inlinevirtual
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
- - - - diff --git a/docs/doxygen/html/classBoxSDF.html b/docs/doxygen/html/classBoxSDF.html deleted file mode 100644 index 52f3c678..00000000 --- a/docs/doxygen/html/classBoxSDF.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - -EBGeometry: BoxSDF< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
BoxSDF< T > Class Template Reference
-
-
- -

Signed distance field for an axis-aligned box. - More...

- -

#include <EBGeometry_AnalyticDistanceFunctions.hpp>

-
-Inheritance diagram for BoxSDF< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for BoxSDF< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

BoxSDF ()=delete
 Disallowed default constructor.
 
 BoxSDF (const Vec3T< T > &a_loCorner, const Vec3T< T > &a_hiCorner, const bool a_flipInside)
 Full constructor. Sets the low and high corner. More...
 
-virtual ~BoxSDF ()
 Destructor (does nothing).
 
const Vec3T< T > & getLowCorner () const noexcept
 Get lower-left corner. More...
 
Vec3T< T > & getLowCorner () noexcept
 Get lower-left corner. More...
 
const Vec3T< T > & getHighCorner () const noexcept
 Get upper-right corner. More...
 
Vec3T< T > & getHighCorner () noexcept
 Get upper-right corner. More...
 
virtual T signedDistance (const Vec3T< T > &a_point) const noexcept override
 Signed distance function for sphere. More...
 
- Public Member Functions inherited from SignedDistanceFunction< T >
SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - - - - - - - - - - - -

-Protected Attributes

-Vec3T< T > m_loCorner
 Low box corner.
 
-Vec3T< T > m_hiCorner
 High box corner.
 
-bool m_flipInside
 Hook for making outside -> inside.
 
- Protected Attributes inherited from SignedDistanceFunction< T >
-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from SignedDistanceFunction< T >
-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
-

Detailed Description

-

template<class T>
-class BoxSDF< T >

- -

Signed distance field for an axis-aligned box.

-

Constructor & Destructor Documentation

- -

◆ BoxSDF()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
BoxSDF< T >::BoxSDF (const Vec3T< T > & a_loCorner,
const Vec3T< T > & a_hiCorner,
const bool a_flipInside 
)
-
-inline
-
- -

Full constructor. Sets the low and high corner.

-
Parameters
- - - - -
[in]a_loCornerLower left corner
[in]a_hiCornerUpper right corner
[in]a_flipInsideFlip inside/outside.
-
-
- -
-
-

Member Function Documentation

- -

◆ getHighCorner() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const Vec3T<T>& BoxSDF< T >::getHighCorner () const
-
-inlinenoexcept
-
- -

Get upper-right corner.

-
Returns
m_hiCorner
- -
-
- -

◆ getHighCorner() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
Vec3T<T>& BoxSDF< T >::getHighCorner ()
-
-inlinenoexcept
-
- -

Get upper-right corner.

-
Returns
m_hiCorner
- -
-
- -

◆ getLowCorner() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const Vec3T<T>& BoxSDF< T >::getLowCorner () const
-
-inlinenoexcept
-
- -

Get lower-left corner.

-
Returns
m_loCorner
- -
-
- -

◆ getLowCorner() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
Vec3T<T>& BoxSDF< T >::getLowCorner ()
-
-inlinenoexcept
-
- -

Get lower-left corner.

-
Returns
m_loCorner
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
virtual T BoxSDF< T >::signedDistance (const Vec3T< T > & a_point) const
-
-inlineoverridevirtualnoexcept
-
- -

Signed distance function for sphere.

-
Parameters
- - -
[in]a_pointPosition.
-
-
- -

Implements SignedDistanceFunction< T >.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/doxygen/html/classBoxSDF__coll__graph.map b/docs/doxygen/html/classBoxSDF__coll__graph.map deleted file mode 100644 index 620b771b..00000000 --- a/docs/doxygen/html/classBoxSDF__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classBoxSDF__coll__graph.md5 b/docs/doxygen/html/classBoxSDF__coll__graph.md5 deleted file mode 100644 index 4f435458..00000000 --- a/docs/doxygen/html/classBoxSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1756fad0d994d3fc53d91aed7a8c20a2 \ No newline at end of file diff --git a/docs/doxygen/html/classBoxSDF__coll__graph.png b/docs/doxygen/html/classBoxSDF__coll__graph.png deleted file mode 100644 index 7ec1980c..00000000 Binary files a/docs/doxygen/html/classBoxSDF__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classBoxSDF__inherit__graph.map b/docs/doxygen/html/classBoxSDF__inherit__graph.map deleted file mode 100644 index 620b771b..00000000 --- a/docs/doxygen/html/classBoxSDF__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classBoxSDF__inherit__graph.md5 b/docs/doxygen/html/classBoxSDF__inherit__graph.md5 deleted file mode 100644 index f92673ac..00000000 --- a/docs/doxygen/html/classBoxSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f48cf00ed9c9821551646228a452e404 \ No newline at end of file diff --git a/docs/doxygen/html/classBoxSDF__inherit__graph.png b/docs/doxygen/html/classBoxSDF__inherit__graph.png deleted file mode 100644 index 7ec1980c..00000000 Binary files a/docs/doxygen/html/classBoxSDF__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classCylinderSDF-members.html b/docs/doxygen/html/classCylinderSDF-members.html deleted file mode 100644 index 4a018ddf..00000000 --- a/docs/doxygen/html/classCylinderSDF-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
CylinderSDF< T > Member List
-
-
- -

This is the complete list of members for CylinderSDF< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
CylinderSDF()=deleteCylinderSDF< T >
CylinderSDF(const Vec3T< T > &a_center1, const Vec3T< T > &a_center2, const T &a_radius, const bool a_flipInside)CylinderSDF< T >inline
getCenter1() const noexceptCylinderSDF< T >inline
getCenter2() const noexceptCylinderSDF< T >inline
getRadius() const noexceptCylinderSDF< T >inline
m_axisCylinderSDF< T >protected
m_centerCylinderSDF< T >protected
m_center1CylinderSDF< T >protected
m_center2CylinderSDF< T >protected
m_flipInsideCylinderSDF< T >protected
m_lengthCylinderSDF< T >protected
m_radiusCylinderSDF< T >protected
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
signedDistance(const Vec3T< T > &a_point) const noexcept overrideCylinderSDF< T >inlinevirtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
~CylinderSDF()CylinderSDF< T >inlinevirtual
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
- - - - diff --git a/docs/doxygen/html/classCylinderSDF.html b/docs/doxygen/html/classCylinderSDF.html deleted file mode 100644 index ca2c6da5..00000000 --- a/docs/doxygen/html/classCylinderSDF.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - -EBGeometry: CylinderSDF< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
CylinderSDF< T > Class Template Reference
-
-
- -

Signed distance field for a cylinder. - More...

- -

#include <EBGeometry_AnalyticDistanceFunctions.hpp>

-
-Inheritance diagram for CylinderSDF< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for CylinderSDF< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

CylinderSDF ()=delete
 Disallowed weak construction. Use one of the full constructors.
 
 CylinderSDF (const Vec3T< T > &a_center1, const Vec3T< T > &a_center2, const T &a_radius, const bool a_flipInside)
 Full constructor. More...
 
-virtual ~CylinderSDF ()
 Destructor (does nothing).
 
const Vec3T< T > & getCenter1 () const noexcept
 Get one endpoint. More...
 
const Vec3T< T > & getCenter2 () const noexcept
 Get the other endpoint. More...
 
const T & getRadius () const noexcept
 Get radius. More...
 
virtual T signedDistance (const Vec3T< T > &a_point) const noexcept override
 Signed distance function for a torus. More...
 
- Public Member Functions inherited from SignedDistanceFunction< T >
SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Protected Attributes

-Vec3T< T > m_center1
 One endpoint.
 
-Vec3T< T > m_center2
 The other endpoint.
 
-Vec3T< T > m_center
 m_Halfway between center1 and m_center2
 
-Vec3T< T > m_axis
 "Axis", pointing from m_center1 to m_center2.
 
-T m_length
 Cylinder length.
 
-T m_radius
 radius.
 
-bool m_flipInside
 Hook for making outside -> inside.
 
- Protected Attributes inherited from SignedDistanceFunction< T >
-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from SignedDistanceFunction< T >
-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
-

Detailed Description

-

template<class T>
-class CylinderSDF< T >

- -

Signed distance field for a cylinder.

-

Constructor & Destructor Documentation

- -

◆ CylinderSDF()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CylinderSDF< T >::CylinderSDF (const Vec3T< T > & a_center1,
const Vec3T< T > & a_center2,
const T & a_radius,
const bool a_flipInside 
)
-
-inline
-
- -

Full constructor.

-
Parameters
- - - - - -
[in]a_center1One endpoint.
[in]a_center2Other endpoint.
[in]a_radiusCylinder radius.
[in]a_flipInsideFlip inside/outside.
-
-
- -
-
-

Member Function Documentation

- -

◆ getCenter1()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const Vec3T<T>& CylinderSDF< T >::getCenter1 () const
-
-inlinenoexcept
-
- -

Get one endpoint.

-
Returns
m_center1
- -
-
- -

◆ getCenter2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const Vec3T<T>& CylinderSDF< T >::getCenter2 () const
-
-inlinenoexcept
-
- -

Get the other endpoint.

-
Returns
m_center2
- -
-
- -

◆ getRadius()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const T& CylinderSDF< T >::getRadius () const
-
-inlinenoexcept
-
- -

Get radius.

-
Returns
m_radius.
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
virtual T CylinderSDF< T >::signedDistance (const Vec3T< T > & a_point) const
-
-inlineoverridevirtualnoexcept
-
- -

Signed distance function for a torus.

-
Parameters
- - -
[in]a_pointPosition.
-
-
- -

Implements SignedDistanceFunction< T >.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/doxygen/html/classCylinderSDF__coll__graph.map b/docs/doxygen/html/classCylinderSDF__coll__graph.map deleted file mode 100644 index 8c0ad8bf..00000000 --- a/docs/doxygen/html/classCylinderSDF__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classCylinderSDF__coll__graph.md5 b/docs/doxygen/html/classCylinderSDF__coll__graph.md5 deleted file mode 100644 index d42a4141..00000000 --- a/docs/doxygen/html/classCylinderSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -246a2f8e6fea9d8d6ff49d029952590d \ No newline at end of file diff --git a/docs/doxygen/html/classCylinderSDF__coll__graph.png b/docs/doxygen/html/classCylinderSDF__coll__graph.png deleted file mode 100644 index 53c2dbce..00000000 Binary files a/docs/doxygen/html/classCylinderSDF__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classCylinderSDF__inherit__graph.map b/docs/doxygen/html/classCylinderSDF__inherit__graph.map deleted file mode 100644 index 8c0ad8bf..00000000 --- a/docs/doxygen/html/classCylinderSDF__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classCylinderSDF__inherit__graph.md5 b/docs/doxygen/html/classCylinderSDF__inherit__graph.md5 deleted file mode 100644 index eb6f4c88..00000000 --- a/docs/doxygen/html/classCylinderSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -635c39d263ea1b54566bb8ec8645a4c8 \ No newline at end of file diff --git a/docs/doxygen/html/classCylinderSDF__inherit__graph.png b/docs/doxygen/html/classCylinderSDF__inherit__graph.png deleted file mode 100644 index 53c2dbce..00000000 Binary files a/docs/doxygen/html/classCylinderSDF__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classDcel_1_1EdgeIteratorT-members.html b/docs/doxygen/html/classDcel_1_1EdgeIteratorT-members.html deleted file mode 100644 index 16f35328..00000000 --- a/docs/doxygen/html/classDcel_1_1EdgeIteratorT-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::EdgeIteratorT< T > Member List
-
- - - - - diff --git a/docs/doxygen/html/classDcel_1_1EdgeIteratorT.html b/docs/doxygen/html/classDcel_1_1EdgeIteratorT.html deleted file mode 100644 index 43cbe84f..00000000 --- a/docs/doxygen/html/classDcel_1_1EdgeIteratorT.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - -EBGeometry: Dcel::EdgeIteratorT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::EdgeIteratorT< T > Class Template Reference
-
-
- -

Class which can iterate through edges and vertices around a DCEL polygon face. - More...

- -

#include <EBGeometry_DcelIterator.hpp>

- - - - - - - - - - - - - - - - - - - - -

-Public Types

-using Vertex = VertexT< T >
 Alias to cut down on typing.
 
-using Edge = EdgeT< T >
 Alias to cut down on typing.
 
-using Face = FaceT< T >
 Alias to cut down on typing.
 
-using VertexPtr = std::shared_ptr< Vertex >
 Alias to cut down on typing.
 
-using EdgePtr = std::shared_ptr< Edge >
 Alias to cut down on typing.
 
-using FacePtr = std::shared_ptr< Face >
 Alias to cut down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

EdgeIteratorT ()=delete
 Default construction is not allowed. Use one of the full constructors.
 
 EdgeIteratorT (Face &a_face)
 Constructor, taking a face as argument. The iterator begins at the half-edge pointer contained in the face. More...
 
 EdgeIteratorT (const Face &a_face)
 Constructor, taking a face as argument. The iterator begins at the half-edge pointer contained in the face. More...
 
 EdgeIteratorT (Vertex &a_vertex)
 Constructor, taking a vertex as argument. The iterator begins at the outgoing half-edge from the vertex. More...
 
 EdgeIteratorT (const Vertex &a_vertex)
 Constructor, taking a vertex as argument. The iterator begins at the outgoing half-edge from the vertex. More...
 
-EdgePtroperator() () noexcept
 Operator returning a pointer to the current half-edge.
 
-const EdgePtroperator() () const noexcept
 Operator returning a pointer to the current half-edge.
 
-void reset () noexcept
 Reset function for the iterator. This resets the iterator so that it begins from the starting half-edge.
 
-void operator++ () noexcept
 Incrementation operator, bringing the iterator to the next half-edge.
 
bool ok () const noexcept
 Function which checks if the iteration can be continued. More...
 
- - - - -

-Protected Types

enum  IterationMode { Vertices, -Faces - }
 Iteration mode, used to distinguish between the two constructors (face- or vertex-based iteration)
 
- - - - - - - - - - - - - -

-Protected Attributes

-bool m_fullLoop
 If true, a full loop has been made around the polygon face.
 
-IterationMode m_iterMode
 Iteration mode. Set in constructor.
 
-std::shared_ptr< Edgem_startEdge
 Starting half-edge.
 
-std::shared_ptr< Edgem_curEdge
 Current half-edge.
 
-

Detailed Description

-

template<class T>
-class Dcel::EdgeIteratorT< T >

- -

Class which can iterate through edges and vertices around a DCEL polygon face.

-

This class can be used so that it either visits all the half-edges in a face, or all the outgoing half-edges from a vertex.

-

Constructor & Destructor Documentation

- -

◆ EdgeIteratorT() [1/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::EdgeIteratorT< T >::EdgeIteratorT (Facea_face)
-
-inline
-
- -

Constructor, taking a face as argument. The iterator begins at the half-edge pointer contained in the face.

-
Parameters
- - -
[in]a_faceDCEL polygon face
-
-
-
Note
This constructor will will iterate through the half-edges in the polygon face.
- -
-
- -

◆ EdgeIteratorT() [2/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::EdgeIteratorT< T >::EdgeIteratorT (const Facea_face)
-
-inline
-
- -

Constructor, taking a face as argument. The iterator begins at the half-edge pointer contained in the face.

-
Parameters
- - -
[in]a_faceDCEL polygon face
-
-
-
Note
This constructor will will iterate through the half-edges in the polygon face.
- -
-
- -

◆ EdgeIteratorT() [3/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::EdgeIteratorT< T >::EdgeIteratorT (Vertexa_vertex)
-
-inline
-
- -

Constructor, taking a vertex as argument. The iterator begins at the outgoing half-edge from the vertex.

-
Parameters
- - -
[in]a_vertexDCEL vertex
-
-
-
Note
This constructor will will iterate through the outgoing half-edges from a vertex.
- -
-
- -

◆ EdgeIteratorT() [4/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::EdgeIteratorT< T >::EdgeIteratorT (const Vertexa_vertex)
-
-inline
-
- -

Constructor, taking a vertex as argument. The iterator begins at the outgoing half-edge from the vertex.

-
Parameters
- - -
[in]a_vertexDCEL vertex
-
-
-
Note
This constructor will will iterate through the outgoing half-edges from a vertex.
- -
-
-

Member Function Documentation

- -

◆ ok()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
bool Dcel::EdgeIteratorT< T >::ok () const
-
-inlinenoexcept
-
- -

Function which checks if the iteration can be continued.

-
Returns
Returns true unless the current half-edge is a nullptr (i.e., a broken polygon face) OR a full loop has been made around the polygon face (i.e. all half-edges have been visited)
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classDcel_1_1EdgeT-members.html b/docs/doxygen/html/classDcel_1_1EdgeT-members.html deleted file mode 100644 index b011ed53..00000000 --- a/docs/doxygen/html/classDcel_1_1EdgeT-members.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::EdgeT< T > Member List
-
-
- -

This is the complete list of members for Dcel::EdgeT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
computeEdgeLength() noexceptDcel::EdgeT< T >inlineprotected
computeNormal() noexceptDcel::EdgeT< T >inlineprotected
define(const VertexPtr &a_vertex, const EdgePtr &a_pairEdge, const EdgePtr &a_nextEdge, const EdgePtr &a_previousEdge, const Vec3 a_normal) noexceptDcel::EdgeT< T >inline
Edge typedefDcel::EdgeT< T >
EdgeIterator typedefDcel::EdgeT< T >
EdgePtr typedefDcel::EdgeT< T >
EdgeT()Dcel::EdgeT< T >inline
EdgeT(const Edge &a_otherEdge)Dcel::EdgeT< T >inline
EdgeT(const VertexPtr &a_vertex)Dcel::EdgeT< T >inline
Face typedefDcel::EdgeT< T >
FacePtr typedefDcel::EdgeT< T >
getFace() noexceptDcel::EdgeT< T >inline
getFace() const noexceptDcel::EdgeT< T >inline
getNextEdge() noexceptDcel::EdgeT< T >inline
getNextEdge() const noexceptDcel::EdgeT< T >inline
getNormal() noexceptDcel::EdgeT< T >inline
getNormal() const noexceptDcel::EdgeT< T >inline
getOtherVertex() noexceptDcel::EdgeT< T >inline
getOtherVertex() const noexceptDcel::EdgeT< T >inline
getPairEdge() noexceptDcel::EdgeT< T >inline
getPairEdge() const noexceptDcel::EdgeT< T >inline
getPreviousEdge() noexceptDcel::EdgeT< T >inline
getPreviousEdge() const noexceptDcel::EdgeT< T >inline
getVertex() noexceptDcel::EdgeT< T >inline
getVertex() const noexceptDcel::EdgeT< T >inline
m_faceDcel::EdgeT< T >protected
m_invLen2Dcel::EdgeT< T >protected
m_nextEdgeDcel::EdgeT< T >protected
m_normalDcel::EdgeT< T >protected
m_pairEdgeDcel::EdgeT< T >protected
m_previousEdgeDcel::EdgeT< T >protected
m_vertexDcel::EdgeT< T >protected
m_x2x1Dcel::EdgeT< T >protected
normalizeNormalVector() noexceptDcel::EdgeT< T >inlineprotected
projectPointToEdge(const Vec3 &a_x0) const noexceptDcel::EdgeT< T >inlineprotected
reconcile() noexceptDcel::EdgeT< T >inline
setFace(const FacePtr &a_face) noexceptDcel::EdgeT< T >inline
setNextEdge(const EdgePtr &a_nextEdge) noexceptDcel::EdgeT< T >inline
setPairEdge(const EdgePtr &a_pairEdge) noexceptDcel::EdgeT< T >inline
setPreviousEdge(const EdgePtr &a_previousEdge) noexceptDcel::EdgeT< T >inline
setVertex(const VertexPtr &a_vertex) noexceptDcel::EdgeT< T >inline
signedDistance(const Vec3 &a_x0) const noexceptDcel::EdgeT< T >inline
unsignedDistance2(const Vec3 &a_x0) const noexceptDcel::EdgeT< T >inline
Vec3 typedefDcel::EdgeT< T >
Vertex typedefDcel::EdgeT< T >
VertexPtr typedefDcel::EdgeT< T >
~EdgeT()Dcel::EdgeT< T >inline
- - - - diff --git a/docs/doxygen/html/classDcel_1_1EdgeT.html b/docs/doxygen/html/classDcel_1_1EdgeT.html deleted file mode 100644 index aeb287ed..00000000 --- a/docs/doxygen/html/classDcel_1_1EdgeT.html +++ /dev/null @@ -1,1015 +0,0 @@ - - - - - - - -EBGeometry: Dcel::EdgeT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::EdgeT< T > Class Template Reference
-
-
- -

Class which represents a half-edge in a double-edge connected list (DCEL). - More...

- -

#include <EBGeometry_DcelEdge.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Alias to cut down on typing.
 
-using Vertex = VertexT< T >
 Alias to cut down on typing.
 
-using Edge = EdgeT< T >
 Alias to cut down on typing.
 
-using Face = FaceT< T >
 Alias to cut down on typing.
 
-using VertexPtr = std::shared_ptr< Vertex >
 Alias to cut down on typing.
 
-using EdgePtr = std::shared_ptr< Edge >
 Alias to cut down on typing.
 
-using FacePtr = std::shared_ptr< Face >
 Alias to cut down on typing.
 
-using EdgeIterator = EdgeIteratorT< T >
 Alias to cut down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

EdgeT ()
 Default constructor. Sets all pointers to zero and vectors to zero vectors.
 
 EdgeT (const Edge &a_otherEdge)
 Copy constructor. Copies all information from the other half-edge. More...
 
 EdgeT (const VertexPtr &a_vertex)
 Partial constructor. Calls the default constructor but sets the starting vertex. More...
 
~EdgeT ()
 Destructor (does nothing)
 
void define (const VertexPtr &a_vertex, const EdgePtr &a_pairEdge, const EdgePtr &a_nextEdge, const EdgePtr &a_previousEdge, const Vec3 a_normal) noexcept
 Define function. Sets the starting vertex, edges, and normal vectors. More...
 
void setVertex (const VertexPtr &a_vertex) noexcept
 Set the starting vertex. More...
 
void setPairEdge (const EdgePtr &a_pairEdge) noexcept
 Set the pair edge. More...
 
void setNextEdge (const EdgePtr &a_nextEdge) noexcept
 Set the next edge. More...
 
void setPreviousEdge (const EdgePtr &a_previousEdge) noexcept
 Set the previous edge. More...
 
-void setFace (const FacePtr &a_face) noexcept
 Set the pointer to this half-edge's face.
 
-void reconcile () noexcept
 Compute edge normal and edge length (for performance reasons)
 
VertexPtrgetVertex () noexcept
 Get modifiable starting vertex. More...
 
const VertexPtrgetVertex () const noexcept
 Get immutable starting vertex. More...
 
VertexPtrgetOtherVertex () noexcept
 Get modifiable end vertex. More...
 
const VertexPtrgetOtherVertex () const noexcept
 Get immutable end vertex. More...
 
EdgePtrgetPairEdge () noexcept
 Get modifiable pair edge. More...
 
const EdgePtrgetPairEdge () const noexcept
 Get immutable pair edge. More...
 
EdgePtrgetPreviousEdge () noexcept
 Get modifiable previous edge. More...
 
const EdgePtrgetPreviousEdge () const noexcept
 Get immutable previous edge. More...
 
EdgePtrgetNextEdge () noexcept
 Get modifiable next edge. More...
 
const EdgePtrgetNextEdge () const noexcept
 Get immutable next edge. More...
 
-Vec3T< T > & getNormal () noexcept
 Get modifiable half-edge normal vector.
 
-const Vec3T< T > & getNormal () const noexcept
 Get immutable half-edge normal vector.
 
-FacePtrgetFace () noexcept
 Get modifiable half-edge face.
 
-const FacePtrgetFace () const noexcept
 Get immutable half-edge face.
 
signedDistance (const Vec3 &a_x0) const noexcept
 Get the signed distance to this half edge. More...
 
unsignedDistance2 (const Vec3 &a_x0) const noexcept
 Get the signed distance to this half edge. More...
 
- - - - - - - - - - - - - -

-Protected Member Functions

projectPointToEdge (const Vec3 &a_x0) const noexcept
 Returns the "projection" of a point to an edge. More...
 
-void normalizeNormalVector () noexcept
 Normalize the normal vector, ensuring it has length 1.
 
void computeEdgeLength () noexcept
 Compute the edge length. More...
 
-void computeNormal () noexcept
 Compute normal vector as average of face normals.
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Protected Attributes

Vec3 m_normal
 Half-edge normal vector. More...
 
-Vec3 m_x2x1
 Vector from the starting vertex to the end vertex. Exists for performance reasons.
 
-T m_invLen2
 Squared inverse edge length. Exists for performance reasons.
 
-VertexPtr m_vertex
 Starting vertex.
 
-EdgePtr m_pairEdge
 Pair edge.
 
-EdgePtr m_previousEdge
 Previous edge.
 
-EdgePtr m_nextEdge
 Next edge.
 
-FacePtr m_face
 Enclosing polygon face.
 
-

Detailed Description

-

template<class T>
-class Dcel::EdgeT< T >

- -

Class which represents a half-edge in a double-edge connected list (DCEL).

-

This class is used in DCEL functionality which stores polygonal surfaces in a mesh. The information contain in an EdgeT object contains the necessary object for logically circulating the inside of a polygon face. This means that a polygon face has a double-connected list of half-edges which circulate the interior of the face. The EdgeT object is such a half-edge; it represents the outgoing half-edge from a vertex, located such that it can be logically represented as a half edge on the "inside" of a polygon face. It contains pointers to the polygon face, next half edge, and the previous half edge. It also contains a pointer to the "pair" half edge, i.e. the corresponding half-edge on the other face that shares this edge. Since this class is used with DCEL functionality and signed distance fields, this class also has a signed distance function and thus a "normal vector". For numericaly efficiency, some extra storage is also allocated (such as the vector between the starting vertex and the end vertex).

Note
The normal vector is outgoing, i.e. a point x is "outside" if the dot product between n and (x - x0) is positive.
-

Constructor & Destructor Documentation

- -

◆ EdgeT() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::EdgeT< T >::EdgeT (const Edgea_otherEdge)
-
-inline
-
- -

Copy constructor. Copies all information from the other half-edge.

-
Parameters
- - -
[in]a_otherEdgeOther edge
-
-
- -
-
- -

◆ EdgeT() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::EdgeT< T >::EdgeT (const VertexPtra_vertex)
-
-inline
-
- -

Partial constructor. Calls the default constructor but sets the starting vertex.

-
Parameters
- - -
[in]a_vertexStarting vertex.
-
-
- -
-
-

Member Function Documentation

- -

◆ computeEdgeLength()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void Dcel::EdgeT< T >::computeEdgeLength ()
-
-inlineprotectednoexcept
-
- -

Compute the edge length.

-

This computes the vector m_x2x1 (vector from starting vertex to end vertex) and the inverse length squared.

- -
-
- -

◆ define()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Dcel::EdgeT< T >::define (const VertexPtra_vertex,
const EdgePtra_pairEdge,
const EdgePtra_nextEdge,
const EdgePtra_previousEdge,
const Vec3 a_normal 
)
-
-inlinenoexcept
-
- -

Define function. Sets the starting vertex, edges, and normal vectors.

-
Parameters
- - - - - - -
[in]a_vertexStarting vertex
[in]a_pairEdgePair half-edge
[in]a_nextEdgeNext half-edge
[in]a_previousEdgePrevious half-edge
[in]a_normalEdge normal vector
-
-
- -
-
- -

◆ getNextEdge() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::shared_ptr< EdgeT< T > > & Dcel::EdgeT< T >::getNextEdge ()
-
-inlinenoexcept
-
- -

Get modifiable next edge.

-
Returns
Returns the next edge
- -
-
- -

◆ getNextEdge() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const std::shared_ptr< EdgeT< T > > & Dcel::EdgeT< T >::getNextEdge () const
-
-inlinenoexcept
-
- -

Get immutable next edge.

-
Returns
Returns the next edge
- -
-
- -

◆ getOtherVertex() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::shared_ptr< VertexT< T > > & Dcel::EdgeT< T >::getOtherVertex ()
-
-inlinenoexcept
-
- -

Get modifiable end vertex.

-
Returns
Returns the next half-edge's starting vertex
- -
-
- -

◆ getOtherVertex() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const std::shared_ptr< VertexT< T > > & Dcel::EdgeT< T >::getOtherVertex () const
-
-inlinenoexcept
-
- -

Get immutable end vertex.

-
Returns
Returns the next half-edge's starting vertex
- -
-
- -

◆ getPairEdge() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::shared_ptr< EdgeT< T > > & Dcel::EdgeT< T >::getPairEdge ()
-
-inlinenoexcept
-
- -

Get modifiable pair edge.

-
Returns
Returns the pair edge
- -
-
- -

◆ getPairEdge() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const std::shared_ptr< EdgeT< T > > & Dcel::EdgeT< T >::getPairEdge () const
-
-inlinenoexcept
-
- -

Get immutable pair edge.

-
Returns
Returns the pair edge
- -
-
- -

◆ getPreviousEdge() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::shared_ptr< EdgeT< T > > & Dcel::EdgeT< T >::getPreviousEdge ()
-
-inlinenoexcept
-
- -

Get modifiable previous edge.

-
Returns
Returns the previous edge
- -
-
- -

◆ getPreviousEdge() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const std::shared_ptr< EdgeT< T > > & Dcel::EdgeT< T >::getPreviousEdge () const
-
-inlinenoexcept
-
- -

Get immutable previous edge.

-
Returns
Returns the previous edge
- -
-
- -

◆ getVertex() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::shared_ptr< VertexT< T > > & Dcel::EdgeT< T >::getVertex ()
-
-inlinenoexcept
-
- -

Get modifiable starting vertex.

-
Returns
Returns m_vertex
- -
-
- -

◆ getVertex() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const std::shared_ptr< VertexT< T > > & Dcel::EdgeT< T >::getVertex () const
-
-inlinenoexcept
-
- -

Get immutable starting vertex.

-
Returns
Returns m_vertex
- -
-
- -

◆ projectPointToEdge()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::EdgeT< T >::projectPointToEdge (const Vec3a_x0) const
-
-inlineprotectednoexcept
-
- -

Returns the "projection" of a point to an edge.

-

This function parametrizes the edge as x(t) = x0 + (x1-x0)*t and returns where on the this edge the point a_x0 projects. If projects onto the edge if t = [0,1] and to one of the start/end vertices otherwise.

- -
-
- -

◆ setNextEdge()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::EdgeT< T >::setNextEdge (const EdgePtra_nextEdge)
-
-inlinenoexcept
-
- -

Set the next edge.

-
Parameters
- - -
[in]a_nextEdgeNext edge
-
-
- -
-
- -

◆ setPairEdge()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::EdgeT< T >::setPairEdge (const EdgePtra_pairEdge)
-
-inlinenoexcept
-
- -

Set the pair edge.

-
Parameters
- - -
[in]a_pairEdgePair edge
-
-
- -
-
- -

◆ setPreviousEdge()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::EdgeT< T >::setPreviousEdge (const EdgePtra_previousEdge)
-
-inlinenoexcept
-
- -

Set the previous edge.

-
Parameters
- - -
[in]a_previousEdgePrevious edge
-
-
- -
-
- -

◆ setVertex()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::EdgeT< T >::setVertex (const VertexPtra_vertex)
-
-inlinenoexcept
-
- -

Set the starting vertex.

-
Parameters
- - -
[in]a_vertexStarting vertex
-
-
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::EdgeT< T >::signedDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the signed distance to this half edge.

-

This routine will check if the input point projects to the edge or one of the vertices. If it projectes to one of the vertices we compute the signed distance to the corresponding vertex. Otherwise we compute the projection to the edge and compute the sign from the normal vector.

- -
-
- -

◆ unsignedDistance2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::EdgeT< T >::unsignedDistance2 (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the signed distance to this half edge.

-

This routine will check if the input point projects to the edge or one of the vertices. If it projectes to one of the vertices we compute the squared distance to the corresponding vertex. Otherwise we compute the squared distance of the projection to the edge. This is faster than signedDistance()

- -
-
-

Member Data Documentation

- -

◆ m_normal

- -
-
-
-template<class T >
- - - - - -
- - - - -
Vec3 Dcel::EdgeT< T >::m_normal
-
-protected
-
- -

Half-edge normal vector.

-

Computed in computeNormal which sets the normal vector to be the average of the normal vector of the connected faces

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classDcel_1_1FaceT-members.html b/docs/doxygen/html/classDcel_1_1FaceT-members.html deleted file mode 100644 index c5a890ac..00000000 --- a/docs/doxygen/html/classDcel_1_1FaceT-members.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::FaceT< T > Member List
-
-
- -

This is the complete list of members for Dcel::FaceT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
computeAndStoreEdges() noexceptDcel::FaceT< T >inlineprotected
computeArea() noexceptDcel::FaceT< T >inlineprotected
computeCentroid() noexceptDcel::FaceT< T >inlineprotected
computeNormal() noexceptDcel::FaceT< T >inlineprotected
computePolygon2D() noexceptDcel::FaceT< T >inlineprotected
define(const Vec3 &a_normal, const EdgePtr &a_edge) noexceptDcel::FaceT< T >inline
Edge typedefDcel::FaceT< T >
EdgeIterator typedefDcel::FaceT< T >
EdgePtr typedefDcel::FaceT< T >
Face typedefDcel::FaceT< T >
FacePtr typedefDcel::FaceT< T >
FaceT()Dcel::FaceT< T >inline
FaceT(const EdgePtr &a_edge)Dcel::FaceT< T >inline
FaceT(const Face &a_otherFace)Dcel::FaceT< T >inline
gatherVertices() const noexceptDcel::FaceT< T >inline
getAllVertexCoordinates() const noexceptDcel::FaceT< T >inline
getArea() noexceptDcel::FaceT< T >inlineprotected
getArea() const noexceptDcel::FaceT< T >inlineprotected
getCentroid() noexceptDcel::FaceT< T >inline
getCentroid() const noexceptDcel::FaceT< T >inline
getCentroid(const int a_dir) noexceptDcel::FaceT< T >inline
getCentroid(const int a_dir) const noexceptDcel::FaceT< T >inline
getHalfEdge() noexceptDcel::FaceT< T >inline
getHalfEdge() const noexceptDcel::FaceT< T >inline
getHighestCoordinate() const noexceptDcel::FaceT< T >inline
getNormal() noexceptDcel::FaceT< T >inline
getNormal() const noexceptDcel::FaceT< T >inline
getSmallestCoordinate() const noexceptDcel::FaceT< T >inline
isPointInsideFace(const Vec3 &a_p) const noexceptDcel::FaceT< T >inlineprotected
m_areaDcel::FaceT< T >protected
m_centroidDcel::FaceT< T >protected
m_edgesDcel::FaceT< T >protected
m_halfEdgeDcel::FaceT< T >protected
m_normalDcel::FaceT< T >protected
m_poly2Dcel::FaceT< T >protected
m_poly2AlgorithmDcel::FaceT< T >protected
normalizeNormalVector() noexceptDcel::FaceT< T >inlineprotected
projectPointIntoFacePlane(const Vec3 &a_p) const noexceptDcel::FaceT< T >inlineprotected
reconcile() noexceptDcel::FaceT< T >inline
setHalfEdge(const EdgePtr &a_halfEdge) noexceptDcel::FaceT< T >inline
setInsideOutsideAlgorithm(typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm &a_algorithm) noexceptDcel::FaceT< T >inline
signedDistance(const Vec3 &a_x0) const noexceptDcel::FaceT< T >inline
unsignedDistance2(const Vec3 &a_x0) const noexceptDcel::FaceT< T >inline
Vec3 typedefDcel::FaceT< T >
Vertex typedefDcel::FaceT< T >
VertexPtr typedefDcel::FaceT< T >
~FaceT()Dcel::FaceT< T >inline
- - - - diff --git a/docs/doxygen/html/classDcel_1_1FaceT.html b/docs/doxygen/html/classDcel_1_1FaceT.html deleted file mode 100644 index 715f2bf1..00000000 --- a/docs/doxygen/html/classDcel_1_1FaceT.html +++ /dev/null @@ -1,785 +0,0 @@ - - - - - - - -EBGeometry: Dcel::FaceT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::FaceT< T > Class Template Reference
-
-
- -

Class which represents a polygon face in a double-edge connected list (DCEL). - More...

- -

#include <EBGeometry_DcelFace.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Alias to cut down on typing.
 
-using Vertex = VertexT< T >
 Alias to cut down on typing.
 
-using Edge = EdgeT< T >
 Alias to cut down on typing.
 
-using Face = FaceT< T >
 Alias to cut down on typing.
 
-using VertexPtr = std::shared_ptr< Vertex >
 Alias to cut down on typing.
 
-using EdgePtr = std::shared_ptr< Edge >
 Alias to cut down on typing.
 
-using FacePtr = std::shared_ptr< Face >
 Alias to cut down on typing.
 
-using EdgeIterator = EdgeIteratorT< T >
 Alias to cut down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

FaceT ()
 Default constructor. Sets the half-edge to zero and the inside/outside algorithm to crossing number algorithm.
 
 FaceT (const EdgePtr &a_edge)
 Partial constructor. Calls default constructor but associates a half-edge. More...
 
 FaceT (const Face &a_otherFace)
 Partial constructor. More...
 
~FaceT ()
 Destructor (does nothing)
 
void define (const Vec3 &a_normal, const EdgePtr &a_edge) noexcept
 Define function which sets the normal vector and half-edge. More...
 
void reconcile () noexcept
 Reconcile face. This will compute the normal vector, area, centroid, and the 2D embedding of the polygon. More...
 
void setHalfEdge (const EdgePtr &a_halfEdge) noexcept
 Set the half edge. More...
 
void setInsideOutsideAlgorithm (typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm &a_algorithm) noexcept
 Set the inside/outside algorithm when determining if a point projects to the inside or outside of the polygon. More...
 
-EdgePtrgetHalfEdge () noexcept
 Get modifiable half-edge.
 
-const EdgePtrgetHalfEdge () const noexcept
 Get immutable half-edge.
 
-Vec3T< T > & getCentroid () noexcept
 Get modifiable centroid.
 
-const Vec3T< T > & getCentroid () const noexcept
 Get immutable centroid.
 
T & getCentroid (const int a_dir) noexcept
 Get modifiable centroid position in specified coordinate direction. More...
 
const T & getCentroid (const int a_dir) const noexcept
 Get immutable centroid position in specified coordinate direction. More...
 
-Vec3T< T > & getNormal () noexcept
 Get modifiable normal vector.
 
-const Vec3T< T > & getNormal () const noexcept
 Get immutable normal vector.
 
signedDistance (const Vec3 &a_x0) const noexcept
 Compute the signed distance to a point. More...
 
unsignedDistance2 (const Vec3 &a_x0) const noexcept
 Compute the unsigned squared distance to a point. More...
 
std::vector< Vec3T< T > > getAllVertexCoordinates () const noexcept
 Return the coordinates of all the vertices on this polygon. More...
 
std::vector< VertexPtrgatherVertices () const noexcept
 Return all the vertices on this polygon. More...
 
-Vec3T< T > getSmallestCoordinate () const noexcept
 Get the lower-left-most coordinate of this polygon face.
 
-Vec3T< T > getHighestCoordinate () const noexcept
 Get the upper-right-most coordinate of this polygon face.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Protected Member Functions

-void computeArea () noexcept
 Compute the area of this polygon.
 
-void computeCentroid () noexcept
 Compute the centroid position of this polygon.
 
-void computeNormal () noexcept
 Compute the normal position of this polygon.
 
-void computePolygon2D () noexcept
 Compute the 2D embedding of this polygon.
 
-void normalizeNormalVector () noexcept
 Normalize the normal vector, ensuring it has a length of 1.
 
-T getArea () noexcept
 Get the area of this polygon face.
 
-T getArea () const noexcept
 Get the area of this polygon face.
 
-void computeAndStoreEdges () noexcept
 Compute and store all the half-edges around this polygon face.
 
Vec3T< T > projectPointIntoFacePlane (const Vec3 &a_p) const noexcept
 Compute the projection of a point onto the polygon face plane. More...
 
bool isPointInsideFace (const Vec3 &a_p) const noexcept
 Check if a point projects to inside or outside the polygon face. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Protected Attributes

-EdgePtr m_halfEdge
 This polygon's half-edge. A valid face will always have != nullptr.
 
-std::vector< EdgePtrm_edges
 Pointers to all the half-edges of this face. Exists for performance reasons (in signedDistance(...))
 
-T m_area
 Polygon face area.
 
-Vec3 m_normal
 Polygon face normal vector.
 
-Vec3 m_centroid
 Polygon face centroid position.
 
-std::shared_ptr< Polygon2D< T > > m_poly2
 2D embedding of this polygon. This is the 2D view of the current object projected along its normal vector cardinal.
 
-Polygon2D< T >::InsideOutsideAlgorithm m_poly2Algorithm
 Algorithm for inside/outside tests.
 
-

Detailed Description

-

template<class T>
-class Dcel::FaceT< T >

- -

Class which represents a polygon face in a double-edge connected list (DCEL).

-

This class is a polygon face in a DCEL mesh. It contains pointer storage to one of the half-edges that circulate the inside of the polygon face, as well as having a normal vector, a centroid, and an area. This class supports signed distance computations. These computations require algorithms that compute e.g. the winding number of the polygon, or the number of times a ray cast passes through it. Thus, one of its central features is that it can be embedded in 2D by projecting it along the cardinal direction of its normal vector. To be fully consistent with a DCEL structure the class stores a reference to one of its half edges, but for performance reasons it also stores references to the other half edges.

Note
To compute the distance from a point to the face one must determine if the point projects "inside" or "outside" the polygon. There are several algorithms for this, and by default this class uses a crossing number algorithm. Other algorithms can be set in setInsideOutsideAlgorithm (see CD_DcelAlgorithms.H)
-

Constructor & Destructor Documentation

- -

◆ FaceT() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::FaceT< T >::FaceT (const EdgePtra_edge)
-
-inline
-
- -

Partial constructor. Calls default constructor but associates a half-edge.

-
Parameters
- - -
[in]a_edgeHalf-edge
-
-
- -
-
- -

◆ FaceT() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::FaceT< T >::FaceT (const Facea_otherFace)
-
-inline
-
- -

Partial constructor.

-

Calls default constructor but sets the normal vector and half-edge equal to the other face's (rest is undefined)

- -
-
-

Member Function Documentation

- -

◆ define()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Dcel::FaceT< T >::define (const Vec3a_normal,
const EdgePtra_edge 
)
-
-inlinenoexcept
-
- -

Define function which sets the normal vector and half-edge.

-
Parameters
- - - -
[in]a_normalNormal vector
[in]a_edgeHalf edge
-
-
- -
-
- -

◆ gatherVertices()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::vector< std::shared_ptr< VertexT< T > > > Dcel::FaceT< T >::gatherVertices () const
-
-inlinenoexcept
-
- -

Return all the vertices on this polygon.

-

This builds a list of all the vertices and returns it.

- -
-
- -

◆ getAllVertexCoordinates()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
std::vector< Vec3T< T > > Dcel::FaceT< T >::getAllVertexCoordinates () const
-
-inlinenoexcept
-
- -

Return the coordinates of all the vertices on this polygon.

-

This builds a list of all the vertex coordinates and returns it.

- -
-
- -

◆ getCentroid() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T & Dcel::FaceT< T >::getCentroid (const int a_dir)
-
-inlinenoexcept
-
- -

Get modifiable centroid position in specified coordinate direction.

-
Parameters
- - -
[in]a_dirCoordinate direction
-
-
- -
-
- -

◆ getCentroid() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
const T & Dcel::FaceT< T >::getCentroid (const int a_dir) const
-
-inlinenoexcept
-
- -

Get immutable centroid position in specified coordinate direction.

-
Parameters
- - -
[in]a_dirCoordinate direction
-
-
- -
-
- -

◆ isPointInsideFace()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Dcel::FaceT< T >::isPointInsideFace (const Vec3a_p) const
-
-inlineprotectednoexcept
-
- -

Check if a point projects to inside or outside the polygon face.

-
Parameters
- - -
[in]a_pPoint in space
-
-
-
Returns
Returns true if a_p projects to inside the polygon and false otherwise.
- -
-
- -

◆ projectPointIntoFacePlane()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Dcel::FaceT< T >::projectPointIntoFacePlane (const Vec3a_p) const
-
-inlineprotectednoexcept
-
- -

Compute the projection of a point onto the polygon face plane.

-
Parameters
- - -
[in]a_pPoint in space
-
-
- -
-
- -

◆ reconcile()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void Dcel::FaceT< T >::reconcile ()
-
-inlinenoexcept
-
- -

Reconcile face. This will compute the normal vector, area, centroid, and the 2D embedding of the polygon.

-
Note
"Everything" must be set before doing this, i.e. the face must be complete with half edges and there can be no dangling edges.
- -
-
- -

◆ setHalfEdge()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::FaceT< T >::setHalfEdge (const EdgePtra_halfEdge)
-
-inlinenoexcept
-
- -

Set the half edge.

-
Parameters
- - -
[in]a_halfEdgeHalf edge
-
-
- -
-
- -

◆ setInsideOutsideAlgorithm()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::FaceT< T >::setInsideOutsideAlgorithm (typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm & a_algorithm)
-
-inlinenoexcept
-
- -

Set the inside/outside algorithm when determining if a point projects to the inside or outside of the polygon.

-
Parameters
- - -
[in]a_algorithmDesired algorithm
-
-
-
Note
See CD_DcelAlgorithms.H for options (and CD_DcelPolyImplem.H for how the algorithms operate).
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::FaceT< T >::signedDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Compute the signed distance to a point.

-
Parameters
- - -
[in]a_x0Point in space
-
-
-

This algorithm operates by checking if the input point projects to the inside of the polygon. If it does then the distance is just the projected distance onto the polygon plane and the sign is well-defined. Otherwise, we check the distance to the edges of the polygon.

- -
-
- -

◆ unsignedDistance2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::FaceT< T >::unsignedDistance2 (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Compute the unsigned squared distance to a point.

-
Parameters
- - -
[in]a_x0Point in space
-
-
-

This algorithm operates by checking if the input point projects to the inside of the polygon. If it does then the distance is just the projected distance onto the polygon plane. Otherwise, we check the distance to the edges of the polygon.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classDcel_1_1MeshT-members.html b/docs/doxygen/html/classDcel_1_1MeshT-members.html deleted file mode 100644 index ad684a73..00000000 --- a/docs/doxygen/html/classDcel_1_1MeshT-members.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::MeshT< T > Member List
-
-
- -

This is the complete list of members for Dcel::MeshT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
define(std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices) noexceptDcel::MeshT< T >inline
DirectSignedDistance(const Vec3 &a_point) const noexceptDcel::MeshT< T >inlineprotected
DirectSignedDistance2(const Vec3 &a_point) const noexceptDcel::MeshT< T >inlineprotected
Edge typedefDcel::MeshT< T >
EdgePtr typedefDcel::MeshT< T >
Face typedefDcel::MeshT< T >
FacePtr typedefDcel::MeshT< T >
getAllVertexCoordinates() const noexceptDcel::MeshT< T >inlineprotected
getEdges() noexceptDcel::MeshT< T >inline
getEdges() const noexceptDcel::MeshT< T >inline
getFaces() noexceptDcel::MeshT< T >inline
getFaces() const noexceptDcel::MeshT< T >inline
getVertices() noexceptDcel::MeshT< T >inline
getVertices() const noexceptDcel::MeshT< T >inline
incrementWarning(std::map< std::string, int > &a_warnings, const std::string &a_warn) const noexceptDcel::MeshT< T >inlineprotected
m_algorithmDcel::MeshT< T >protected
m_edgesDcel::MeshT< T >protected
m_facesDcel::MeshT< T >protected
m_verticesDcel::MeshT< T >protected
Mesh typedefDcel::MeshT< T >
MeshT()Dcel::MeshT< T >inline
MeshT(const Mesh &a_otherMesh)=deleteDcel::MeshT< T >
MeshT(std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices)Dcel::MeshT< T >inline
printWarnings(const std::map< std::string, int > &a_warnings) const noexceptDcel::MeshT< T >inlineprotected
reconcile(typename Dcel::MeshT< T >::VertexNormalWeight a_weight=VertexNormalWeight::Angle) noexceptDcel::MeshT< T >inline
reconcileEdges() noexceptDcel::MeshT< T >inlineprotected
reconcileFaces() noexceptDcel::MeshT< T >inlineprotected
reconcileVertices(typename Dcel::MeshT< T >::VertexNormalWeight a_weight) noexceptDcel::MeshT< T >inlineprotected
sanityCheck() const noexceptDcel::MeshT< T >inline
SearchAlgorithm enum nameDcel::MeshT< T >
setInsideOutsideAlgorithm(typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm a_algorithm) noexceptDcel::MeshT< T >inline
setSearchAlgorithm(const SearchAlgorithm a_algorithm) noexceptDcel::MeshT< T >inline
signedDistance(const Vec3 &a_x0) const noexceptDcel::MeshT< T >inline
signedDistance(const Vec3 &a_x0, SearchAlgorithm a_algorithm) const noexceptDcel::MeshT< T >inline
unsignedDistance2(const Vec3 &a_x0) const noexceptDcel::MeshT< T >inline
Vec3 typedefDcel::MeshT< T >
Vertex typedefDcel::MeshT< T >
VertexNormalWeight enum nameDcel::MeshT< T >
VertexPtr typedefDcel::MeshT< T >
~MeshT()Dcel::MeshT< T >inline
- - - - diff --git a/docs/doxygen/html/classDcel_1_1MeshT.html b/docs/doxygen/html/classDcel_1_1MeshT.html deleted file mode 100644 index d5d01764..00000000 --- a/docs/doxygen/html/classDcel_1_1MeshT.html +++ /dev/null @@ -1,911 +0,0 @@ - - - - - - - -EBGeometry: Dcel::MeshT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::MeshT< T > Class Template Reference
-
-
- -

Mesh class which stores a full DCEL mesh (with signed distance functions) - More...

- -

#include <EBGeometry_DcelMesh.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

enum  SearchAlgorithm { Direct, -Direct2 - }
 Possible search algorithms for Dcel::MeshT. More...
 
enum  VertexNormalWeight { None, -Angle - }
 How to weight vertex normal.
 
-using Vec3 = Vec3T< T >
 Alias to cut down on the typing.
 
-using Vertex = VertexT< T >
 Alias to cut down on the typing.
 
-using Edge = EdgeT< T >
 Alias to cut down on the typing.
 
-using Face = FaceT< T >
 Alias to cut down on the typing.
 
-using VertexPtr = std::shared_ptr< Vertex >
 Alias to cut down on the typing.
 
-using EdgePtr = std::shared_ptr< Edge >
 Alias to cut down on the typing.
 
-using FacePtr = std::shared_ptr< Face >
 Alias to cut down on the typing.
 
-using Mesh = MeshT< T >
 Alias to cut down on the typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

MeshT ()
 Default constructor. Leaves unobject in an unusable state.
 
 MeshT (const Mesh &a_otherMesh)=delete
 Disallowed copy construction. More...
 
 MeshT (std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices)
 Full constructor. This provides the faces, edges, and vertices to the mesh. More...
 
~MeshT ()
 Destructor (does nothing)
 
void define (std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices) noexcept
 Define function. Puts Mesh in usable state. More...
 
void sanityCheck () const noexcept
 Perform a sanity check. More...
 
void setSearchAlgorithm (const SearchAlgorithm a_algorithm) noexcept
 Search algorithm for direct signed distance computations. More...
 
void setInsideOutsideAlgorithm (typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm a_algorithm) noexcept
 Set the inside/outside algorithm to use when computing the signed distance to polygon faces. More...
 
void reconcile (typename Dcel::MeshT< T >::VertexNormalWeight a_weight=VertexNormalWeight::Angle) noexcept
 Reconcile function which computes the internal parameters in vertices, edges, and faces for use with signed distance functionality. More...
 
-std::vector< VertexPtr > & getVertices () noexcept
 Get modifiable vertices in this mesh.
 
-const std::vector< VertexPtr > & getVertices () const noexcept
 Get immutable vertices in this mesh.
 
-std::vector< EdgePtr > & getEdges () noexcept
 Get modifiable half-edges in this mesh.
 
-const std::vector< EdgePtr > & getEdges () const noexcept
 Get immutable half-edges in this mesh.
 
-std::vector< FacePtr > & getFaces () noexcept
 Get modifiable faces in this mesh.
 
-const std::vector< FacePtr > & getFaces () const noexcept
 Get immutable faces in this mesh.
 
signedDistance (const Vec3 &a_x0) const noexcept
 Compute the signed distance from a point to this mesh. More...
 
signedDistance (const Vec3 &a_x0, SearchAlgorithm a_algorithm) const noexcept
 Compute the signed distance from a point to this mesh. More...
 
unsignedDistance2 (const Vec3 &a_x0) const noexcept
 Compute the unsigned square distance from a point to this mesh. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Protected Member Functions

-std::vector< Vec3T< T > > getAllVertexCoordinates () const noexcept
 Return all vertex coordinates in the mesh.
 
void reconcileFaces () noexcept
 Function which computes internal things for the polygon faces. More...
 
void reconcileEdges () noexcept
 Function which computes internal things for the half-edges. More...
 
void reconcileVertices (typename Dcel::MeshT< T >::VertexNormalWeight a_weight) noexcept
 Function which computes internal things for the vertices. More...
 
DirectSignedDistance (const Vec3 &a_point) const noexcept
 Implementation of signed distance function which iterates through all faces. More...
 
DirectSignedDistance2 (const Vec3 &a_point) const noexcept
 Implementation of squared signed distance function which iterates through all faces. More...
 
void incrementWarning (std::map< std::string, int > &a_warnings, const std::string &a_warn) const noexcept
 Increment a warning. This is used in sanityCheck() for locating holes or bad inputs in the mesh. More...
 
-void printWarnings (const std::map< std::string, int > &a_warnings) const noexcept
 Print all warnings to std::cerr.
 
- - - - - - - - - - - - - -

-Protected Attributes

-SearchAlgorithm m_algorithm
 Search algorithm. Only used in signed distance functions.
 
-std::vector< VertexPtrm_vertices
 Mesh vertices.
 
-std::vector< EdgePtrm_edges
 Mesh half-edges.
 
-std::vector< FacePtrm_faces
 Mesh faces.
 
-

Detailed Description

-

template<class T>
-class Dcel::MeshT< T >

- -

Mesh class which stores a full DCEL mesh (with signed distance functions)

-

This encapsulates a full DCEL mesh, and also includes DIRECT signed distance functions. The mesh consists of a set of vertices, half-edges, and polygon faces who each have references to other vertices, half-edges, and polygon faces. The signed distance functions DIRECT, which means that they go through ALL of the polygon faces and compute the signed distance to them. This is extremely inefficient, which is why this class is almost always embedded into a bounding volume hierarchy.

Note
This class is not for the light of heart – it will almost always be instantiated through a file parser which reads vertices and edges from file and builds the mesh from that. Do not try to build a MeshT object yourself, use file parsers!
-

Member Enumeration Documentation

- -

◆ SearchAlgorithm

- -
-
-
-template<class T>
- - - - - -
- - - - -
enum Dcel::MeshT::SearchAlgorithm
-
-strong
-
- -

Possible search algorithms for Dcel::MeshT.

-

Direct means compute the signed distance for all primitives, Direct2 means compute the squared signed distance for all primitives.

- -
-
-

Constructor & Destructor Documentation

- -

◆ MeshT() [1/2]

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
Dcel::MeshT< T >::MeshT (const Mesha_otherMesh)
-
-delete
-
- -

Disallowed copy construction.

-
Parameters
- - -
[in]a_otherMeshOther mesh
-
-
- -
-
- -

◆ MeshT() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Dcel::MeshT< T >::MeshT (std::vector< FacePtr > & a_faces,
std::vector< EdgePtr > & a_edges,
std::vector< VertexPtr > & a_vertices 
)
-
-inline
-
- -

Full constructor. This provides the faces, edges, and vertices to the mesh.

-

Calls define(a_faces, a_edges, a_vertices)

Parameters
- - - - -
[in]a_facesPolygon faces
[in]a_edgesHalf-edges
[in]a_verticesVertices
-
-
-
Note
The constructor arguments should provide a complete DCEL mesh description. This is usually done through a file parser which reads a mesh file format and creates the DCEL mesh structure
- -
-
-

Member Function Documentation

- -

◆ define()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void Dcel::MeshT< T >::define (std::vector< FacePtr > & a_faces,
std::vector< EdgePtr > & a_edges,
std::vector< VertexPtr > & a_vertices 
)
-
-inlinenoexcept
-
- -

Define function. Puts Mesh in usable state.

-
Parameters
- - - - -
[in]a_facesPolygon faces
[in]a_edgesHalf-edges
[in]a_verticesVertices
-
-
-
Note
The function arguments should provide a complete DCEL mesh description. This is usually done through a file parser which reads a mesh file format and creates the DCEL mesh structure. Note that this only involves associating pointer structures through the mesh. Internal parameters like face area and normal is computed in MeshT<T>::reconcile.
- -
-
- -

◆ DirectSignedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::MeshT< T >::DirectSignedDistance (const Vec3a_point) const
-
-inlineprotectednoexcept
-
- -

Implementation of signed distance function which iterates through all faces.

-
Parameters
- - -
[in]a_point3D point
-
-
- -
-
- -

◆ DirectSignedDistance2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::MeshT< T >::DirectSignedDistance2 (const Vec3a_point) const
-
-inlineprotectednoexcept
-
- -

Implementation of squared signed distance function which iterates through all faces.

-

This first find the face with the smallest unsigned square distance, and the returns the signed distance to that face (more efficient than the other version).

Parameters
- - -
[in]a_point3D point
-
-
- -
-
- -

◆ incrementWarning()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Dcel::MeshT< T >::incrementWarning (std::map< std::string, int > & a_warnings,
const std::string & a_warn 
) const
-
-inlineprotectednoexcept
-
- -

Increment a warning. This is used in sanityCheck() for locating holes or bad inputs in the mesh.

-
Parameters
- - - -
[in]a_warningsMap of all registered warnings
[in]a_warnCurrent warning to increment by
-
-
- -
-
- -

◆ reconcile()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::MeshT< T >::reconcile (typename Dcel::MeshT< T >::VertexNormalWeight a_weight = VertexNormalWeight::Angle)
-
-inlinenoexcept
-
- -

Reconcile function which computes the internal parameters in vertices, edges, and faces for use with signed distance functionality.

-
Parameters
- - -
[in]a_weightVertex angle weighting function. Either VertexNormalWeight::None for unweighted vertex normals or VertexNormalWeight::Angle for the pseudonormal
-
-
-

This will reconcile faces, edges, and vertices, e.g. computing the area and normal vector for faces

- -
-
- -

◆ reconcileEdges()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void Dcel::MeshT< T >::reconcileEdges ()
-
-inlineprotectednoexcept
-
- -

Function which computes internal things for the half-edges.

-
Note
This calls Dcel::EdgeT<T>::reconcile()
- -
-
- -

◆ reconcileFaces()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void Dcel::MeshT< T >::reconcileFaces ()
-
-inlineprotectednoexcept
-
- -

Function which computes internal things for the polygon faces.

-
Note
This calls Dcel::FaceT<T>::reconcile()
- -
-
- -

◆ reconcileVertices()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::MeshT< T >::reconcileVertices (typename Dcel::MeshT< T >::VertexNormalWeight a_weight)
-
-inlineprotectednoexcept
-
- -

Function which computes internal things for the vertices.

-
Parameters
- - -
[in]a_weightVertex angle weighting
-
-
-
Note
This calls Dcel::VertexT<T>::computeVertexNormalAverage() or Dcel::VertexT<T>::computeVertexNormalAngleWeighted()
- -
-
- -

◆ sanityCheck()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void Dcel::MeshT< T >::sanityCheck () const
-
-inlinenoexcept
-
- -

Perform a sanity check.

-

This will provide error messages if vertices are badly linked, faces are nullptr, and so on. These messages are logged by calling incrementWarning() which identifies types of errors that can occur, and how many of those errors have occured.

- -
-
- -

◆ setInsideOutsideAlgorithm()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::MeshT< T >::setInsideOutsideAlgorithm (typename Dcel::Polygon2D< T >::InsideOutsideAlgorithm a_algorithm)
-
-inlinenoexcept
-
- -

Set the inside/outside algorithm to use when computing the signed distance to polygon faces.

-

Computing the signed distance to faces requires testing if a point projected to a polygo face plane falls inside or outside the polygon face. There are multiple algorithms to use here.

Parameters
- - -
[in]a_algorithmAlgorithm to use
-
-
- -
-
- -

◆ setSearchAlgorithm()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::MeshT< T >::setSearchAlgorithm (const SearchAlgorithm a_algorithm)
-
-inlinenoexcept
-
- -

Search algorithm for direct signed distance computations.

-
Parameters
- - -
[in]a_algorithmAlgorithm to use
-
-
- -
-
- -

◆ signedDistance() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::MeshT< T >::signedDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Compute the signed distance from a point to this mesh.

-
Parameters
- - -
[in]a_x03D point in space.
-
-
-

This function will iterate through ALL faces in the mesh and return the value with the smallest magnitude. This is horrendously slow, which is why this function is almost never called. Rather, MeshT<T> can be embedded in a bounding volume hierarchy for faster access.

Note
This will call the other version with the object's search algorithm.
- -
-
- -

◆ signedDistance() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
T Dcel::MeshT< T >::signedDistance (const Vec3a_x0,
SearchAlgorithm a_algorithm 
) const
-
-inlinenoexcept
-
- -

Compute the signed distance from a point to this mesh.

-
Parameters
- - - -
[in]a_x03D point in space.
[in]a_algorithmSearch algorithm
-
-
-

This function will iterate through ALL faces in the mesh and return the value with the smallest magnitude. This is horrendously slow, which is why this function is almost never called. Rather, MeshT<T> can be embedded in a bounding volume hierarchy for faster access.

- -
-
- -

◆ unsignedDistance2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::MeshT< T >::unsignedDistance2 (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Compute the unsigned square distance from a point to this mesh.

-
Parameters
- - -
[in]a_x03D point in space.
-
-
-

This function will iterate through ALL faces in the mesh and return the value with the smallest magnitude. This is horrendously slow, which is why this function is almost never called. Rather, MeshT<T> can be embedded in a bounding volume hierarchy for faster access.

Note
This will call the other version with the object's search algorithm.
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classDcel_1_1Parser_1_1PLY-members.html b/docs/doxygen/html/classDcel_1_1Parser_1_1PLY-members.html deleted file mode 100644 index 6d8d9ffc..00000000 --- a/docs/doxygen/html/classDcel_1_1Parser_1_1PLY-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::Parser::PLY< T > Member List
-
-
- -

This is the complete list of members for Dcel::Parser::PLY< T >, including all inherited members.

- - - - - - - - - - - - -
Edge typedefDcel::Parser::PLY< T >
EdgeIterator typedefDcel::Parser::PLY< T >
Face typedefDcel::Parser::PLY< T >
Mesh typedefDcel::Parser::PLY< T >
readASCII(const std::string a_filename)Dcel::Parser::PLY< T >inlinestatic
readASCII(Mesh &a_mesh, const std::string a_filename)Dcel::Parser::PLY< T >inlinestatic
readFacesASCII(std::vector< std::shared_ptr< Face > > &a_faces, std::vector< std::shared_ptr< Edge > > &a_edges, const std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numFaces, std::ifstream &a_inputStream)Dcel::Parser::PLY< T >inlineprotectedstatic
readHeaderASCII(int &a_numVertices, int &a_numFaces, std::ifstream &a_inputStream)Dcel::Parser::PLY< T >inlineprotectedstatic
readVerticesASCII(std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numVertices, std::ifstream &a_inputStream)Dcel::Parser::PLY< T >inlineprotectedstatic
reconcilePairEdges(std::vector< std::shared_ptr< Edge > > &a_edges)Dcel::Parser::PLY< T >inlineprotectedstatic
Vertex typedefDcel::Parser::PLY< T >
- - - - diff --git a/docs/doxygen/html/classDcel_1_1Parser_1_1PLY.html b/docs/doxygen/html/classDcel_1_1Parser_1_1PLY.html deleted file mode 100644 index ce5a7fb9..00000000 --- a/docs/doxygen/html/classDcel_1_1Parser_1_1PLY.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - -EBGeometry: Dcel::Parser::PLY< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::Parser::PLY< T > Class Template Reference
-
-
- -

Class for generation a Dcel::MeshT<T> from the Stanford PLY file format. - More...

- -

#include <EBGeometry_DcelParser.hpp>

- - - - - - - - - - - - - - - - - -

-Public Types

-using Vertex = VertexT< T >
 Alias for cutting down on typing.
 
-using Edge = EdgeT< T >
 Alias for cutting down on typing.
 
-using Face = FaceT< T >
 Alias for cutting down on typing.
 
-using Mesh = MeshT< T >
 Alias for cutting down on typing.
 
-using EdgeIterator = EdgeIteratorT< T >
 Alias for cutting down on typing.
 
- - - - - - - -

-Static Public Member Functions

static std::shared_ptr< MeshreadASCII (const std::string a_filename)
 Static function which reads an ASCII .ply file and returns a DCEL mesh. More...
 
static void readASCII (Mesh &a_mesh, const std::string a_filename)
 Static function which reads an ASCII .ply file and puts it in a mesh. More...
 
- - - - - - - - - - - - - -

-Static Protected Member Functions

static void readHeaderASCII (int &a_numVertices, int &a_numFaces, std::ifstream &a_inputStream)
 Read an ASCII header. More...
 
static void readVerticesASCII (std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numVertices, std::ifstream &a_inputStream)
 Read ASCII vertices. More...
 
static void readFacesASCII (std::vector< std::shared_ptr< Face > > &a_faces, std::vector< std::shared_ptr< Edge > > &a_edges, const std::vector< std::shared_ptr< Vertex > > &a_vertices, const int a_numFaces, std::ifstream &a_inputStream)
 Read ASCII faces and create mesh connectivity. More...
 
static void reconcilePairEdges (std::vector< std::shared_ptr< Edge > > &a_edges)
 Reconcile pair edges, i.e. find the pair edge for every constructed half-edge. More...
 
-

Detailed Description

-

template<class T>
-class Dcel::Parser::PLY< T >

- -

Class for generation a Dcel::MeshT<T> from the Stanford PLY file format.

-
Note
T is the precision used for storing the mesh.
-

Member Function Documentation

- -

◆ readASCII() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
std::shared_ptr< EBGeometry::Dcel::MeshT< T > > Dcel::Parser::PLY< T >::readASCII (const std::string a_filename)
-
-inlinestatic
-
- -

Static function which reads an ASCII .ply file and returns a DCEL mesh.

-
Parameters
- - -
[in]a_filenameFile name
-
-
- -
-
- -

◆ readASCII() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Dcel::Parser::PLY< T >::readASCII (Mesha_mesh,
const std::string a_filename 
)
-
-inlinestatic
-
- -

Static function which reads an ASCII .ply file and puts it in a mesh.

-
Parameters
- - - -
[out]a_meshDCEL mesh
[in]a_filenameFile name
-
-
- -
-
- -

◆ readFacesASCII()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Dcel::Parser::PLY< T >::readFacesASCII (std::vector< std::shared_ptr< Face > > & a_faces,
std::vector< std::shared_ptr< Edge > > & a_edges,
const std::vector< std::shared_ptr< Vertex > > & a_vertices,
const int a_numFaces,
std::ifstream & a_inputStream 
)
-
-inlinestaticprotected
-
- -

Read ASCII faces and create mesh connectivity.

-
Parameters
- - - - - - -
[out]a_facesDCEL faces. Constructured in this routine.
[out]a_edgesDCEL edges. Constructured in this routine.
[out]a_verticesDCEL edges. Constructured in readVerticesASCII.
[in]a_numFacesTotal number of faces in mesh.
[in,out]a_inputStreamInput stream
-
-
-
Note
The next getline() from inputStream must read the first face, i.e. we assume that read_ascii_vertices was called IMMEDIATELY before this function. That function will center the fstream on the correct line in the input file.
- -
-
- -

◆ readHeaderASCII()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void Dcel::Parser::PLY< T >::readHeaderASCII (int & a_numVertices,
int & a_numFaces,
std::ifstream & a_inputStream 
)
-
-inlinestaticprotected
-
- -

Read an ASCII header.

-

This reads the number of vertices and faces in the PLY file. Note that it only reads the header.

Parameters
- - - - -
[out]a_numVerticesNumber of vertices
[out]a_numFacesNumber of faces
[in,out]a_inputStreamFile stream. On output, the filestream is at the end of the PLY header.
-
-
- -
-
- -

◆ readVerticesASCII()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void Dcel::Parser::PLY< T >::readVerticesASCII (std::vector< std::shared_ptr< Vertex > > & a_vertices,
const int a_numVertices,
std::ifstream & a_inputStream 
)
-
-inlinestaticprotected
-
- -

Read ASCII vertices.

-
Parameters
- - - - -
[out]a_verticesDCEL vertices. These are constructed in this routine.
[in]a_numVerticesNumber of vertices to read
[in]a_inputStreamInput file stream.
-
-
-
Note
The next getline() from a_inputStream must read the first vertex (i.e. don't rewind the stream before entering this routine)
- -
-
- -

◆ reconcilePairEdges()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::Parser::PLY< T >::reconcilePairEdges (std::vector< std::shared_ptr< Edge > > & a_edges)
-
-inlinestaticprotected
-
- -

Reconcile pair edges, i.e. find the pair edge for every constructed half-edge.

-
Parameters
- - -
[in,out]a_edgesHalf edges.
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classDcel_1_1Polygon2D-members.html b/docs/doxygen/html/classDcel_1_1Polygon2D-members.html deleted file mode 100644 index ffd30713..00000000 --- a/docs/doxygen/html/classDcel_1_1Polygon2D-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::Polygon2D< T > Member List
-
-
- -

This is the complete list of members for Dcel::Polygon2D< T >, including all inherited members.

- - - - - - - - - - - -
InsideOutsideAlgorithm enum nameDcel::Polygon2D< T >
isPointInside(const Vec3 &a_point, const InsideOutsideAlgorithm a_algorithm) const noexceptDcel::Polygon2D< T >inline
isPointInsidePolygonCrossingNumber(const Vec3 &a_point) const noexceptDcel::Polygon2D< T >inline
isPointInsidePolygonSubtend(const Vec3 &a_point) const noexceptDcel::Polygon2D< T >inline
isPointInsidePolygonWindingNumber(const Vec3 &a_point) const noexceptDcel::Polygon2D< T >inline
Polygon2D()=deleteDcel::Polygon2D< T >
Polygon2D(const Vec3 &a_normal, const std::vector< Vec3 > &a_points)Dcel::Polygon2D< T >inline
Vec2 typedefDcel::Polygon2D< T >
Vec3 typedefDcel::Polygon2D< T >
~Polygon2D()=defaultDcel::Polygon2D< T >
- - - - diff --git a/docs/doxygen/html/classDcel_1_1Polygon2D.html b/docs/doxygen/html/classDcel_1_1Polygon2D.html deleted file mode 100644 index 5afeb35d..00000000 --- a/docs/doxygen/html/classDcel_1_1Polygon2D.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - - -EBGeometry: Dcel::Polygon2D< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::Polygon2D< T > Class Template Reference
-
-
- -

Class for embedding a DCEL polygon face into 2D. - More...

- -

#include <EBGeometry_DcelPolygon2D.hpp>

- - - - - - - - - - - -

-Public Types

enum  InsideOutsideAlgorithm { SubtendedAngle, -CrossingNumber, -WindingNumber - }
 Supported algorithms for performing inside/outside tests when checking if a point projects to the inside or outside of a polygon face.
 
-using Vec2 = Vec2T< T >
 Alias to cut down on typing.
 
-using Vec3 = Vec3T< T >
 Alias to cut down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

Polygon2D ()=delete
 Disallowed constructor, use the one with the normal vector and points.
 
 Polygon2D (const Vec3 &a_normal, const std::vector< Vec3 > &a_points)
 Full constructor. More...
 
~Polygon2D ()=default
 Destructor (does nothing.
 
bool isPointInside (const Vec3 &a_point, const InsideOutsideAlgorithm a_algorithm) const noexcept
 Check if a point is inside or outside the 2D polygon. More...
 
bool isPointInsidePolygonWindingNumber (const Vec3 &a_point) const noexcept
 Check if a point is inside a 2D polygon, using the winding number algorithm. More...
 
bool isPointInsidePolygonSubtend (const Vec3 &a_point) const noexcept
 Check if a point is inside a 2D polygon, using the subtended angles. More...
 
bool isPointInsidePolygonCrossingNumber (const Vec3 &a_point) const noexcept
 Check if a point is inside a 2D polygon, by computing the number of times a ray crosses the polygon edges. More...
 
-

Detailed Description

-

template<class T>
-class Dcel::Polygon2D< T >

- -

Class for embedding a DCEL polygon face into 2D.

-

This class is required for determining whether or not a 3D point projected to the plane of an N-sided polygon lies inside or outside the polygon face. To do this we compute the 2D embedding of the polygon face, reducing the problem to a tractable dimension where we can use well-tested algorithm. The 2D embedding of a polygon occurs by taking a set of 3D points and a corresponding normal vector, and projecting those points along one of the 3D Cartesian axes such that the polygon has the largest area. In essence, we simply find the direction with the smallest normal vector component and ignore that. Once the 2D embedding is computed, we can use well-known algorithms for checking if a point lies inside or outside. The supported algorithms are 1) The winding number algorithm (computing the winding number), 2) Computing the subtended angle of the point with the edges of the polygon (sums to 360 degrees if the point is inside), or computing the crossing number which checks how many times a ray cast from the point crosses the edges of the polygon.

-

Constructor & Destructor Documentation

- -

◆ Polygon2D()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Dcel::Polygon2D< T >::Polygon2D (const Vec3a_normal,
const std::vector< Vec3 > & a_points 
)
-
-inline
-
- -

Full constructor.

-
Parameters
- - - -
[in]a_normalNormal vector of the 3D polygon face
[in]a_pointsVertex coordinates of the 3D polygon face
-
-
- -
-
-

Member Function Documentation

- -

◆ isPointInside()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool Dcel::Polygon2D< T >::isPointInside (const Vec3a_point,
const InsideOutsideAlgorithm a_algorithm 
) const
-
-inlinenoexcept
-
- -

Check if a point is inside or outside the 2D polygon.

-
Parameters
- - - -
[in]a_point3D point coordinates
[in]a_algorithmInside/outside algorithm
-
-
-

This will call the function corresponding to a_algorithm.

- -
-
- -

◆ isPointInsidePolygonCrossingNumber()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Dcel::Polygon2D< T >::isPointInsidePolygonCrossingNumber (const Vec3a_point) const
-
-inlinenoexcept
-
- -

Check if a point is inside a 2D polygon, by computing the number of times a ray crosses the polygon edges.

-
Parameters
- - -
[in]a_point3D point coordinates
-
-
-
Returns
Returns true if the 3D point projects to the inside of the 2D polygon
- -
-
- -

◆ isPointInsidePolygonSubtend()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Dcel::Polygon2D< T >::isPointInsidePolygonSubtend (const Vec3a_point) const
-
-inlinenoexcept
-
- -

Check if a point is inside a 2D polygon, using the subtended angles.

-
Parameters
- - -
[in]a_point3D point coordinates
-
-
-
Returns
Returns true if the 3D point projects to the inside of the 2D polygon
- -
-
- -

◆ isPointInsidePolygonWindingNumber()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Dcel::Polygon2D< T >::isPointInsidePolygonWindingNumber (const Vec3a_point) const
-
-inlinenoexcept
-
- -

Check if a point is inside a 2D polygon, using the winding number algorithm.

-
Parameters
- - -
[in]a_point3D point coordinates
-
-
-
Returns
Returns true if the 3D point projects to the inside of the 2D polygon
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classDcel_1_1VertexT-members.html b/docs/doxygen/html/classDcel_1_1VertexT-members.html deleted file mode 100644 index 2b995633..00000000 --- a/docs/doxygen/html/classDcel_1_1VertexT-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Dcel::VertexT< T > Member List
-
-
- -

This is the complete list of members for Dcel::VertexT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addFace(const FacePtr &a_face) noexceptDcel::VertexT< T >inline
computeVertexNormalAngleWeighted() noexceptDcel::VertexT< T >inline
computeVertexNormalAngleWeighted(const std::vector< FacePtr > &a_faces) noexceptDcel::VertexT< T >inline
computeVertexNormalAverage() noexceptDcel::VertexT< T >inline
computeVertexNormalAverage(const std::vector< FacePtr > &a_faces) noexceptDcel::VertexT< T >inline
define(const Vec3 &a_position, const EdgePtr &a_edge, const Vec3 &a_normal) noexceptDcel::VertexT< T >inline
Edge typedefDcel::VertexT< T >
EdgeIterator typedefDcel::VertexT< T >
EdgePtr typedefDcel::VertexT< T >
Face typedefDcel::VertexT< T >
FacePtr typedefDcel::VertexT< T >
getFaces() noexceptDcel::VertexT< T >inline
getFaces() const noexceptDcel::VertexT< T >inline
getNormal() noexceptDcel::VertexT< T >inline
getNormal() const noexceptDcel::VertexT< T >inline
getOutgoingEdge() noexceptDcel::VertexT< T >inline
getOutgoingEdge() const noexceptDcel::VertexT< T >inline
getPosition() noexceptDcel::VertexT< T >inline
getPosition() const noexceptDcel::VertexT< T >inline
m_facesDcel::VertexT< T >protected
m_normalDcel::VertexT< T >protected
m_outgoingEdgeDcel::VertexT< T >protected
m_positionDcel::VertexT< T >protected
normalizeNormalVector() noexceptDcel::VertexT< T >inline
setEdge(const EdgePtr &a_edge) noexceptDcel::VertexT< T >inline
setNormal(const Vec3 &a_normal) noexceptDcel::VertexT< T >inline
setPosition(const Vec3 &a_position) noexceptDcel::VertexT< T >inline
signedDistance(const Vec3 &a_x0) const noexceptDcel::VertexT< T >inline
unsignedDistance2(const Vec3 &a_x0) const noexceptDcel::VertexT< T >inline
Vec3 typedefDcel::VertexT< T >
Vertex typedefDcel::VertexT< T >
VertexPtr typedefDcel::VertexT< T >
VertexT()Dcel::VertexT< T >inline
VertexT(const Vec3 &a_position)Dcel::VertexT< T >inline
VertexT(const Vec3 &a_position, const Vec3 &a_normal)Dcel::VertexT< T >inline
VertexT(const Vertex &a_otherVertex)Dcel::VertexT< T >inline
~VertexT()Dcel::VertexT< T >inline
- - - - diff --git a/docs/doxygen/html/classDcel_1_1VertexT.html b/docs/doxygen/html/classDcel_1_1VertexT.html deleted file mode 100644 index dae1d19a..00000000 --- a/docs/doxygen/html/classDcel_1_1VertexT.html +++ /dev/null @@ -1,768 +0,0 @@ - - - - - - - -EBGeometry: Dcel::VertexT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::VertexT< T > Class Template Reference
-
-
- -

Class which represents a vertex node in a double-edge connected list (DCEL). - More...

- -

#include <EBGeometry_DcelVertex.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Alias to cut down on typing.
 
-using Vertex = VertexT< T >
 Alias to cut down on typing.
 
-using Edge = EdgeT< T >
 Alias to cut down on typing.
 
-using Face = FaceT< T >
 Alias to cut down on typing.
 
-using VertexPtr = std::shared_ptr< Vertex >
 Alias to cut down on typing. Note that this is std::shared_ptr<VertexT<T> >
 
-using EdgePtr = std::shared_ptr< Edge >
 Alias to cut down on typing. Note that this is std::shared_ptr<EdgeT<T> >
 
-using FacePtr = std::shared_ptr< Face >
 Alias to cut down on typing. Note that this is std::shared_ptr<FaceT<T> >
 
-using EdgeIterator = EdgeIteratorT< T >
 Alias to cut down on typing. Note that this is std::shared_ptr<EdgeIteratorT<T> >
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 VertexT ()
 Default constructor. More...
 
 VertexT (const Vec3 &a_position)
 Partial constructor. More...
 
 VertexT (const Vec3 &a_position, const Vec3 &a_normal)
 Constructor. More...
 
 VertexT (const Vertex &a_otherVertex)
 Full copy constructor. More...
 
~VertexT ()
 Destructor (does nothing)
 
void define (const Vec3 &a_position, const EdgePtr &a_edge, const Vec3 &a_normal) noexcept
 Define function. More...
 
void setPosition (const Vec3 &a_position) noexcept
 Set the vertex position. More...
 
void setNormal (const Vec3 &a_normal) noexcept
 Set the vertex normal vector. More...
 
void setEdge (const EdgePtr &a_edge) noexcept
 Set the reference to the outgoing edge. More...
 
void addFace (const FacePtr &a_face) noexcept
 Add a face to the polygon face list. More...
 
-void normalizeNormalVector () noexcept
 Normalize the normal vector, ensuring its length is 1.
 
-void computeVertexNormalAverage () noexcept
 Compute the vertex normal, using an average the normal vector in this vertex's face list (m_faces)
 
void computeVertexNormalAverage (const std::vector< FacePtr > &a_faces) noexcept
 Compute the vertex normal, using an average of the normal vectors in the input face list. More...
 
void computeVertexNormalAngleWeighted () noexcept
 Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face. More...
 
void computeVertexNormalAngleWeighted (const std::vector< FacePtr > &a_faces) noexcept
 Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face. More...
 
-Vec3T< T > & getPosition () noexcept
 Return modifiable vertex position.
 
-const Vec3T< T > & getPosition () const noexcept
 Return immutable vertex position.
 
-Vec3T< T > & getNormal () noexcept
 Return modifiable vertex normal vector.
 
-const Vec3T< T > & getNormal () const noexcept
 Return immutable vertex normal vector.
 
-EdgePtrgetOutgoingEdge () noexcept
 Return modifiable pointer to outgoing edge.
 
-const EdgePtrgetOutgoingEdge () const noexcept
 Return immutable pointer to outgoing edge.
 
-std::vector< FacePtr > & getFaces () noexcept
 Get modifiable polygon face list for this vertex.
 
-const std::vector< FacePtr > & getFaces () const noexcept
 Get immutable polygon face list for this vertex.
 
signedDistance (const Vec3 &a_x0) const noexcept
 Get the signed distance to this vertex. More...
 
unsignedDistance2 (const Vec3 &a_x0) const noexcept
 Get the squared unsigned distance to this vertex. More...
 
- - - - - - - - - - - - - -

-Protected Attributes

-EdgePtr m_outgoingEdge
 Pointer to an outgoing edge from this vertex.
 
-Vec3 m_position
 Vertex position.
 
-Vec3 m_normal
 Vertex normal vector.
 
-std::vector< FacePtrm_faces
 List of faces connected to this vertex (these must be "manually" added)
 
-

Detailed Description

-

template<class T>
-class Dcel::VertexT< T >

- -

Class which represents a vertex node in a double-edge connected list (DCEL).

-

This class is used in DCEL functionality which stores polygonal surfaces in a mesh. The VertexT class has a position, a normal vector, and a pointer to one of the outgoing edges from the vertex. For performance reasons we also include pointers to all the polygon faces that share this vertex.

Note
The normal vector is outgoing, i.e. a point x is "outside" the vertex if the dot product between n and (x - x0) is positive.
-

Constructor & Destructor Documentation

- -

◆ VertexT() [1/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
Dcel::VertexT< T >::VertexT ()
-
-inline
-
- -

Default constructor.

-

This initializes the position and the normal vector to zero vectors, and the polygon face list is empty

- -
-
- -

◆ VertexT() [2/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::VertexT< T >::VertexT (const Vec3a_position)
-
-inline
-
- -

Partial constructor.

-
Parameters
- - -
[in]a_positionVertex position
-
-
-

This initializes the position to a_position and the normal vector to the zero vector. The polygon face list is empty.

- -
-
- -

◆ VertexT() [3/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Dcel::VertexT< T >::VertexT (const Vec3a_position,
const Vec3a_normal 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - -
[in]a_positionVertex position
[in]a_normalVertex normal vector
-
-
-

This initializes the position to a_position and the normal vector to a_normal. The polygon face list is empty.

- -
-
- -

◆ VertexT() [4/4]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Dcel::VertexT< T >::VertexT (const Vertexa_otherVertex)
-
-inline
-
- -

Full copy constructor.

-
Parameters
- - -
[in]a_otherVertexOther vertex
-
-
-

This copies the position, normal vector, and outgoing edge pointer from the other vertex. The polygon face list.

- -
-
-

Member Function Documentation

- -

◆ addFace()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::VertexT< T >::addFace (const FacePtra_face)
-
-inlinenoexcept
-
- -

Add a face to the polygon face list.

-
Parameters
- - -
[in]a_facePointer to face.
-
-
- -
-
- -

◆ computeVertexNormalAngleWeighted() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void Dcel::VertexT< T >::computeVertexNormalAngleWeighted ()
-
-inlinenoexcept
-
- -

Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face.

-

This calls the other version with a_faces = m_faces

Note
This computes the normal vector using the pseudnormal algorithm from Baerentzen and Aanes in "Signed distance computation using the angle weighted pseudonormal" (DOI: 10.1109/TVCG.2005.49)
- -
-
- -

◆ computeVertexNormalAngleWeighted() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::VertexT< T >::computeVertexNormalAngleWeighted (const std::vector< FacePtr > & a_faces)
-
-inlinenoexcept
-
- -

Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face.

-
Parameters
- - -
[in]a_facesFaces to use for computation.
-
-
-
Note
This computes the normal vector using the pseudnormal algorithm from Baerentzen and Aanes in "Signed distance computation using the angle weighted pseudonormal" (DOI: 10.1109/TVCG.2005.49)
- -
-
- -

◆ computeVertexNormalAverage()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::VertexT< T >::computeVertexNormalAverage (const std::vector< FacePtr > & a_faces)
-
-inlinenoexcept
-
- -

Compute the vertex normal, using an average of the normal vectors in the input face list.

-
Parameters
- - -
[in]a_facesFaces
-
-
-
Note
This computes the vertex normal as n = sum(normal(face))/num(faces)
- -
-
- -

◆ define()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void Dcel::VertexT< T >::define (const Vec3a_position,
const EdgePtra_edge,
const Vec3a_normal 
)
-
-inlinenoexcept
-
- -

Define function.

-
Parameters
- - - - -
[in]a_positionVertex position
[in]a_edgePointer to outgoing edge
[in]a_normalVertex normal vector
-
-
-

This sets the position, normal vector, and edge pointer.

- -
-
- -

◆ setEdge()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::VertexT< T >::setEdge (const EdgePtra_edge)
-
-inlinenoexcept
-
- -

Set the reference to the outgoing edge.

-
Parameters
- - -
[in]a_edgePointer to an outgoing edge
-
-
- -
-
- -

◆ setNormal()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::VertexT< T >::setNormal (const Vec3a_normal)
-
-inlinenoexcept
-
- -

Set the vertex normal vector.

-
Parameters
- - -
[in]a_normalVertex normal vector
-
-
- -
-
- -

◆ setPosition()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void Dcel::VertexT< T >::setPosition (const Vec3a_position)
-
-inlinenoexcept
-
- -

Set the vertex position.

-
Parameters
- - -
[in]a_positionVertex position
-
-
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::VertexT< T >::signedDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the signed distance to this vertex.

-
Parameters
- - -
[in]a_x0Position in space.
-
-
-
Returns
The returned distance is |a_x0 - m_position| and the sign is given by the sign of m_normal * |a_x0 - m_position|.
- -
-
- -

◆ unsignedDistance2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Dcel::VertexT< T >::unsignedDistance2 (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the squared unsigned distance to this vertex.

-

This is faster to compute than signedDistance, and might be preferred for some algorithms.

Returns
Returns the vector length of (a_x - m_position)
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1AABBT-members.html b/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1AABBT-members.html deleted file mode 100644 index 122b969a..00000000 --- a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1AABBT-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -EBGeometry class API: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry class API -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry::BoundingVolumes::AABBT< T > Member List
-
-
- -

This is the complete list of members for EBGeometry::BoundingVolumes::AABBT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AABBT()EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const AABBT &a_other)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const std::vector< AABBT< T > > &a_others)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const std::vector< Vec3T< P > > &a_points)EBGeometry::BoundingVolumes::AABBT< T >
AABBT() (defined in EBGeometry::BoundingVolumes::AABBT< T >)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const Vec3T< T > &a_lo, const Vec3T< T > &a_hi) (defined in EBGeometry::BoundingVolumes::AABBT< T >)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const AABBT< T > &a_other) (defined in EBGeometry::BoundingVolumes::AABBT< T >)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const std::vector< AABBT< T > > &a_others) (defined in EBGeometry::BoundingVolumes::AABBT< T >)EBGeometry::BoundingVolumes::AABBT< T >
AABBT(const std::vector< Vec3T< P > > &a_points) (defined in EBGeometry::BoundingVolumes::AABBT< T >)EBGeometry::BoundingVolumes::AABBT< T >
define(const std::vector< Vec3T< P > > &a_points) noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
define(const std::vector< Vec3T< P > > &a_points) noexcept (defined in EBGeometry::BoundingVolumes::AABBT< T >)EBGeometry::BoundingVolumes::AABBT< T >inline
getArea() const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getCentroid() const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getDistance(const Vec3 &a_x0) const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getDistance2(const Vec3 &a_x0) const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getHighCorner() noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getHighCorner() const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getLowCorner() noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getLowCorner() const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getOverlappingVolume(const AABBT< T > &a_other) const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
getVolume() const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
intersects(const AABBT &a_other) const noexceptEBGeometry::BoundingVolumes::AABBT< T >inline
m_hiCornerEBGeometry::BoundingVolumes::AABBT< T >protected
m_loCornerEBGeometry::BoundingVolumes::AABBT< T >protected
Vec3 typedefEBGeometry::BoundingVolumes::AABBT< T >
~AABBT()EBGeometry::BoundingVolumes::AABBT< T >virtual
- - - - diff --git a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1AABBT.html b/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1AABBT.html deleted file mode 100644 index 783c0683..00000000 --- a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1AABBT.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - - - - -EBGeometry class API: EBGeometry::BoundingVolumes::AABBT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry class API -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry::BoundingVolumes::AABBT< T > Class Template Reference
-
-
- -

Axis-aligned bounding box as bounding volume. - More...

- -

#include <EBGeometry_BoundingVolumes.hpp>

- - - - - -

-Public Types

-using Vec3 = Vec3T< T >
 Alias which cuts down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

AABBT ()
 Default constructor (does nothing)
 
 AABBT (const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)
 Full constructor taking the low/high corners of the bounding box. More...
 
 AABBT (const AABBT &a_other)
 Copy constructor of another bounding box. More...
 
 AABBT (const std::vector< AABBT< T > > &a_others)
 Constructor which creates an AABB which encloses a set of other AABBs. More...
 
-virtual ~AABBT ()
 Destructor (does nothing)
 
template<class P >
 AABBT (const std::vector< Vec3T< P > > &a_points)
 Template constructor (since mixed precision allowed) which creates an AABB that encloses a set of 3D points. More...
 
template<class P >
void define (const std::vector< Vec3T< P > > &a_points) noexcept
 Define function (since mixed precision allowed) which sets this AABB such that it encloses a set of 3D points. More...
 
bool intersects (const AABBT &a_other) const noexcept
 Check if this AABB intersects another AABB. More...
 
-Vec3T< T > & getLowCorner () noexcept
 Get the modifiable lower-left corner of the AABB.
 
-const Vec3T< T > & getLowCorner () const noexcept
 Get the immutable lower-left corner of the AABB.
 
-Vec3T< T > & getHighCorner () noexcept
 Get the modifiable upper-right corner of the AABB.
 
-const Vec3T< T > & getHighCorner () const noexcept
 Get the immutable upper-right corner of the AABB.
 
-Vec3 getCentroid () const noexcept
 Get bounding volume centroid.
 
getOverlappingVolume (const AABBT< T > &a_other) const noexcept
 Compute the overlapping volume between this AABB and another AABB. More...
 
getDistance (const Vec3 &a_x0) const noexcept
 Get the distance to this AABB (points inside the bounding box have a zero distance) More...
 
getDistance2 (const Vec3 &a_x0) const noexcept
 Get the squared distance to this bounding box (points inside the bounding box have a zero distance) More...
 
-T getVolume () const noexcept
 Compute the bounding box volume.
 
-T getArea () const noexcept
 Compute the bounding box area.
 
-template<class T >
 AABBT (const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)
 
-template<class T >
 AABBT (const AABBT< T > &a_other)
 
-template<class T >
 AABBT (const std::vector< AABBT< T > > &a_others)
 
-template<class P >
 AABBT (const std::vector< Vec3T< P > > &a_points)
 
-template<class P >
void define (const std::vector< Vec3T< P > > &a_points) noexcept
 
- - - - - - - -

-Protected Attributes

-Vec3 m_loCorner
 Lower-left corner of bounding box.
 
-Vec3 m_hiCorner
 Upper-right corner of bounding box.
 
-

Detailed Description

-

template<class T>
-class EBGeometry::BoundingVolumes::AABBT< T >

- -

Axis-aligned bounding box as bounding volume.

-

This class represents a Cartesian box that encloses a set of 3D points.

Note
The template parameter T is the precision.
-

Constructor & Destructor Documentation

- -

◆ AABBT() [1/4]

- -
-
-
-template<class T>
- - - - - - - - - - - - - - - - - - -
EBGeometry::BoundingVolumes::AABBT< T >::AABBT (const Vec3T< T > & a_lo,
const Vec3T< T > & a_hi 
)
-
- -

Full constructor taking the low/high corners of the bounding box.

-
Parameters
- - - -
[in]a_loLow corner
[in]a_hiHigh
-
-
- -
-
- -

◆ AABBT() [2/4]

- -
-
-
-template<class T>
- - - - - - - - -
EBGeometry::BoundingVolumes::AABBT< T >::AABBT (const AABBT< T > & a_other)
-
- -

Copy constructor of another bounding box.

-
Parameters
- - -
[in]a_otherOther bounding box
-
-
- -
-
- -

◆ AABBT() [3/4]

- -
-
-
-template<class T>
- - - - - - - - -
EBGeometry::BoundingVolumes::AABBT< T >::AABBT (const std::vector< AABBT< T > > & a_others)
-
- -

Constructor which creates an AABB which encloses a set of other AABBs.

-
Parameters
- - -
[in]a_othersOther bounding boxes
-
-
- -
-
- -

◆ AABBT() [4/4]

- -
-
-
-template<class T>
-
-template<class P >
- - - - - - - - -
EBGeometry::BoundingVolumes::AABBT< T >::AABBT (const std::vector< Vec3T< P > > & a_points)
-
- -

Template constructor (since mixed precision allowed) which creates an AABB that encloses a set of 3D points.

-
Parameters
- - -
[in]a_pointsSet of 3D points
-
-
-
Note
Calls the define function
- -
-
-

Member Function Documentation

- -

◆ define()

- -
-
-
-template<class T>
-
-template<class P >
- - - - - -
- - - - - - - - -
void EBGeometry::BoundingVolumes::AABBT< T >::define (const std::vector< Vec3T< P > > & a_points)
-
-inlinenoexcept
-
- -

Define function (since mixed precision allowed) which sets this AABB such that it encloses a set of 3D points.

-
Parameters
- - -
[in]a_pointsSet of 3D points
-
-
- -
-
- -

◆ getDistance()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
T BoundingVolumes::AABBT::getDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the distance to this AABB (points inside the bounding box have a zero distance)

-
Parameters
- - -
[in]a_x03D point
-
-
-
Returns
Returns the distance to the bounding box (a point inside has a zero distance)
- -
-
- -

◆ getDistance2()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
T BoundingVolumes::AABBT::getDistance2 (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the squared distance to this bounding box (points inside the bounding box have a zero distance)

-
Parameters
- - -
[in]a_x03D point
-
-
-
Returns
Returns the squared distance to the bounding box (a point inside has a zero distance)
- -
-
- -

◆ getOverlappingVolume()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
T BoundingVolumes::AABBT::getOverlappingVolume (const AABBT< T > & a_other) const
-
-inlinenoexcept
-
- -

Compute the overlapping volume between this AABB and another AABB.

-
Parameters
- - -
[in]a_otherThe other AABB
-
-
-
Returns
Returns overlapping volume
- -
-
- -

◆ intersects()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
bool BoundingVolumes::AABBT::intersects (const AABBT< T > & a_other) const
-
-inlinenoexcept
-
- -

Check if this AABB intersects another AABB.

-
Parameters
- - -
[in]a_otherThe other AABB
-
-
-
Returns
True if they intersect and false otherwise.
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT-members.html b/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT-members.html deleted file mode 100644 index ef11fc7b..00000000 --- a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -EBGeometry class API: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry class API -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
EBGeometry::BoundingVolumes::BoundingSphereT< T > Member List
-
-
- -

This is the complete list of members for EBGeometry::BoundingVolumes::BoundingSphereT< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BoundingSphereT()EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const Vec3T< T > &a_center, const T &a_radius)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const std::vector< BoundingSphereT< T > > &a_otherSpheres)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const BoundingSphereT &a_other)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg=BoundingVolumeAlgorithm::Ritter)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT() (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >inline
BoundingSphereT(const Vec3T< T > &a_center, const T &a_radius) (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >inline
BoundingSphereT(const BoundingSphereT &a_other) (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const std::vector< BoundingSphereT< T > > &a_otherSpheres) (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingSphereT(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_algorithm) (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >
BoundingVolumeAlgorithm enum nameEBGeometry::BoundingVolumes::BoundingSphereT< T >
buildRitter(const std::vector< Vec3T< P > > &a_points) noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inlineprotected
buildRitter(const std::vector< Vec3T< P > > &a_points) noexcept (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >inline
define(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg) noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
define(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_algorithm) noexcept (defined in EBGeometry::BoundingVolumes::BoundingSphereT< T >)EBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getArea() const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getCentroid() noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getCentroid() const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getDistance(const Vec3 &a_x0) const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getDistance2(const Vec3 &a_x0) const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getOverlappingVolume(const BoundingSphereT< T > &a_other) const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getRadius() noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getRadius() const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
getVolume() const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
intersects(const BoundingSphereT &a_other) const noexceptEBGeometry::BoundingVolumes::BoundingSphereT< T >inline
m_centerEBGeometry::BoundingVolumes::BoundingSphereT< T >protected
m_radiusEBGeometry::BoundingVolumes::BoundingSphereT< T >protected
Vec3 typedefEBGeometry::BoundingVolumes::BoundingSphereT< T >
~BoundingSphereT()EBGeometry::BoundingVolumes::BoundingSphereT< T >virtual
- - - - diff --git a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT.html b/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT.html deleted file mode 100644 index adfa2a28..00000000 --- a/docs/doxygen/html/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT.html +++ /dev/null @@ -1,612 +0,0 @@ - - - - - - - -EBGeometry class API: EBGeometry::BoundingVolumes::BoundingSphereT< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry class API -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
EBGeometry::BoundingVolumes::BoundingSphereT< T > Class Template Reference
-
-
- -

Class which encloses a set of points using a bounding sphere. - More...

- -

#include <EBGeometry_BoundingVolumes.hpp>

- - - - - - - - -

-Public Types

enum  BoundingVolumeAlgorithm { Ritter - }
 Typename for possible algorithms that support the computation of a bounding sphere for a set of 3D points.
 
-using Vec3 = Vec3T< T >
 Alias to cut down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

BoundingSphereT ()
 Default constructor. Leaves object in undefined state.
 
 BoundingSphereT (const Vec3T< T > &a_center, const T &a_radius)
 Full constructor. Sets the center and radius of the bounding sphere. More...
 
 BoundingSphereT (const std::vector< BoundingSphereT< T > > &a_otherSpheres)
 Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres. More...
 
 BoundingSphereT (const BoundingSphereT &a_other)
 Copy constructor. Sets the center and radius from the other sphere. More...
 
-virtual ~BoundingSphereT ()
 Destructor (does nothing).
 
template<class P >
 BoundingSphereT (const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg=BoundingVolumeAlgorithm::Ritter)
 Template constructor which takes a set of 3D points (mixed precision allowed). More...
 
template<class P >
void define (const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg) noexcept
 Template define function which takes a set of 3D points (mixed precision allowed). More...
 
bool intersects (const BoundingSphereT &a_other) const noexcept
 Check if this bounding sphere intersect another bounding sphere. More...
 
-T & getRadius () noexcept
 Get modifiable radius for this sphere.
 
-const T & getRadius () const noexcept
 Get immutable radius for this sphere.
 
-Vec3getCentroid () noexcept
 Get modifiable center for this sphere.
 
-const Vec3getCentroid () const noexcept
 Get immutable center for this sphere.
 
getOverlappingVolume (const BoundingSphereT< T > &a_other) const noexcept
 Compute the overlapping volume between this bounding sphere and another. More...
 
getDistance (const Vec3 &a_x0) const noexcept
 Get the distance to this bounding sphere (points inside the sphere have a zero distance) More...
 
getDistance2 (const Vec3 &a_x0) const noexcept
 Get the squared distance to this bounding sphere (points inside the sphere have a zero distance) More...
 
getVolume () const noexcept
 Get the sphere volume. More...
 
getArea () const noexcept
 Get the sphere area. More...
 
-template<class T >
 BoundingSphereT (const Vec3T< T > &a_center, const T &a_radius)
 
-template<class T >
 BoundingSphereT (const BoundingSphereT &a_other)
 
-template<class T >
 BoundingSphereT (const std::vector< BoundingSphereT< T > > &a_otherSpheres)
 
-template<class P >
 BoundingSphereT (const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_algorithm)
 
-template<class P >
void define (const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_algorithm) noexcept
 
-template<class P >
void buildRitter (const std::vector< Vec3T< P > > &a_points) noexcept
 
- - - - - -

-Protected Member Functions

-template<class P >
void buildRitter (const std::vector< Vec3T< P > > &a_points) noexcept
 Template function which computes the bounding sphere for a set of points (mixed precision allowed) using Ritter's algorithm.
 
- - - - - - - -

-Protected Attributes

-T m_radius
 Sphere radius.
 
-Vec3 m_center
 Sphere center.
 
-

Detailed Description

-

template<class T>
-class EBGeometry::BoundingVolumes::BoundingSphereT< T >

- -

Class which encloses a set of points using a bounding sphere.

-

The template parameter T is the floating-point precision which is used.

-

Constructor & Destructor Documentation

- -

◆ BoundingSphereT() [1/4]

- -
-
-
-template<class T>
- - - - - - - - - - - - - - - - - - -
EBGeometry::BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const Vec3T< T > & a_center,
const T & a_radius 
)
-
- -

Full constructor. Sets the center and radius of the bounding sphere.

-
Parameters
- - - -
[in]a_centerBounding sphere center
[in]a_radiusBounding sphere radius
-
-
- -
-
- -

◆ BoundingSphereT() [2/4]

- -
-
-
-template<class T>
- - - - - - - - -
EBGeometry::BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const std::vector< BoundingSphereT< T > > & a_otherSpheres)
-
- -

Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres.

-
Parameters
- - -
[in]a_otherSpheresOther bounding spheres.
-
-
- -
-
- -

◆ BoundingSphereT() [3/4]

- -
-
-
-template<class T>
- - - - - - - - -
EBGeometry::BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const BoundingSphereT< T > & a_other)
-
- -

Copy constructor. Sets the center and radius from the other sphere.

-
Parameters
- - -
[in]a_otherOther sphere
-
-
- -
-
- -

◆ BoundingSphereT() [4/4]

- -
-
-
-template<class T>
-
-template<class P >
- - - - - - - - - - - - - - - - - - -
EBGeometry::BoundingVolumes::BoundingSphereT< T >::BoundingSphereT (const std::vector< Vec3T< P > > & a_points,
const BoundingVolumeAlgorithma_alg = BoundingVolumeAlgorithm::Ritter 
)
-
- -

Template constructor which takes a set of 3D points (mixed precision allowed).

-

This computes the bounding sphere using the supplied algorithm.

Parameters
- - - -
[in]a_pointsSet of 3D points
[in]a_algBounding sphere algorithm.
-
-
-
Note
This calls the define(...) function.
- -
-
-

Member Function Documentation

- -

◆ define()

- -
-
-
-template<class T>
-
-template<class P >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void EBGeometry::BoundingVolumes::BoundingSphereT< T >::define (const std::vector< Vec3T< P > > & a_points,
const BoundingVolumeAlgorithma_alg 
)
-
-inlinenoexcept
-
- -

Template define function which takes a set of 3D points (mixed precision allowed).

-

This computes the bounding sphere using the supplied algorithm.

Parameters
- - - -
[in]a_pointsSet of 3D points
[in]a_algBounding sphere algorithm.
-
-
- -
-
- -

◆ getArea()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - -
T BoundingVolumes::BoundingSphereT::getArea () const
-
-inlinenoexcept
-
- -

Get the sphere area.

-
Returns
Sphere area.
- -
-
- -

◆ getDistance()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
T BoundingVolumes::BoundingSphereT::getDistance (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the distance to this bounding sphere (points inside the sphere have a zero distance)

-
Parameters
- - -
[in]a_x03D point
-
-
-
Returns
Returns the distance to the sphere (a point inside has a zero distance)
- -
-
- -

◆ getDistance2()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
T BoundingVolumes::BoundingSphereT::getDistance2 (const Vec3a_x0) const
-
-inlinenoexcept
-
- -

Get the squared distance to this bounding sphere (points inside the sphere have a zero distance)

-
Parameters
- - -
[in]a_x03D point
-
-
-
Returns
Returns the squared distance to the sphere (a point inside has a zero distance)
- -
-
- -

◆ getOverlappingVolume()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
T BoundingVolumes::BoundingSphereT::getOverlappingVolume (const BoundingSphereT< T > & a_other) const
-
-inlinenoexcept
-
- -

Compute the overlapping volume between this bounding sphere and another.

-
Parameters
- - -
[in]a_otherOther bounding sphere
-
-
-
Returns
The overlapping volume, computing using standard expressions.
- -
-
- -

◆ getVolume()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - -
T BoundingVolumes::BoundingSphereT::getVolume () const
-
-inlinenoexcept
-
- -

Get the sphere volume.

-
Returns
Sphere volume
- -
-
- -

◆ intersects()

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
bool BoundingVolumes::BoundingSphereT::intersects (const BoundingSphereT< T > & a_other) const
-
-inlinenoexcept
-
- -

Check if this bounding sphere intersect another bounding sphere.

-
Parameters
- - -
[in]a_otherOther bounding sphere.
-
-
-
Returns
True if the two sphere intersect.
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classRotateOp-members.html b/docs/doxygen/html/classRotateOp-members.html deleted file mode 100644 index 768322d6..00000000 --- a/docs/doxygen/html/classRotateOp-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
RotateOp< T > Member List
-
-
- -

This is the complete list of members for RotateOp< T >, including all inherited members.

- - - - - - - - - - -
m_axisRotateOp< T >protected
m_cosAngleRotateOp< T >protected
m_sinAngleRotateOp< T >protected
RotateOp()RotateOp< T >
RotateOp(const T a_angle, const int a_axis) noexceptRotateOp< T >
transform(const Vec3T< T > &a_inputPoint) const noexcept overrideRotateOp< T >virtual
TransformOp()=defaultTransformOp< T >
~RotateOp()=defaultRotateOp< T >virtual
~TransformOp()=defaultTransformOp< T >virtual
- - - - diff --git a/docs/doxygen/html/classRotateOp.html b/docs/doxygen/html/classRotateOp.html deleted file mode 100644 index 376deedf..00000000 --- a/docs/doxygen/html/classRotateOp.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - -EBGeometry: RotateOp< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
RotateOp< T > Class Template Reference
-
-
- -

Rotation operator. Can scale an input point. - More...

- -

#include <EBGeometry_TransformOps.hpp>

-
-Inheritance diagram for RotateOp< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for RotateOp< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

RotateOp ()
 Weak constructor.
 
 RotateOp (const T a_angle, const int a_axis) noexcept
 Full constructor. More...
 
-virtual ~RotateOp ()=default
 Destructor.
 
-Vec3T< T > transform (const Vec3T< T > &a_inputPoint) const noexcept override
 Transform input point.
 
- Public Member Functions inherited from TransformOp< T >
TransformOp ()=default
 Default constructor.
 
-virtual ~TransformOp ()=default
 Destructor.
 
- - - - - - - - - - -

-Protected Attributes

-int m_axis
 Rotation axis. 0 = x, 1=y etc.
 
-T m_cosAngle
 Theta-rotation (degrees)
 
-T m_sinAngle
 Phi-rotation (degrees)
 
-

Detailed Description

-

template<class T>
-class RotateOp< T >

- -

Rotation operator. Can scale an input point.

-

Constructor & Destructor Documentation

- -

◆ RotateOp()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
RotateOp< T >::RotateOp (const T a_angle,
const int a_axis 
)
-
-noexcept
-
- -

Full constructor.

-
Parameters
- - - -
[in]a_angleRotation angle
[in]a_axisRotation axis
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classRotateOp__coll__graph.map b/docs/doxygen/html/classRotateOp__coll__graph.map deleted file mode 100644 index 9273521f..00000000 --- a/docs/doxygen/html/classRotateOp__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classRotateOp__coll__graph.md5 b/docs/doxygen/html/classRotateOp__coll__graph.md5 deleted file mode 100644 index 3f610ad3..00000000 --- a/docs/doxygen/html/classRotateOp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -19bd2ab8c4686f74e216e3d4d31d9fc2 \ No newline at end of file diff --git a/docs/doxygen/html/classRotateOp__coll__graph.png b/docs/doxygen/html/classRotateOp__coll__graph.png deleted file mode 100644 index ce8d848a..00000000 Binary files a/docs/doxygen/html/classRotateOp__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classRotateOp__inherit__graph.map b/docs/doxygen/html/classRotateOp__inherit__graph.map deleted file mode 100644 index 9273521f..00000000 --- a/docs/doxygen/html/classRotateOp__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classRotateOp__inherit__graph.md5 b/docs/doxygen/html/classRotateOp__inherit__graph.md5 deleted file mode 100644 index 9b22f201..00000000 --- a/docs/doxygen/html/classRotateOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f18e3df72e40ac95ded6585c38f35894 \ No newline at end of file diff --git a/docs/doxygen/html/classRotateOp__inherit__graph.png b/docs/doxygen/html/classRotateOp__inherit__graph.png deleted file mode 100644 index ce8d848a..00000000 Binary files a/docs/doxygen/html/classRotateOp__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classScaleOp-members.html b/docs/doxygen/html/classScaleOp-members.html deleted file mode 100644 index ae04750f..00000000 --- a/docs/doxygen/html/classScaleOp-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ScaleOp< T > Member List
-
-
- -

This is the complete list of members for ScaleOp< T >, including all inherited members.

- - - - - - - - -
m_scaleScaleOp< T >protected
ScaleOp()ScaleOp< T >
ScaleOp(const Vec3T< T > &a_scale)ScaleOp< T >
transform(const Vec3T< T > &a_inputPoint) const noexcept overrideScaleOp< T >virtual
TransformOp()=defaultTransformOp< T >
~ScaleOp()=defaultScaleOp< T >virtual
~TransformOp()=defaultTransformOp< T >virtual
- - - - diff --git a/docs/doxygen/html/classScaleOp.html b/docs/doxygen/html/classScaleOp.html deleted file mode 100644 index 55ead398..00000000 --- a/docs/doxygen/html/classScaleOp.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -EBGeometry: ScaleOp< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
ScaleOp< T > Class Template Reference
-
-
- -

Scale operator. Can also be used as a reflection operator. - More...

- -

#include <EBGeometry_TransformOps.hpp>

-
-Inheritance diagram for ScaleOp< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for ScaleOp< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

ScaleOp ()
 Default constructor.
 
ScaleOp (const Vec3T< T > &a_scale)
 Full constructor.
 
-virtual ~ScaleOp ()=default
 Destructor.
 
-Vec3T< T > transform (const Vec3T< T > &a_inputPoint) const noexcept override
 Transform input point.
 
- Public Member Functions inherited from TransformOp< T >
TransformOp ()=default
 Default constructor.
 
-virtual ~TransformOp ()=default
 Destructor.
 
- - - - -

-Protected Attributes

-Vec3T< T > m_scale
 Scaling of input point.
 
-

Detailed Description

-

template<class T>
-class ScaleOp< T >

- -

Scale operator. Can also be used as a reflection operator.

-

The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classScaleOp__coll__graph.map b/docs/doxygen/html/classScaleOp__coll__graph.map deleted file mode 100644 index 6a63223a..00000000 --- a/docs/doxygen/html/classScaleOp__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classScaleOp__coll__graph.md5 b/docs/doxygen/html/classScaleOp__coll__graph.md5 deleted file mode 100644 index 7f00c2ea..00000000 --- a/docs/doxygen/html/classScaleOp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f6c97a3eb044af4ed3b0e377a0e8c0ee \ No newline at end of file diff --git a/docs/doxygen/html/classScaleOp__coll__graph.png b/docs/doxygen/html/classScaleOp__coll__graph.png deleted file mode 100644 index 66a2e9af..00000000 Binary files a/docs/doxygen/html/classScaleOp__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classScaleOp__inherit__graph.map b/docs/doxygen/html/classScaleOp__inherit__graph.map deleted file mode 100644 index 6a63223a..00000000 --- a/docs/doxygen/html/classScaleOp__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classScaleOp__inherit__graph.md5 b/docs/doxygen/html/classScaleOp__inherit__graph.md5 deleted file mode 100644 index 340b0570..00000000 --- a/docs/doxygen/html/classScaleOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -42743fb3706aa802302c6d6de814e838 \ No newline at end of file diff --git a/docs/doxygen/html/classScaleOp__inherit__graph.png b/docs/doxygen/html/classScaleOp__inherit__graph.png deleted file mode 100644 index 66a2e9af..00000000 Binary files a/docs/doxygen/html/classScaleOp__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classSignedDistanceFunction-members.html b/docs/doxygen/html/classSignedDistanceFunction-members.html deleted file mode 100644 index 235f47ce..00000000 --- a/docs/doxygen/html/classSignedDistanceFunction-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SignedDistanceFunction< T > Member List
-
-
- -

This is the complete list of members for SignedDistanceFunction< T >, including all inherited members.

- - - - - - - - -
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
signedDistance(const Vec3T< T > &a_point) const noexcept=0SignedDistanceFunction< T >pure virtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
- - - - diff --git a/docs/doxygen/html/classSignedDistanceFunction.html b/docs/doxygen/html/classSignedDistanceFunction.html deleted file mode 100644 index 9ba50fa3..00000000 --- a/docs/doxygen/html/classSignedDistanceFunction.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - -EBGeometry: SignedDistanceFunction< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SignedDistanceFunction< T > Class Template Referenceabstract
-
-
- -

Abstract representation of a signed distance function. - More...

- -

#include <EBGeometry_SignedDistanceFunction.hpp>

-
-Inheritance diagram for SignedDistanceFunction< T >:
-
-
Inheritance graph
- - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - -

-Public Member Functions

SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
virtual T signedDistance (const Vec3T< T > &a_point) const noexcept=0
 Signed distance function. More...
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - -

-Protected Member Functions

-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
- - - - -

-Protected Attributes

-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
-

Detailed Description

-

template<class T>
-class SignedDistanceFunction< T >

- -

Abstract representation of a signed distance function.

-

Users can put whatever they like in here, e.g. analytic functions, DCEL meshes, or DCEL meshes stored in full or compact BVH trees. The signedDistance function must be implemented by the user. When computing it, the user can apply transformation operators (rotations, scaling, translations) by calling transformPoint on the input coordinate.

-

Member Function Documentation

- -

◆ rotate()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SignedDistanceFunction< T >::rotate (const T a_angle,
const int a_axis 
)
-
-inlinenoexcept
-
- -

Rotate the signed distance function around.

-
Parameters
- - - -
[in]a_angleRotation angle
[in]a_axisRotation axis. 0 = x, 1 = y etc.
-
-
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
virtual T SignedDistanceFunction< T >::signedDistance (const Vec3T< T > & a_point) const
-
-pure virtualnoexcept
-
- -

Signed distance function.

-
Parameters
- - -
[in]a_point3D point.
-
-
- -

Implemented in CylinderSDF< T >, TorusSDF< T >, BoxSDF< T >, SphereSDF< T >, UnionBVH< T, BV, K >, and Union< T >.

- -
-
- -

◆ translate()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
void SignedDistanceFunction< T >::translate (const Vec3T< T > & a_translation)
-
-inlinenoexcept
-
- -

Translate signed distance function.

-
Parameters
- - -
[in]a_translationDistance to translate the function.
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.map b/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.map deleted file mode 100644 index 0b960a2f..00000000 --- a/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.md5 b/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.md5 deleted file mode 100644 index 0fba6594..00000000 --- a/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d154acc752da4e2d22337802d05077e7 \ No newline at end of file diff --git a/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.png b/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.png deleted file mode 100644 index 57c6e452..00000000 Binary files a/docs/doxygen/html/classSignedDistanceFunction__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classSphereSDF-members.html b/docs/doxygen/html/classSphereSDF-members.html deleted file mode 100644 index 9854fcec..00000000 --- a/docs/doxygen/html/classSphereSDF-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SphereSDF< T > Member List
-
-
- -

This is the complete list of members for SphereSDF< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
getCenter() const noexceptSphereSDF< T >inline
getCenter() noexceptSphereSDF< T >inline
getRadius() const noexceptSphereSDF< T >inline
getRadius() noexceptSphereSDF< T >inline
m_centerSphereSDF< T >protected
m_flipInsideSphereSDF< T >protected
m_radiusSphereSDF< T >protected
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
signedDistance(const Vec3T< T > &a_point) const noexcept overrideSphereSDF< T >inlinevirtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
SphereSDF()=deleteSphereSDF< T >
SphereSDF(const Vec3T< T > &a_center, const T &a_radius, const bool a_flipInside)SphereSDF< T >inline
SphereSDF(const SphereSDF &a_other)SphereSDF< T >inline
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
~SphereSDF()=defaultSphereSDF< T >virtual
- - - - diff --git a/docs/doxygen/html/classSphereSDF.html b/docs/doxygen/html/classSphereSDF.html deleted file mode 100644 index fa8afd6c..00000000 --- a/docs/doxygen/html/classSphereSDF.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - -EBGeometry: SphereSDF< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SphereSDF< T > Class Template Reference
-
-
- -

Signed distance field for sphere. - More...

- -

#include <EBGeometry_AnalyticDistanceFunctions.hpp>

-
-Inheritance diagram for SphereSDF< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for SphereSDF< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

SphereSDF ()=delete
 Disallowed weak construction.
 
 SphereSDF (const Vec3T< T > &a_center, const T &a_radius, const bool a_flipInside)
 Default constructor. More...
 
SphereSDF (const SphereSDF &a_other)
 Copy constructor.
 
-virtual ~SphereSDF ()=default
 Destructor.
 
-const Vec3T< T > & getCenter () const noexcept
 Get center.
 
-Vec3T< T > & getCenter () noexcept
 Get center.
 
-const T & getRadius () const noexcept
 Get radius.
 
-T & getRadius () noexcept
 Get radius.
 
virtual T signedDistance (const Vec3T< T > &a_point) const noexcept override
 Signed distance function for sphere. More...
 
- Public Member Functions inherited from SignedDistanceFunction< T >
SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - - - - - - - - - - - -

-Protected Attributes

-Vec3T< T > m_center
 Sphere center.
 
-T m_radius
 Sphere radius.
 
-bool m_flipInside
 For flipping sign.
 
- Protected Attributes inherited from SignedDistanceFunction< T >
-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from SignedDistanceFunction< T >
-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
-

Detailed Description

-

template<class T>
-class SphereSDF< T >

- -

Signed distance field for sphere.

-

Constructor & Destructor Documentation

- -

◆ SphereSDF()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
SphereSDF< T >::SphereSDF (const Vec3T< T > & a_center,
const T & a_radius,
const bool a_flipInside 
)
-
-inline
-
- -

Default constructor.

-
Parameters
- - - - -
[in]a_centerSphere center
[in]a_radiusSphere radius
[in]a_flipInsideFlip inside or not
-
-
- -
-
-

Member Function Documentation

- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
virtual T SphereSDF< T >::signedDistance (const Vec3T< T > & a_point) const
-
-inlineoverridevirtualnoexcept
-
- -

Signed distance function for sphere.

-
Parameters
- - -
[in]a_pointPosition.
-
-
- -

Implements SignedDistanceFunction< T >.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/doxygen/html/classSphereSDF__coll__graph.map b/docs/doxygen/html/classSphereSDF__coll__graph.map deleted file mode 100644 index 493108dc..00000000 --- a/docs/doxygen/html/classSphereSDF__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classSphereSDF__coll__graph.md5 b/docs/doxygen/html/classSphereSDF__coll__graph.md5 deleted file mode 100644 index 467a4ef5..00000000 --- a/docs/doxygen/html/classSphereSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d31bae65254dd6c030951a4f5409785b \ No newline at end of file diff --git a/docs/doxygen/html/classSphereSDF__coll__graph.png b/docs/doxygen/html/classSphereSDF__coll__graph.png deleted file mode 100644 index 92204e84..00000000 Binary files a/docs/doxygen/html/classSphereSDF__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classSphereSDF__inherit__graph.map b/docs/doxygen/html/classSphereSDF__inherit__graph.map deleted file mode 100644 index 493108dc..00000000 --- a/docs/doxygen/html/classSphereSDF__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classSphereSDF__inherit__graph.md5 b/docs/doxygen/html/classSphereSDF__inherit__graph.md5 deleted file mode 100644 index 1f10b33b..00000000 --- a/docs/doxygen/html/classSphereSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -208a5ea8b27b6b280eb4294b808ce2f7 \ No newline at end of file diff --git a/docs/doxygen/html/classSphereSDF__inherit__graph.png b/docs/doxygen/html/classSphereSDF__inherit__graph.png deleted file mode 100644 index 92204e84..00000000 Binary files a/docs/doxygen/html/classSphereSDF__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classTorusSDF-members.html b/docs/doxygen/html/classTorusSDF-members.html deleted file mode 100644 index b18d8f5e..00000000 --- a/docs/doxygen/html/classTorusSDF-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
TorusSDF< T > Member List
-
-
- -

This is the complete list of members for TorusSDF< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
getCenter() const noexceptTorusSDF< T >inline
getCenter() noexceptTorusSDF< T >inline
getMajorRadius() const noexceptTorusSDF< T >inline
getMajorRadius() noexceptTorusSDF< T >inline
getMinorRadius() const noexceptTorusSDF< T >inline
getMinorRadius() noexceptTorusSDF< T >inline
m_centerTorusSDF< T >protected
m_flipInsideTorusSDF< T >protected
m_majorRadiusTorusSDF< T >protected
m_minorRadiusTorusSDF< T >protected
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
signedDistance(const Vec3T< T > &a_point) const noexcept overrideTorusSDF< T >inlinevirtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
TorusSDF()=deleteTorusSDF< T >
TorusSDF(const Vec3T< T > &a_center, const T &a_majorRadius, const T &a_minorRadius, const bool a_flipInside)TorusSDF< T >inline
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
~TorusSDF()TorusSDF< T >inlinevirtual
- - - - diff --git a/docs/doxygen/html/classTorusSDF.html b/docs/doxygen/html/classTorusSDF.html deleted file mode 100644 index fd17bbf1..00000000 --- a/docs/doxygen/html/classTorusSDF.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - - -EBGeometry: TorusSDF< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
TorusSDF< T > Class Template Reference
-
-
- -

Signed distance field for a torus. - More...

- -

#include <EBGeometry_AnalyticDistanceFunctions.hpp>

-
-Inheritance diagram for TorusSDF< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for TorusSDF< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

TorusSDF ()=delete
 Disallowed weak construction.
 
 TorusSDF (const Vec3T< T > &a_center, const T &a_majorRadius, const T &a_minorRadius, const bool a_flipInside)
 Full constructor. More...
 
-virtual ~TorusSDF ()
 Destructor (does nothing).
 
const Vec3T< T > & getCenter () const noexcept
 Get torus center. More...
 
Vec3T< T > & getCenter () noexcept
 Get torus center. More...
 
const T & getMajorRadius () const noexcept
 Get major radius. More...
 
T & getMajorRadius () noexcept
 Get major radius. More...
 
const T & getMinorRadius () const noexcept
 Get minor radius. More...
 
T & getMinorRadius () noexcept
 Get minor radius. More...
 
virtual T signedDistance (const Vec3T< T > &a_point) const noexcept override
 Signed distance function for a torus. More...
 
- Public Member Functions inherited from SignedDistanceFunction< T >
SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - - - - - - - - - - - - - - -

-Protected Attributes

-Vec3T< T > m_center
 Torus center.
 
-T m_majorRadius
 Major torus radius.
 
-T m_minorRadius
 Minor torus radius.
 
-bool m_flipInside
 Hook for making outside -> inside.
 
- Protected Attributes inherited from SignedDistanceFunction< T >
-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from SignedDistanceFunction< T >
-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
-

Detailed Description

-

template<class T>
-class TorusSDF< T >

- -

Signed distance field for a torus.

-

This is constructed such that the donut lies in the xy-plane.

-

Constructor & Destructor Documentation

- -

◆ TorusSDF()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TorusSDF< T >::TorusSDF (const Vec3T< T > & a_center,
const T & a_majorRadius,
const T & a_minorRadius,
const bool a_flipInside 
)
-
-inline
-
- -

Full constructor.

-
Parameters
- - - - - -
[in]a_centerTorus center.
[in]a_majorRadiusMajor torus radius.
[in]a_minorRadiusMinor torus radius.
[in]a_flipInsideFlip inside/outside.
-
-
- -
-
-

Member Function Documentation

- -

◆ getCenter() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const Vec3T<T>& TorusSDF< T >::getCenter () const
-
-inlinenoexcept
-
- -

Get torus center.

-
Returns
m_center
- -
-
- -

◆ getCenter() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
Vec3T<T>& TorusSDF< T >::getCenter ()
-
-inlinenoexcept
-
- -

Get torus center.

-
Returns
m_center
- -
-
- -

◆ getMajorRadius() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const T& TorusSDF< T >::getMajorRadius () const
-
-inlinenoexcept
-
- -

Get major radius.

-
Returns
m_majorRadius
- -
-
- -

◆ getMajorRadius() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T& TorusSDF< T >::getMajorRadius ()
-
-inlinenoexcept
-
- -

Get major radius.

-
Returns
m_majorRadius
- -
-
- -

◆ getMinorRadius() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
const T& TorusSDF< T >::getMinorRadius () const
-
-inlinenoexcept
-
- -

Get minor radius.

-
Returns
m_minorRadius
- -
-
- -

◆ getMinorRadius() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T& TorusSDF< T >::getMinorRadius ()
-
-inlinenoexcept
-
- -

Get minor radius.

-
Returns
m_minorRadius
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
virtual T TorusSDF< T >::signedDistance (const Vec3T< T > & a_point) const
-
-inlineoverridevirtualnoexcept
-
- -

Signed distance function for a torus.

-
Parameters
- - -
[in]a_pointPosition.
-
-
- -

Implements SignedDistanceFunction< T >.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/doxygen/html/classTorusSDF__coll__graph.map b/docs/doxygen/html/classTorusSDF__coll__graph.map deleted file mode 100644 index b6ca340e..00000000 --- a/docs/doxygen/html/classTorusSDF__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classTorusSDF__coll__graph.md5 b/docs/doxygen/html/classTorusSDF__coll__graph.md5 deleted file mode 100644 index f20c6dab..00000000 --- a/docs/doxygen/html/classTorusSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2131be509e0becf82049dd530046b988 \ No newline at end of file diff --git a/docs/doxygen/html/classTorusSDF__coll__graph.png b/docs/doxygen/html/classTorusSDF__coll__graph.png deleted file mode 100644 index f8d83263..00000000 Binary files a/docs/doxygen/html/classTorusSDF__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classTorusSDF__inherit__graph.map b/docs/doxygen/html/classTorusSDF__inherit__graph.map deleted file mode 100644 index b6ca340e..00000000 --- a/docs/doxygen/html/classTorusSDF__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classTorusSDF__inherit__graph.md5 b/docs/doxygen/html/classTorusSDF__inherit__graph.md5 deleted file mode 100644 index 8ce11cd9..00000000 --- a/docs/doxygen/html/classTorusSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6119b30e17bafff66e94a044a6feed7b \ No newline at end of file diff --git a/docs/doxygen/html/classTorusSDF__inherit__graph.png b/docs/doxygen/html/classTorusSDF__inherit__graph.png deleted file mode 100644 index f8d83263..00000000 Binary files a/docs/doxygen/html/classTorusSDF__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classTransformOp-members.html b/docs/doxygen/html/classTransformOp-members.html deleted file mode 100644 index eebe705c..00000000 --- a/docs/doxygen/html/classTransformOp-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
TransformOp< T > Member List
-
-
- -

This is the complete list of members for TransformOp< T >, including all inherited members.

- - - - -
transform(const Vec3T< T > &a_inputPoint) const noexcept=0TransformOp< T >pure virtual
TransformOp()=defaultTransformOp< T >
~TransformOp()=defaultTransformOp< T >virtual
- - - - diff --git a/docs/doxygen/html/classTransformOp.html b/docs/doxygen/html/classTransformOp.html deleted file mode 100644 index 4adee3e4..00000000 --- a/docs/doxygen/html/classTransformOp.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -EBGeometry: TransformOp< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
TransformOp< T > Class Template Referenceabstract
-
-
- -

Base class for transformation operators. - More...

- -

#include <EBGeometry_TransformOps.hpp>

-
-Inheritance diagram for TransformOp< T >:
-
-
Inheritance graph
- - - - -
[legend]
- - - - - - - - - - - -

-Public Member Functions

TransformOp ()=default
 Default constructor.
 
-virtual ~TransformOp ()=default
 Destructor.
 
virtual Vec3T< T > transform (const Vec3T< T > &a_inputPoint) const noexcept=0
 Transform input coordinate. More...
 
-

Detailed Description

-

template<class T>
-class TransformOp< T >

- -

Base class for transformation operators.

-

Member Function Documentation

- -

◆ transform()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
virtual Vec3T<T> TransformOp< T >::transform (const Vec3T< T > & a_inputPoint) const
-
-pure virtualnoexcept
-
- -

Transform input coordinate.

-
Parameters
- - -
[in]a_inputPointInput point
-
-
-
Returns
Returns transformed point.
- -

Implemented in RotateOp< T >, and TranslateOp< T >.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/doxygen/html/classTransformOp__inherit__graph.map b/docs/doxygen/html/classTransformOp__inherit__graph.map deleted file mode 100644 index 76eabb3b..00000000 --- a/docs/doxygen/html/classTransformOp__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/doxygen/html/classTransformOp__inherit__graph.md5 b/docs/doxygen/html/classTransformOp__inherit__graph.md5 deleted file mode 100644 index 905fc19d..00000000 --- a/docs/doxygen/html/classTransformOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b1d46dbb1058f87473277cae9b92f3d9 \ No newline at end of file diff --git a/docs/doxygen/html/classTransformOp__inherit__graph.png b/docs/doxygen/html/classTransformOp__inherit__graph.png deleted file mode 100644 index 714cbc95..00000000 Binary files a/docs/doxygen/html/classTransformOp__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classTranslateOp-members.html b/docs/doxygen/html/classTranslateOp-members.html deleted file mode 100644 index dd8e75b0..00000000 --- a/docs/doxygen/html/classTranslateOp-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
TranslateOp< T > Member List
-
-
- -

This is the complete list of members for TranslateOp< T >, including all inherited members.

- - - - - - - - -
m_translationTranslateOp< T >protected
transform(const Vec3T< T > &a_inputPoint) const noexcept overrideTranslateOp< T >virtual
TransformOp()=defaultTransformOp< T >
TranslateOp()TranslateOp< T >
TranslateOp(const Vec3T< T > &a_translation)TranslateOp< T >
~TransformOp()=defaultTransformOp< T >virtual
~TranslateOp()=defaultTranslateOp< T >virtual
- - - - diff --git a/docs/doxygen/html/classTranslateOp.html b/docs/doxygen/html/classTranslateOp.html deleted file mode 100644 index cff48a45..00000000 --- a/docs/doxygen/html/classTranslateOp.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -EBGeometry: TranslateOp< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
TranslateOp< T > Class Template Reference
-
-
- -

Translation operator. Can translate an input point. - More...

- -

#include <EBGeometry_TransformOps.hpp>

-
-Inheritance diagram for TranslateOp< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for TranslateOp< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

TranslateOp ()
 Default constructor.
 
TranslateOp (const Vec3T< T > &a_translation)
 Full constructor.
 
-virtual ~TranslateOp ()=default
 Destructor.
 
-Vec3T< T > transform (const Vec3T< T > &a_inputPoint) const noexcept override
 Transform input point.
 
- Public Member Functions inherited from TransformOp< T >
TransformOp ()=default
 Default constructor.
 
-virtual ~TransformOp ()=default
 Destructor.
 
- - - - -

-Protected Attributes

-Vec3T< T > m_translation
 Translation of input point.
 
-

Detailed Description

-

template<class T>
-class TranslateOp< T >

- -

Translation operator. Can translate an input point.

-

The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classTranslateOp__coll__graph.map b/docs/doxygen/html/classTranslateOp__coll__graph.map deleted file mode 100644 index a6d76bdb..00000000 --- a/docs/doxygen/html/classTranslateOp__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classTranslateOp__coll__graph.md5 b/docs/doxygen/html/classTranslateOp__coll__graph.md5 deleted file mode 100644 index 52d1a310..00000000 --- a/docs/doxygen/html/classTranslateOp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e8ed4c6a88d7574688b7606cec5dd88e \ No newline at end of file diff --git a/docs/doxygen/html/classTranslateOp__coll__graph.png b/docs/doxygen/html/classTranslateOp__coll__graph.png deleted file mode 100644 index f2787a7a..00000000 Binary files a/docs/doxygen/html/classTranslateOp__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classTranslateOp__inherit__graph.map b/docs/doxygen/html/classTranslateOp__inherit__graph.map deleted file mode 100644 index a6d76bdb..00000000 --- a/docs/doxygen/html/classTranslateOp__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classTranslateOp__inherit__graph.md5 b/docs/doxygen/html/classTranslateOp__inherit__graph.md5 deleted file mode 100644 index 7e3fda6c..00000000 --- a/docs/doxygen/html/classTranslateOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -afd519cf5e6a0e34a8d6feee1d652a7a \ No newline at end of file diff --git a/docs/doxygen/html/classTranslateOp__inherit__graph.png b/docs/doxygen/html/classTranslateOp__inherit__graph.png deleted file mode 100644 index f2787a7a..00000000 Binary files a/docs/doxygen/html/classTranslateOp__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classUnion-members.html b/docs/doxygen/html/classUnion-members.html deleted file mode 100644 index 7487ef02..00000000 --- a/docs/doxygen/html/classUnion-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Union< T > Member List
-
-
- -

This is the complete list of members for Union< T >, including all inherited members.

- - - - - - - - - - - - - - -
m_distanceFunctionsUnion< T >protected
m_flipSignUnion< T >protected
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
SDF typedefUnion< T >
signedDistance(const Vec3T< T > &a_point) const noexcept overrideUnion< T >virtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
Union()=deleteUnion< T >
Union(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)Union< T >
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
~Union()=defaultUnion< T >virtual
- - - - diff --git a/docs/doxygen/html/classUnion.html b/docs/doxygen/html/classUnion.html deleted file mode 100644 index 74eeae19..00000000 --- a/docs/doxygen/html/classUnion.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - -EBGeometry: Union< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
Union< T > Class Template Reference
-
-
- -

Distance function union. Computes the signed distance to the closest object of N non-overlapping objects. - More...

- -

#include <EBGeometry_Union.hpp>

-
-Inheritance diagram for Union< T >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for Union< T >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - -

-Public Types

-using SDF = SignedDistanceFunction< T >
 Alias for cutting down on typing.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

Union ()=delete
 Disallowed, use the full constructor.
 
 Union (const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)
 Full constructor. Computes the signed distance. More...
 
-virtual ~Union ()=default
 Destructor (does nothing)
 
signedDistance (const Vec3T< T > &a_point) const noexcept override
 Value function. More...
 
- Public Member Functions inherited from SignedDistanceFunction< T >
SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - - - - - - - - -

-Protected Attributes

-std::vector< std::shared_ptr< const SDF > > m_distanceFunctions
 List of distance functions.
 
-bool m_flipSign
 Hook for turning inside to outside.
 
- Protected Attributes inherited from SignedDistanceFunction< T >
-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from SignedDistanceFunction< T >
-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
-

Detailed Description

-

template<class T>
-class Union< T >

- -

Distance function union. Computes the signed distance to the closest object of N non-overlapping objects.

-
Note
This class only makes sense if the object do not overlap.
-

Constructor & Destructor Documentation

- -

◆ Union()

- -
-
-
-template<class T >
- - - - - - - - - - - - - - - - - - -
Union< T >::Union (const std::vector< std::shared_ptr< SDF > > & a_distanceFunctions,
const bool a_flipSign 
)
-
- -

Full constructor. Computes the signed distance.

-
Parameters
- - - -
[in]a_distanceFunctionsDistance functions
[in]a_flipSignHook for turning inside to outside
-
-
- -
-
-

Member Function Documentation

- -

◆ signedDistance()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Union< T >::signedDistance (const Vec3T< T > & a_point) const
-
-overridevirtualnoexcept
-
- -

Value function.

-
Parameters
- - -
[in]a_point3D point.
-
-
- -

Implements SignedDistanceFunction< T >.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classUnionBVH-members.html b/docs/doxygen/html/classUnionBVH-members.html deleted file mode 100644 index e3689218..00000000 --- a/docs/doxygen/html/classUnionBVH-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
UnionBVH< T, BV, K > Member List
-
-
- -

This is the complete list of members for UnionBVH< T, BV, K >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - -
BuilderNode typedefUnionBVH< T, BV, K >protected
buildTree(const BVConstructor &a_bvConstructor)UnionBVH< T, BV, K >
BVConstructor typedefUnionBVH< T, BV, K >
LinearNode typedefUnionBVH< T, BV, K >protected
m_distanceFunctionsUnionBVH< T, BV, K >protected
m_flipSignUnionBVH< T, BV, K >protected
m_isGoodUnionBVH< T, BV, K >protected
m_rootNodeUnionBVH< T, BV, K >protected
m_transformOpsSignedDistanceFunction< T >protected
rotate(const T a_angle, const int a_axis) noexceptSignedDistanceFunction< T >inline
SDF typedefUnionBVH< T, BV, K >
SDFList typedefUnionBVH< T, BV, K >protected
signedDistance(const Vec3T< T > &a_point) const noexcept overrideUnionBVH< T, BV, K >virtual
SignedDistanceFunction()=defaultSignedDistanceFunction< T >
transformPoint(const Vec3T< T > &a_point) const noexceptSignedDistanceFunction< T >inlineprotected
translate(const Vec3T< T > &a_translation) noexceptSignedDistanceFunction< T >inline
UnionBVH()=deleteUnionBVH< T, BV, K >
UnionBVH(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)UnionBVH< T, BV, K >
UnionBVH(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign, const BVConstructor &a_bvConstructor)UnionBVH< T, BV, K >
~SignedDistanceFunction()=defaultSignedDistanceFunction< T >virtual
~UnionBVH()=defaultUnionBVH< T, BV, K >virtual
- - - - diff --git a/docs/doxygen/html/classUnionBVH.html b/docs/doxygen/html/classUnionBVH.html deleted file mode 100644 index 196e984b..00000000 --- a/docs/doxygen/html/classUnionBVH.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - -EBGeometry: UnionBVH< T, BV, K > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
UnionBVH< T, BV, K > Class Template Reference
-
-
- -

Distance function union using BVHs. Computes the signed distance to the closest object of N non-overlapping objects. - More...

- -

#include <EBGeometry_UnionBVH.hpp>

-
-Inheritance diagram for UnionBVH< T, BV, K >:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for UnionBVH< T, BV, K >:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - -

-Public Types

-using SDF = SignedDistanceFunction< T >
 Alias for cutting down on typing.
 
-using BVConstructor = EBGeometry::BVH::BVConstructorT< SDF, BV >
 Alias for cutting down on typing. This is a std::function<BV(SDF)>, i.e. a function which returns a bounding volume for an SDF.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

UnionBVH ()=delete
 Disallowed, use the full constructor.
 
 UnionBVH (const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)
 Partial constructor. Associates distance functions but does not build BVH tree. More...
 
 UnionBVH (const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign, const BVConstructor &a_bvConstructor)
 Full constructor. More...
 
void buildTree (const BVConstructor &a_bvConstructor)
 Build BVH tree for the input objects. User must supply a partitioner and a BV constructor for the SDF objects. More...
 
-virtual ~UnionBVH ()=default
 Destructor (does nothing)
 
signedDistance (const Vec3T< T > &a_point) const noexcept override
 Value function. More...
 
- Public Member Functions inherited from SignedDistanceFunction< T >
SignedDistanceFunction ()=default
 Disallowed, use the full constructor.
 
-virtual ~SignedDistanceFunction ()=default
 Destructor (does nothing)
 
void translate (const Vec3T< T > &a_translation) noexcept
 Translate signed distance function. More...
 
void rotate (const T a_angle, const int a_axis) noexcept
 Rotate the signed distance function around. More...
 
- - - - - - - - - - -

-Protected Types

-using SDFList = std::vector< std::shared_ptr< const SDF > >
 Alias for cutting down on typing.
 
-using BuilderNode = EBGeometry::BVH::NodeT< T, SDF, BV, K >
 Builder node type in BVH tree. Tree is constructed in "full".
 
-using LinearNode = EBGeometry::BVH::LinearBVH< T, SDF, BV, K >
 Node type in BVH tree. We use a flattened tree.
 
- - - - - - - - - - - - - - - - - -

-Protected Attributes

-std::vector< std::shared_ptr< const SDF > > m_distanceFunctions
 List of distance functions.
 
-std::shared_ptr< LinearNodem_rootNode
 Root node for BVH tree.
 
-bool m_isGood
 Is good or not.
 
-bool m_flipSign
 Hook for turning inside to outside.
 
- Protected Attributes inherited from SignedDistanceFunction< T >
-std::deque< std::shared_ptr< TransformOp< T > > > m_transformOps
 List of transformation operators for the signed distance field.
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from SignedDistanceFunction< T >
-Vec3T< T > transformPoint (const Vec3T< T > &a_point) const noexcept
 Apply transformation operators and move point.
 
-

Detailed Description

-

template<class T, class BV, int K>
-class UnionBVH< T, BV, K >

- -

Distance function union using BVHs. Computes the signed distance to the closest object of N non-overlapping objects.

-
Note
This class only makes sense if the object do not overlap.
-

Constructor & Destructor Documentation

- -

◆ UnionBVH() [1/2]

- -
-
-
-template<class T , class BV , int K>
- - - - - - - - - - - - - - - - - - -
UnionBVH< T, BV, K >::UnionBVH (const std::vector< std::shared_ptr< SDF > > & a_distanceFunctions,
const bool a_flipSign 
)
-
- -

Partial constructor. Associates distance functions but does not build BVH tree.

-
Parameters
- - - -
[in]a_distanceFunctionsSigned distance functions.
[in]a_flipSignHook for turning inside to outside
-
-
- -
-
- -

◆ UnionBVH() [2/2]

- -
-
-
-template<class T , class BV , int K>
- - - - - - - - - - - - - - - - - - - - - - - - -
UnionBVH< T, BV, K >::UnionBVH (const std::vector< std::shared_ptr< SDF > > & a_distanceFunctions,
const bool a_flipSign,
const BVConstructora_bvConstructor 
)
-
- -

Full constructor.

-
Parameters
- - - - -
[in]a_distanceFunctionsSigned distance functions.
[in]a_flipSignHook for turning inside to outside
[in]a_bvConstructorBounding volume constructor.
-
-
- -
-
-

Member Function Documentation

- -

◆ buildTree()

- -
-
-
-template<class T , class BV , int K>
- - - - - - - - -
void UnionBVH< T, BV, K >::buildTree (const BVConstructora_bvConstructor)
-
- -

Build BVH tree for the input objects. User must supply a partitioner and a BV constructor for the SDF objects.

-
Parameters
- - -
[in]a_bvConstructorConstructor for building a bounding volume that encloses an object.
-
-
- -
-
- -

◆ signedDistance()

- -
-
-
-template<class T , class BV , int K>
- - - - - -
- - - - - - - - -
T UnionBVH< T, BV, K >::signedDistance (const Vec3T< T > & a_point) const
-
-overridevirtualnoexcept
-
- -

Value function.

-
Parameters
- - -
[in]a_point3D point.
-
-
- -

Implements SignedDistanceFunction< T >.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classUnionBVH__coll__graph.map b/docs/doxygen/html/classUnionBVH__coll__graph.map deleted file mode 100644 index 076719e9..00000000 --- a/docs/doxygen/html/classUnionBVH__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classUnionBVH__coll__graph.md5 b/docs/doxygen/html/classUnionBVH__coll__graph.md5 deleted file mode 100644 index 894879f4..00000000 --- a/docs/doxygen/html/classUnionBVH__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -89260ebc0c4910bc19f4d7f598b390c8 \ No newline at end of file diff --git a/docs/doxygen/html/classUnionBVH__coll__graph.png b/docs/doxygen/html/classUnionBVH__coll__graph.png deleted file mode 100644 index 7dae05e5..00000000 Binary files a/docs/doxygen/html/classUnionBVH__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classUnionBVH__inherit__graph.map b/docs/doxygen/html/classUnionBVH__inherit__graph.map deleted file mode 100644 index 076719e9..00000000 --- a/docs/doxygen/html/classUnionBVH__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classUnionBVH__inherit__graph.md5 b/docs/doxygen/html/classUnionBVH__inherit__graph.md5 deleted file mode 100644 index f8d96020..00000000 --- a/docs/doxygen/html/classUnionBVH__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d7ced99dce532dc8db25c358f7b67e7a \ No newline at end of file diff --git a/docs/doxygen/html/classUnionBVH__inherit__graph.png b/docs/doxygen/html/classUnionBVH__inherit__graph.png deleted file mode 100644 index 7dae05e5..00000000 Binary files a/docs/doxygen/html/classUnionBVH__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classUnion__coll__graph.map b/docs/doxygen/html/classUnion__coll__graph.map deleted file mode 100644 index 0a835f0a..00000000 --- a/docs/doxygen/html/classUnion__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classUnion__coll__graph.md5 b/docs/doxygen/html/classUnion__coll__graph.md5 deleted file mode 100644 index 34d26c02..00000000 --- a/docs/doxygen/html/classUnion__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d9d57de9e37f5aec4de4fe627c6961fe \ No newline at end of file diff --git a/docs/doxygen/html/classUnion__coll__graph.png b/docs/doxygen/html/classUnion__coll__graph.png deleted file mode 100644 index 1c8218bb..00000000 Binary files a/docs/doxygen/html/classUnion__coll__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classUnion__inherit__graph.map b/docs/doxygen/html/classUnion__inherit__graph.map deleted file mode 100644 index 0a835f0a..00000000 --- a/docs/doxygen/html/classUnion__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/classUnion__inherit__graph.md5 b/docs/doxygen/html/classUnion__inherit__graph.md5 deleted file mode 100644 index b07d3252..00000000 --- a/docs/doxygen/html/classUnion__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -47f52e51ce3f11a9251cc3778b71cd81 \ No newline at end of file diff --git a/docs/doxygen/html/classUnion__inherit__graph.png b/docs/doxygen/html/classUnion__inherit__graph.png deleted file mode 100644 index 1c8218bb..00000000 Binary files a/docs/doxygen/html/classUnion__inherit__graph.png and /dev/null differ diff --git a/docs/doxygen/html/classVec2T-members.html b/docs/doxygen/html/classVec2T-members.html deleted file mode 100644 index f80b0cfc..00000000 --- a/docs/doxygen/html/classVec2T-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Vec2T< T > Member List
-
-
- -

This is the complete list of members for Vec2T< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - -
dot(const Vec2T &a_other) const noexceptVec2T< T >inline
infinity() noexceptVec2T< T >inlinestatic
length() const noexceptVec2T< T >inline
length2() const noexceptVec2T< T >inline
max() noexceptVec2T< T >inlinestatic
min() noexceptVec2T< T >inlinestatic
one() noexceptVec2T< T >inlinestatic
operator*(const T &s) const noexceptVec2T< T >inline
operator*=(const T &s) noexceptVec2T< T >inline
operator+(const Vec2T &a_other) const noexceptVec2T< T >inline
operator+=(const Vec2T &a_other) noexceptVec2T< T >inline
operator-(const Vec2T &a_other) const noexceptVec2T< T >inline
operator-() const noexceptVec2T< T >inline
operator-=(const Vec2T &a_other) noexceptVec2T< T >inline
operator/(const T &s) const noexceptVec2T< T >inline
operator/=(const T &s) noexceptVec2T< T >inline
operator=(const Vec2T &a_other) noexceptVec2T< T >inline
Vec2T()Vec2T< T >inline
Vec2T(const Vec2T &u)Vec2T< T >inline
Vec2T(const T &a_x, const T &a_y)Vec2T< T >inline
xVec2T< T >
yVec2T< T >
zero() noexceptVec2T< T >inlinestatic
~Vec2T()=defaultVec2T< T >
- - - - diff --git a/docs/doxygen/html/classVec2T.html b/docs/doxygen/html/classVec2T.html deleted file mode 100644 index b2bb6b79..00000000 --- a/docs/doxygen/html/classVec2T.html +++ /dev/null @@ -1,702 +0,0 @@ - - - - - - - -EBGeometry: Vec2T< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Two-dimensional vector class with arithmetic operators. - More...

- -

#include <EBGeometry_Vec.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

Vec2T ()
 Default constructor. Sets the vector to the zero vector.
 
 Vec2T (const Vec2T &u)
 Copy constructor. More...
 
 Vec2T (const T &a_x, const T &a_y)
 Full constructor. More...
 
~Vec2T ()=default
 Destructor (does nothing)
 
Vec2T< T > & operator= (const Vec2T &a_other) noexcept
 Assignment operator. Sets this.x = a_other.x and this.y = a_other.y. More...
 
Vec2T< T > operator+ (const Vec2T &a_other) const noexcept
 Addition operator. More...
 
Vec2T< T > operator- (const Vec2T &a_other) const noexcept
 Subtraction operator. More...
 
-Vec2T< T > operator- () const noexcept
 Negation operator. Returns a new Vec2T<T> with negated components.
 
Vec2T< T > operator* (const T &s) const noexcept
 Multiplication operator. More...
 
Vec2T< T > operator/ (const T &s) const noexcept
 Division operator. More...
 
Vec2T< T > & operator+= (const Vec2T &a_other) noexcept
 Addition operator. More...
 
Vec2T< T > & operator-= (const Vec2T &a_other) noexcept
 Subtraction operator. More...
 
Vec2T< T > & operator*= (const T &s) noexcept
 Multiplication operator. More...
 
Vec2T< T > & operator/= (const T &s) noexcept
 Division operator operator. More...
 
dot (const Vec2T &a_other) const noexcept
 Dot product operator. More...
 
length () const noexcept
 Compute length of vector. More...
 
length2 () const noexcept
 Compute square of vector. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

-static constexpr Vec2T< T > zero () noexcept
 Return av vector with x = y = 0.
 
-static constexpr Vec2T< T > one () noexcept
 Return av vector with x = y = 1.
 
-static constexpr Vec2T< T > min () noexcept
 Return minimum possible representative vector.
 
-static constexpr Vec2T< T > max () noexcept
 Return maximum possible representative vector.
 
-static constexpr Vec2T< T > infinity () noexcept
 Return a vector with inf components.
 
- - - - - - - -

-Public Attributes

-T x
 First component in the vector.
 
-T y
 Second component in the vector.
 
-

Detailed Description

-

template<class T>
-class Vec2T< T >

- -

Two-dimensional vector class with arithmetic operators.

-

The class has a public-only interface. To change it's components one can call the member functions, or set components directly, e.g. vec.x = 5.0

Note
Vec2T is a templated class primarily used with DCEL grids.
-

Constructor & Destructor Documentation

- -

◆ Vec2T() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T >::Vec2T (const Vec2T< T > & u)
-
-inline
-
- -

Copy constructor.

-
Parameters
- - -
[in]uOther vector
-
-
-

Sets *this = u

- -
-
- -

◆ Vec2T() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Vec2T< T >::Vec2T (const T & a_x,
const T & a_y 
)
-
-inline
-
- -

Full constructor.

-
Parameters
- - - -
[in]a_xFirst vector component
[in]a_ySecond vector component
-
-
-

Sets this->x = a_x and this->y = a_y

- -
-
-

Member Function Documentation

- -

◆ dot()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Vec2T< T >::dot (const Vec2T< T > & a_other) const
-
-inlinenoexcept
-
- -

Dot product operator.

-
Parameters
- - -
[in]a_otherother vector
-
-
-

Returns the dot product, i.e. this->x*a_other.x + this->y+a_other.y

- -
-
- -

◆ length()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T Vec2T< T >::length () const
-
-inlinenoexcept
-
- -

Compute length of vector.

-
Returns
Returns length of vector, i.e. sqrt[(this->x)*(this->x) + (this->y)*(this->y)]
- -
-
- -

◆ length2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T Vec2T< T >::length2 () const
-
-inlinenoexcept
-
- -

Compute square of vector.

-
Returns
Returns length of vector, i.e. (this->x)*(this->x) + (this->y)*(this->y)
- -
-
- -

◆ operator*()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > Vec2T< T >::operator* (const T & s) const
-
-inlinenoexcept
-
- -

Multiplication operator.

-
Parameters
- - -
[in]sScalar to be multiplied
-
-
-

Returns a new Vec2T<T> with components x = s*this->x (and same for y)

- -
-
- -

◆ operator*=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > & Vec2T< T >::operator*= (const T & s)
-
-inlinenoexcept
-
- -

Multiplication operator.

-
Parameters
- - -
[in]sScalar to multiply by
-
-
-

Returns (*this) with components this->x = s*this->x (and same for y)

- -
-
- -

◆ operator+()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > Vec2T< T >::operator+ (const Vec2T< T > & a_other) const
-
-inlinenoexcept
-
- -

Addition operator.

-
Parameters
- - -
[in]a_otherOther vector
-
-
-

Returns a new object with component x = this->x + a_other.x (same for y-component)

- -
-
- -

◆ operator+=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > & Vec2T< T >::operator+= (const Vec2T< T > & a_other)
-
-inlinenoexcept
-
- -

Addition operator.

-
Parameters
- - -
[in]a_otherOther vector to add
-
-
-

Returns (*this) with components this->x = this->x + a_other.x (and same for y)

- -
-
- -

◆ operator-()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > Vec2T< T >::operator- (const Vec2T< T > & a_other) const
-
-inlinenoexcept
-
- -

Subtraction operator.

-
Parameters
- - -
[in]a_otherOther vector
-
-
-

Returns a new object with component x = this->x - a_other.x (same for y-component)

- -
-
- -

◆ operator-=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > & Vec2T< T >::operator-= (const Vec2T< T > & a_other)
-
-inlinenoexcept
-
- -

Subtraction operator.

-
Parameters
- - -
[in]a_otherOther vector to subtract
-
-
-

Returns (*this) with components this->x = this->x - a_other.x (and same for y)

- -
-
- -

◆ operator/()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > Vec2T< T >::operator/ (const T & s) const
-
-inlinenoexcept
-
- -

Division operator.

-
Parameters
- - -
[in]sScalar to be multiplied
-
-
-

Returns a new Vec2T<T> with components x = (1/s)*this->x (and same for y)

- -
-
- -

◆ operator/=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > & Vec2T< T >::operator/= (const T & s)
-
-inlinenoexcept
-
- -

Division operator operator.

-
Parameters
- - -
[in]sScalar to divide by
-
-
-

Returns (*this) with components this->x = (1/s)*this->x (and same for y)

- -
-
- -

◆ operator=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec2T< T > & Vec2T< T >::operator= (const Vec2T< T > & a_other)
-
-inlinenoexcept
-
- -

Assignment operator. Sets this.x = a_other.x and this.y = a_other.y.

-
Parameters
- - -
[in]a_otherOther vector
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classVec3T-members.html b/docs/doxygen/html/classVec3T-members.html deleted file mode 100644 index 99f6a30e..00000000 --- a/docs/doxygen/html/classVec3T-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -EBGeometry: Member List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Vec3T< T > Member List
-
-
- -

This is the complete list of members for Vec3T< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cross(const Vec3T< T > &u) const noexceptVec3T< T >inline
dot(const Vec3T< T > &u) const noexceptVec3T< T >inline
infinity() noexceptVec3T< T >inlinestatic
length() const noexceptVec3T< T >inline
length2() const noexceptVec3T< T >inline
max() noexceptVec3T< T >inlinestatic
max(const Vec3T< T > &u) noexceptVec3T< T >inline
maxDir(const bool a_doAbs) const noexceptVec3T< T >inline
min() noexceptVec3T< T >inlinestatic
min(const Vec3T< T > &u) noexceptVec3T< T >inline
minDir(const bool a_doAbs) const noexceptVec3T< T >inline
one() noexceptVec3T< T >inlinestatic
operator*(const T &s) const noexceptVec3T< T >inline
operator*(const Vec3T< T > &s) const noexceptVec3T< T >inline
operator*=(const T &s) noexceptVec3T< T >inline
operator+(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator+=(const Vec3T< T > &u) noexceptVec3T< T >inline
operator-(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator-() const noexceptVec3T< T >inline
operator-=(const Vec3T< T > &u) noexceptVec3T< T >inline
operator/(const T &s) const noexceptVec3T< T >inline
operator/(const Vec3T< T > &v) const noexceptVec3T< T >inline
operator/=(const T &s) noexceptVec3T< T >inline
operator<(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator<=(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator=(const Vec3T< T > &u) noexceptVec3T< T >inline
operator==(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator>(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator>=(const Vec3T< T > &u) const noexceptVec3T< T >inline
operator[](int i) noexceptVec3T< T >inline
operator[](int i) const noexceptVec3T< T >inline
Vec3T()Vec3T< T >inline
Vec3T(const Vec3T< T > &a_u)Vec3T< T >inline
Vec3T(const T &a_x, const T &a_y, const T &a_z)Vec3T< T >inline
XVec3T< T >protected
zero() noexceptVec3T< T >inlinestatic
~Vec3T()=defaultVec3T< T >
- - - - diff --git a/docs/doxygen/html/classVec3T.html b/docs/doxygen/html/classVec3T.html deleted file mode 100644 index 56554d12..00000000 --- a/docs/doxygen/html/classVec3T.html +++ /dev/null @@ -1,1258 +0,0 @@ - - - - - - - -EBGeometry: Vec3T< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Three-dimensional vector class with arithmetic operators. - More...

- -

#include <EBGeometry_Vec.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

Vec3T ()
 Default constructor. Sets the vector to the zero vector.
 
 Vec3T (const Vec3T< T > &a_u)
 Copy constructor. More...
 
 Vec3T (const T &a_x, const T &a_y, const T &a_z)
 Full constructor. More...
 
~Vec3T ()=default
 Destructor (does nothing)
 
T & operator[] (int i) noexcept
 Return component in vector. (i=0 => x and so on) More...
 
const T & operator[] (int i) const noexcept
 Return non-modifiable component in vector. (i=0 => x and so on) More...
 
bool operator== (const Vec3T< T > &u) const noexcept
 Comparison operator. Returns true if all components are the same. More...
 
bool operator< (const Vec3T< T > &u) const noexcept
 "Smaller than" operator. More...
 
bool operator> (const Vec3T< T > &u) const noexcept
 "Greater than" operator. More...
 
bool operator<= (const Vec3T< T > &u) const noexcept
 "Smaller or equal to" operator. More...
 
bool operator>= (const Vec3T< T > &u) const noexcept
 "Greater or equal to" operator. More...
 
Vec3T< T > & operator= (const Vec3T< T > &u) noexcept
 Assignment operator. Sets components equal to the argument vector's components. More...
 
Vec3T< T > operator+ (const Vec3T< T > &u) const noexcept
 Addition operator. Returns a new vector with added compoments. More...
 
Vec3T< T > operator- (const Vec3T< T > &u) const noexcept
 Subtraction operator. Returns a new vector with subtracted compoments. More...
 
-Vec3T< T > operator- () const noexcept
 Negation operator. Returns a vector with negated components.
 
Vec3T< T > operator* (const T &s) const noexcept
 Multiplication operator. Returns a vector with scalar multiplied components. More...
 
Vec3T< T > operator* (const Vec3T< T > &s) const noexcept
 Component-wise multiplication operator. More...
 
Vec3T< T > operator/ (const T &s) const noexcept
 Division operator. Returns a vector with scalar divided components. More...
 
Vec3T< T > operator/ (const Vec3T< T > &v) const noexcept
 Component-wise division operator. More...
 
Vec3T< T > & operator+= (const Vec3T< T > &u) noexcept
 Vector addition operator. More...
 
Vec3T< T > & operator-= (const Vec3T< T > &u) noexcept
 Vector subtraction operator. More...
 
Vec3T< T > & operator*= (const T &s) noexcept
 Vector multiplication operator. More...
 
Vec3T< T > & operator/= (const T &s) noexcept
 Vector division operator. More...
 
Vec3T< T > min (const Vec3T< T > &u) noexcept
 Vector minimum function. Returns a new vector with componentwise minimums. More...
 
Vec3T< T > max (const Vec3T< T > &u) noexcept
 Vector maximum function. Returns a new vector with componentwise maximums. More...
 
Vec3T< T > cross (const Vec3T< T > &u) const noexcept
 Vector cross product. More...
 
dot (const Vec3T< T > &u) const noexcept
 Vector dot product. More...
 
int minDir (const bool a_doAbs) const noexcept
 Return the direction which has the smallest component (can be absolute) More...
 
int maxDir (const bool a_doAbs) const noexcept
 Return the direction which has the largest component (can be absolute) More...
 
length () const noexcept
 Compute vector length. More...
 
length2 () const noexcept
 Compute vector length squared. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

-static constexpr Vec3T< T > zero () noexcept
 Return av vector with x = y = z = 0.
 
-static constexpr Vec3T< T > one () noexcept
 Return av vector with x = y = z = 1.
 
-static constexpr Vec3T< T > min () noexcept
 Return a vector with minimum representable components.
 
-static constexpr Vec3T< T > max () noexcept
 Return a vector with maximum representable components.
 
-static constexpr Vec3T< T > infinity () noexcept
 Return a vector with inf components.
 
- - - - -

-Protected Attributes

-T X [3]
 Vector components.
 
-

Detailed Description

-

template<class T>
-class Vec3T< T >

- -

Three-dimensional vector class with arithmetic operators.

-

The class has a public-only interface. To change it's components one can call the member functions, or set components directly, e.g. vec.x = 5.0

Note
Vec3T is a templated class primarily used with DCEL grids. It is always 3D, i.e. independent of Chombo configuration settings. This lets one use DCEL functionality even though the simulation might only be 2D.
-

Constructor & Destructor Documentation

- -

◆ Vec3T() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T >::Vec3T (const Vec3T< T > & a_u)
-
-inline
-
- -

Copy constructor.

-
Parameters
- - -
[in]a_uOther vector
-
-
-

Sets *this = u

- -
-
- -

◆ Vec3T() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Vec3T< T >::Vec3T (const T & a_x,
const T & a_y,
const T & a_z 
)
-
-inline
-
- -

Full constructor.

-
Parameters
- - - - -
[in]a_xFirst vector component
[in]a_ySecond vector component
[in]a_zThird vector component
-
-
-

Sets this->x = a_x, this->y = a_y, and this->z = a_z

- -
-
-

Member Function Documentation

- -

◆ cross()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::cross (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

Vector cross product.

-
Parameters
- - -
[in]uOther vector
-
-
-
Returns
Returns the cross product between (*this) and u
- -
-
- -

◆ dot()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T Vec3T< T >::dot (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

Vector dot product.

-
Parameters
- - -
[in]uOther vector
-
-
-
Returns
Returns the dot product between (*this) and u
- -
-
- -

◆ length()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T Vec3T< T >::length () const
-
-inlinenoexcept
-
- -

Compute vector length.

-
Returns
Returns the vector length, i.e. sqrt(X[0]*X[0] + X[1]*X[1] + Y[0]*Y[0])
- -
-
- -

◆ length2()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T Vec3T< T >::length2 () const
-
-inlinenoexcept
-
- -

Compute vector length squared.

-
Returns
Returns the vector length squared, i.e. (X[0]*X[0] + X[1]*X[1] + Y[0]*Y[0])
- -
-
- -

◆ max()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::max (const Vec3T< T > & u)
-
-inlinenoexcept
-
- -

Vector maximum function. Returns a new vector with componentwise maximums.

-
Parameters
- - -
[in]uOther vector
-
-
-
Returns
Returns a new vector with X[0] = std::minmax->X[0], u.X[0]) (and same for the other components)
- -
-
- -

◆ maxDir()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
int Vec3T< T >::maxDir (const bool a_doAbs) const
-
-inlinenoexcept
-
- -

Return the direction which has the largest component (can be absolute)

-
Parameters
- - -
[in]a_doAbsIf true, evaluate component magnitudes rather than values.
-
-
-
Returns
Direction with the biggest component
- -
-
- -

◆ min()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::min (const Vec3T< T > & u)
-
-inlinenoexcept
-
- -

Vector minimum function. Returns a new vector with componentwise minimums.

-
Parameters
- - -
[in]uOther vector
-
-
-
Returns
Returns a new vector with X[0] = std::min(this->X[0], u.X[0]) (and same for the other components)
- -
-
- -

◆ minDir()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
int Vec3T< T >::minDir (const bool a_doAbs) const
-
-inlinenoexcept
-
- -

Return the direction which has the smallest component (can be absolute)

-
Parameters
- - -
[in]a_doAbsIf true, evaluate component magnitudes rather than values.
-
-
-
Returns
Direction with the biggest component
- -
-
- -

◆ operator*() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::operator* (const T & s) const
-
-inlinenoexcept
-
- -

Multiplication operator. Returns a vector with scalar multiplied components.

-
Parameters
- - -
[in]sScalar to multiply by
-
-
-
Returns
Returns a new vector with X[i] = this->X[i] * s
- -
-
- -

◆ operator*() [2/2]

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
Vec3T<T> Vec3T< T >::operator* (const Vec3T< T > & s) const
-
-inlinenoexcept
-
- -

Component-wise multiplication operator.

-
Parameters
- - -
[in]sScalar to multiply by
-
-
-
Returns
Returns a new vector with X[i] = this->X[i] * s[i] for each component.
- -
-
- -

◆ operator*=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > & Vec3T< T >::operator*= (const T & s)
-
-inlinenoexcept
-
- -

Vector multiplication operator.

-
Parameters
- - -
[in]sScalar to multiply by
-
-
-
Returns
Returns (*this) with multiplied compoments, e.g. this->X[0] = this->X[0] * s
- -
-
- -

◆ operator+()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::operator+ (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

Addition operator. Returns a new vector with added compoments.

-
Returns
Returns a new vector with x = this->x - u.x and so on.
-
Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator+=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > & Vec3T< T >::operator+= (const Vec3T< T > & u)
-
-inlinenoexcept
-
- -

Vector addition operator.

-
Parameters
- - -
[in]uVector to add
-
-
-
Returns
Returns (*this) with incremented compoments, e.g. this->X[0] = this->X[0] + u.X[0]
- -
-
- -

◆ operator-()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::operator- (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

Subtraction operator. Returns a new vector with subtracted compoments.

-
Returns
Returns a new vector with x = this->x - u.x and so on.
-
Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator-=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > & Vec3T< T >::operator-= (const Vec3T< T > & u)
-
-inlinenoexcept
-
- -

Vector subtraction operator.

-
Parameters
- - -
[in]uVector to subtraction
-
-
-
Returns
Returns (*this) with subtracted compoments, e.g. this->X[0] = this->X[0] - u.X[0]
- -
-
- -

◆ operator/() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::operator/ (const T & s) const
-
-inlinenoexcept
-
- -

Division operator. Returns a vector with scalar divided components.

-
Parameters
- - -
[in]sScalar to divided by
-
-
-
Returns
Returns a new vector with X[i] = this->X[i] / s
- -
-
- -

◆ operator/() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > Vec3T< T >::operator/ (const Vec3T< T > & v) const
-
-inlinenoexcept
-
- -

Component-wise division operator.

-
Parameters
- - -
[in]vOther vector
-
-
-
Returns
Returns a new vector with X[i] = this->X[i]/v[i] for each component.
- -
-
- -

◆ operator/=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > & Vec3T< T >::operator/= (const T & s)
-
-inlinenoexcept
-
- -

Vector division operator.

-
Parameters
- - -
[in]sScalar to divide by
-
-
-
Returns
Returns (*this) with multiplied compoments, e.g. this->X[0] = this->X[0] / s
- -
-
- -

◆ operator<()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Vec3T< T >::operator< (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

"Smaller than" operator.

-

Returns true if this->x < u.x AND this->y < u.y AND this->z < u.z and false otherwise

Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator<=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Vec3T< T >::operator<= (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

"Smaller or equal to" operator.

-

Returns true if this->x <= u.x AND this->y <= u.y AND this->z <= u.z

Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
Vec3T< T > & Vec3T< T >::operator= (const Vec3T< T > & u)
-
-inlinenoexcept
-
- -

Assignment operator. Sets components equal to the argument vector's components.

-
Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator==()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Vec3T< T >::operator== (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

Comparison operator. Returns true if all components are the same.

-
Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator>()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Vec3T< T >::operator> (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

"Greater than" operator.

-

Returns true if this->x > u.x AND this->y > u.y AND this->z > u.z

Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator>=()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
bool Vec3T< T >::operator>= (const Vec3T< T > & u) const
-
-inlinenoexcept
-
- -

"Greater or equal to" operator.

-

Returns true if this->x >= u.x AND this->y >= u.y AND this->z >= u.z

Parameters
- - -
[in]uOther vector
-
-
- -
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
T & Vec3T< T >::operator[] (int i)
-
-inlinenoexcept
-
- -

Return component in vector. (i=0 => x and so on)

-
Parameters
- - -
[in]iIndex. Must be < 3
-
-
- -
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
const T & Vec3T< T >::operator[] (int i) const
-
-inlinenoexcept
-
- -

Return non-modifiable component in vector. (i=0 => x and so on)

-
Parameters
- - -
[in]iIndex. Must be < 3
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/doxygen/html/classes.html b/docs/doxygen/html/classes.html deleted file mode 100644 index 09505abd..00000000 --- a/docs/doxygen/html/classes.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -EBGeometry: Class Index - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Index
-
-
-
a | b | c | e | f | l | m | n | p | r | s | t | u | v
- - - - - - - - - - - - - - - -
  a  
-
EdgeT (Dcel)   
  n  
-
SphereSDF   Vec3T   
  f  
-
  t  
-
VertexT (Dcel)   
AABBT (BoundingVolumes)   NodeT (BVH)   
  b  
-
FaceT (Dcel)   
  p  
-
TorusSDF   
  l  
-
TransformOp   
BoundingSphereT (BoundingVolumes)   PLY (Dcel::Parser)   TranslateOp   
BoxSDF   LinearBVH (BVH)   Polygon2D (Dcel)   
  u  
-
  c  
-
LinearNodeT (BVH)   
  r  
-
  m  
-
Union   
CylinderSDF   RotateOp   UnionBVH   
  e  
-
MeshT (Dcel)   
  s  
-
  v  
-
EdgeIteratorT (Dcel)   SignedDistanceFunction   Vec2T   
-
a | b | c | e | f | l | m | n | p | r | s | t | u | v
-
- - - - diff --git a/docs/doxygen/html/closed.png b/docs/doxygen/html/closed.png deleted file mode 100644 index 98cc2c90..00000000 Binary files a/docs/doxygen/html/closed.png and /dev/null differ diff --git a/docs/doxygen/html/dir_74389ed8173ad57b461b9d623a1f3867.html b/docs/doxygen/html/dir_74389ed8173ad57b461b9d623a1f3867.html deleted file mode 100644 index ffb030e9..00000000 --- a/docs/doxygen/html/dir_74389ed8173ad57b461b9d623a1f3867.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -EBGeometry: Source Directory Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Source Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  EBGeometry_AnalyticDistanceFunctions.hpp [code]
 Declaration of various analytic distance functions.
 
file  EBGeometry_BoundingVolumes.hpp [code]
 Declaration of a various bounding volumes used for bounding volume hierarchy.
 
file  EBGeometry_BoundingVolumesImplem.hpp [code]
 Implementation of EBGeometry_BoundingVolumes.hpp.
 
file  EBGeometry_BVH.hpp [code]
 Declaration of a bounding volume hierarchy (BVH) class.
 
file  EBGeometry_BVHImplem.hpp [code]
 Implementation of EBGeometry_BVH.hpp.
 
file  EBGeometry_Dcel.hpp [code]
 Namespace documentation.
 
file  EBGeometry_DcelBVH.hpp [code]
 File which contains partitioners and lambdas for enclosing dcel_face in bounding volume heirarchies.
 
file  EBGeometry_DcelEdge.hpp [code]
 Declaration of a half-edge class for use in DCEL descriptions of polygon tesselations.
 
file  EBGeometry_DcelEdgeImplem.hpp [code]
 Implementation of EBGeometry_DcelEdge.hpp.
 
file  EBGeometry_DcelFace.hpp [code]
 Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
 
file  EBGeometry_DcelFaceImplem.hpp [code]
 Implementation of EBGeometry_DcelFace.hpp.
 
file  EBGeometry_DcelIterator.hpp [code]
 Declaration of iterators for DCEL surface Tesselations.
 
file  EBGeometry_DcelIteratorImplem.hpp [code]
 Implementation of EBGeometry_DcelIterator.hpp.
 
file  EBGeometry_DcelMesh.hpp [code]
 Declaration of a mesh class which stores a DCEL mesh (with signed distance functions)
 
file  EBGeometry_DcelMeshImplem.hpp [code]
 Implementation of EBGeometry_DcelMesh.hpp.
 
file  EBGeometry_DcelParser.hpp [code]
 Declaration of utilities for passing data into DCEL structures.
 
file  EBGeometry_DcelParserImplem.hpp [code]
 Implementation of EBGeometry_DcelParser.hpp.
 
file  EBGeometry_DcelPolygon2D.hpp [code]
 Declaration of a two-dimensional polygon class for embedding 3D polygon faces.
 
file  EBGeometry_DcelPolygon2DImplem.hpp [code]
 Implementation of DcelPolygon.hpp.
 
file  EBGeometry_DcelVertex.hpp [code]
 Declaration of a vertex class for use in DCEL descriptions of polygon tesselations.
 
file  EBGeometry_DcelVertexImplem.hpp [code]
 Implementation of EBGeometry_DcelVertex.hpp.
 
file  EBGeometry_NamespaceFooter.hpp [code]
 Name space footer.
 
file  EBGeometry_NamespaceHeader.hpp [code]
 Name space header.
 
file  EBGeometry_SignedDistanceFunction.hpp [code]
 Abstract base class for representing a signed distance function.
 
file  EBGeometry_SignedDistanceFunctionImplem.hpp [code]
 Implementation of EBGeometry_SignedDistanceFunctionImplem.hpp.
 
file  EBGeometry_TransformOps.hpp [code]
 Declaration of transformation operators for signed distance fields.
 
file  EBGeometry_TransformOpsImplem.hpp [code]
 Implementation of EBGeometry_TransformOps.hpp.
 
file  EBGeometry_Union.hpp [code]
 Declaration of a union operator for creating multi-object scenes.
 
file  EBGeometry_UnionBVH.hpp [code]
 Declaration of a union operator for creating multi-object scenes.
 
file  EBGeometry_UnionBVHImplem.hpp [code]
 Implementation of EBGeometry_UnionBVH.hpp.
 
file  EBGeometry_UnionImplem.hpp [code]
 Implementation of EBGeometry_Union.hpp.
 
file  EBGeometry_Vec.hpp [code]
 Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools.
 
file  EBGeometry_VecImplem.hpp [code]
 Implementation of EBGeometry_Vec.hpp.
 
-
- - - - diff --git a/docs/doxygen/html/doc.png b/docs/doxygen/html/doc.png deleted file mode 100644 index 17edabff..00000000 Binary files a/docs/doxygen/html/doc.png and /dev/null differ diff --git a/docs/doxygen/html/doxygen.css b/docs/doxygen/html/doxygen.css deleted file mode 100644 index 4f1ab919..00000000 --- a/docs/doxygen/html/doxygen.css +++ /dev/null @@ -1,1596 +0,0 @@ -/* The standard CSS for doxygen 1.8.13 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - - -/* @end */ diff --git a/docs/doxygen/html/doxygen.png b/docs/doxygen/html/doxygen.png deleted file mode 100644 index 3ff17d80..00000000 Binary files a/docs/doxygen/html/doxygen.png and /dev/null differ diff --git a/docs/doxygen/html/dynsections.js b/docs/doxygen/html/dynsections.js deleted file mode 100644 index 85e18369..00000000 --- a/docs/doxygen/html/dynsections.js +++ /dev/null @@ -1,97 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -EBGeometry: File List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  Source
 EBGeometry_AnalyticDistanceFunctions.hppDeclaration of various analytic distance functions
 EBGeometry_BoundingVolumes.hppDeclaration of a various bounding volumes used for bounding volume hierarchy
 EBGeometry_BoundingVolumesImplem.hppImplementation of EBGeometry_BoundingVolumes.hpp
 EBGeometry_BVH.hppDeclaration of a bounding volume hierarchy (BVH) class
 EBGeometry_BVHImplem.hppImplementation of EBGeometry_BVH.hpp
 EBGeometry_Dcel.hppNamespace documentation
 EBGeometry_DcelBVH.hppFile which contains partitioners and lambdas for enclosing dcel_face in bounding volume heirarchies
 EBGeometry_DcelEdge.hppDeclaration of a half-edge class for use in DCEL descriptions of polygon tesselations
 EBGeometry_DcelEdgeImplem.hppImplementation of EBGeometry_DcelEdge.hpp
 EBGeometry_DcelFace.hppDeclaration of a polygon face class for use in DCEL descriptions of polygon tesselations
 EBGeometry_DcelFaceImplem.hppImplementation of EBGeometry_DcelFace.hpp
 EBGeometry_DcelIterator.hppDeclaration of iterators for DCEL surface Tesselations
 EBGeometry_DcelIteratorImplem.hppImplementation of EBGeometry_DcelIterator.hpp
 EBGeometry_DcelMesh.hppDeclaration of a mesh class which stores a DCEL mesh (with signed distance functions)
 EBGeometry_DcelMeshImplem.hppImplementation of EBGeometry_DcelMesh.hpp
 EBGeometry_DcelParser.hppDeclaration of utilities for passing data into DCEL structures
 EBGeometry_DcelParserImplem.hppImplementation of EBGeometry_DcelParser.hpp
 EBGeometry_DcelPolygon2D.hppDeclaration of a two-dimensional polygon class for embedding 3D polygon faces
 EBGeometry_DcelPolygon2DImplem.hppImplementation of DcelPolygon.hpp
 EBGeometry_DcelVertex.hppDeclaration of a vertex class for use in DCEL descriptions of polygon tesselations
 EBGeometry_DcelVertexImplem.hppImplementation of EBGeometry_DcelVertex.hpp
 EBGeometry_NamespaceFooter.hppName space footer
 EBGeometry_NamespaceHeader.hppName space header
 EBGeometry_SignedDistanceFunction.hppAbstract base class for representing a signed distance function
 EBGeometry_SignedDistanceFunctionImplem.hppImplementation of EBGeometry_SignedDistanceFunctionImplem.hpp
 EBGeometry_TransformOps.hppDeclaration of transformation operators for signed distance fields
 EBGeometry_TransformOpsImplem.hppImplementation of EBGeometry_TransformOps.hpp
 EBGeometry_Union.hppDeclaration of a union operator for creating multi-object scenes
 EBGeometry_UnionBVH.hppDeclaration of a union operator for creating multi-object scenes
 EBGeometry_UnionBVHImplem.hppImplementation of EBGeometry_UnionBVH.hpp
 EBGeometry_UnionImplem.hppImplementation of EBGeometry_Union.hpp
 EBGeometry_Vec.hppDeclaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools
 EBGeometry_VecImplem.hppImplementation of EBGeometry_Vec.hpp
 EBGeometry.hpp
-
-
- - - - diff --git a/docs/doxygen/html/folderclosed.png b/docs/doxygen/html/folderclosed.png deleted file mode 100644 index bb8ab35e..00000000 Binary files a/docs/doxygen/html/folderclosed.png and /dev/null differ diff --git a/docs/doxygen/html/folderopen.png b/docs/doxygen/html/folderopen.png deleted file mode 100644 index d6c7f676..00000000 Binary files a/docs/doxygen/html/folderopen.png and /dev/null differ diff --git a/docs/doxygen/html/functions.html b/docs/doxygen/html/functions.html deleted file mode 100644 index af3a3910..00000000 --- a/docs/doxygen/html/functions.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- a -

-
- - - - diff --git a/docs/doxygen/html/functions_0x7e.html b/docs/doxygen/html/functions_0x7e.html deleted file mode 100644 index b967221d..00000000 --- a/docs/doxygen/html/functions_0x7e.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- ~ -

-
- - - - diff --git a/docs/doxygen/html/functions_b.html b/docs/doxygen/html/functions_b.html deleted file mode 100644 index 35ce9f74..00000000 --- a/docs/doxygen/html/functions_b.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- b -

-
- - - - diff --git a/docs/doxygen/html/functions_c.html b/docs/doxygen/html/functions_c.html deleted file mode 100644 index 023ed24f..00000000 --- a/docs/doxygen/html/functions_c.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- c -

-
- - - - diff --git a/docs/doxygen/html/functions_d.html b/docs/doxygen/html/functions_d.html deleted file mode 100644 index 9c2941f3..00000000 --- a/docs/doxygen/html/functions_d.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- d -

-
- - - - diff --git a/docs/doxygen/html/functions_e.html b/docs/doxygen/html/functions_e.html deleted file mode 100644 index d9a22eb6..00000000 --- a/docs/doxygen/html/functions_e.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- e -

-
- - - - diff --git a/docs/doxygen/html/functions_enum.html b/docs/doxygen/html/functions_enum.html deleted file mode 100644 index e95c8b2a..00000000 --- a/docs/doxygen/html/functions_enum.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Enumerations - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/docs/doxygen/html/functions_f.html b/docs/doxygen/html/functions_f.html deleted file mode 100644 index 16f4f35f..00000000 --- a/docs/doxygen/html/functions_f.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- f -

-
- - - - diff --git a/docs/doxygen/html/functions_func.html b/docs/doxygen/html/functions_func.html deleted file mode 100644 index 39bcbd90..00000000 --- a/docs/doxygen/html/functions_func.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

-
- - - - diff --git a/docs/doxygen/html/functions_func_0x7e.html b/docs/doxygen/html/functions_func_0x7e.html deleted file mode 100644 index b37c51a0..00000000 --- a/docs/doxygen/html/functions_func_0x7e.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- ~ -

-
- - - - diff --git a/docs/doxygen/html/functions_func_b.html b/docs/doxygen/html/functions_func_b.html deleted file mode 100644 index 8c867125..00000000 --- a/docs/doxygen/html/functions_func_b.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

-
- - - - diff --git a/docs/doxygen/html/functions_func_c.html b/docs/doxygen/html/functions_func_c.html deleted file mode 100644 index aab565a1..00000000 --- a/docs/doxygen/html/functions_func_c.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

-
- - - - diff --git a/docs/doxygen/html/functions_func_d.html b/docs/doxygen/html/functions_func_d.html deleted file mode 100644 index 7f38181d..00000000 --- a/docs/doxygen/html/functions_func_d.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- d -

-
- - - - diff --git a/docs/doxygen/html/functions_func_e.html b/docs/doxygen/html/functions_func_e.html deleted file mode 100644 index 20e2040b..00000000 --- a/docs/doxygen/html/functions_func_e.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- e -

-
- - - - diff --git a/docs/doxygen/html/functions_func_f.html b/docs/doxygen/html/functions_func_f.html deleted file mode 100644 index f5e13682..00000000 --- a/docs/doxygen/html/functions_func_f.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- f -

-
- - - - diff --git a/docs/doxygen/html/functions_func_g.html b/docs/doxygen/html/functions_func_g.html deleted file mode 100644 index f84f546d..00000000 --- a/docs/doxygen/html/functions_func_g.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- g -

-
- - - - diff --git a/docs/doxygen/html/functions_func_i.html b/docs/doxygen/html/functions_func_i.html deleted file mode 100644 index e27486dd..00000000 --- a/docs/doxygen/html/functions_func_i.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- i -

-
- - - - diff --git a/docs/doxygen/html/functions_func_l.html b/docs/doxygen/html/functions_func_l.html deleted file mode 100644 index b4c34fc9..00000000 --- a/docs/doxygen/html/functions_func_l.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- l -

-
- - - - diff --git a/docs/doxygen/html/functions_func_m.html b/docs/doxygen/html/functions_func_m.html deleted file mode 100644 index 700dc4aa..00000000 --- a/docs/doxygen/html/functions_func_m.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- m -

-
- - - - diff --git a/docs/doxygen/html/functions_func_n.html b/docs/doxygen/html/functions_func_n.html deleted file mode 100644 index e8671f21..00000000 --- a/docs/doxygen/html/functions_func_n.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- n -

-
- - - - diff --git a/docs/doxygen/html/functions_func_o.html b/docs/doxygen/html/functions_func_o.html deleted file mode 100644 index 6f8a163d..00000000 --- a/docs/doxygen/html/functions_func_o.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- o -

-
- - - - diff --git a/docs/doxygen/html/functions_func_p.html b/docs/doxygen/html/functions_func_p.html deleted file mode 100644 index 82c95c85..00000000 --- a/docs/doxygen/html/functions_func_p.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- p -

-
- - - - diff --git a/docs/doxygen/html/functions_func_r.html b/docs/doxygen/html/functions_func_r.html deleted file mode 100644 index 94e89727..00000000 --- a/docs/doxygen/html/functions_func_r.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- r -

-
- - - - diff --git a/docs/doxygen/html/functions_func_s.html b/docs/doxygen/html/functions_func_s.html deleted file mode 100644 index 9eb38632..00000000 --- a/docs/doxygen/html/functions_func_s.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- s -

-
- - - - diff --git a/docs/doxygen/html/functions_func_t.html b/docs/doxygen/html/functions_func_t.html deleted file mode 100644 index df8b080b..00000000 --- a/docs/doxygen/html/functions_func_t.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- t -

-
- - - - diff --git a/docs/doxygen/html/functions_func_u.html b/docs/doxygen/html/functions_func_u.html deleted file mode 100644 index 476de684..00000000 --- a/docs/doxygen/html/functions_func_u.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- u -

-
- - - - diff --git a/docs/doxygen/html/functions_func_v.html b/docs/doxygen/html/functions_func_v.html deleted file mode 100644 index 5e03d2fd..00000000 --- a/docs/doxygen/html/functions_func_v.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- v -

-
- - - - diff --git a/docs/doxygen/html/functions_func_z.html b/docs/doxygen/html/functions_func_z.html deleted file mode 100644 index 32b20f62..00000000 --- a/docs/doxygen/html/functions_func_z.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- z -

-
- - - - diff --git a/docs/doxygen/html/functions_g.html b/docs/doxygen/html/functions_g.html deleted file mode 100644 index 00b1ad53..00000000 --- a/docs/doxygen/html/functions_g.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- g -

-
- - - - diff --git a/docs/doxygen/html/functions_i.html b/docs/doxygen/html/functions_i.html deleted file mode 100644 index 28e8af40..00000000 --- a/docs/doxygen/html/functions_i.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- i -

-
- - - - diff --git a/docs/doxygen/html/functions_l.html b/docs/doxygen/html/functions_l.html deleted file mode 100644 index 7754f12b..00000000 --- a/docs/doxygen/html/functions_l.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- l -

-
- - - - diff --git a/docs/doxygen/html/functions_m.html b/docs/doxygen/html/functions_m.html deleted file mode 100644 index ee6c2109..00000000 --- a/docs/doxygen/html/functions_m.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- m -

-
- - - - diff --git a/docs/doxygen/html/functions_n.html b/docs/doxygen/html/functions_n.html deleted file mode 100644 index 0a5f5e01..00000000 --- a/docs/doxygen/html/functions_n.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- n -

-
- - - - diff --git a/docs/doxygen/html/functions_o.html b/docs/doxygen/html/functions_o.html deleted file mode 100644 index cbc2fca1..00000000 --- a/docs/doxygen/html/functions_o.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- o -

-
- - - - diff --git a/docs/doxygen/html/functions_p.html b/docs/doxygen/html/functions_p.html deleted file mode 100644 index 107ddddb..00000000 --- a/docs/doxygen/html/functions_p.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- p -

-
- - - - diff --git a/docs/doxygen/html/functions_r.html b/docs/doxygen/html/functions_r.html deleted file mode 100644 index 110def4b..00000000 --- a/docs/doxygen/html/functions_r.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- r -

-
- - - - diff --git a/docs/doxygen/html/functions_s.html b/docs/doxygen/html/functions_s.html deleted file mode 100644 index 1b8ac606..00000000 --- a/docs/doxygen/html/functions_s.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- s -

-
- - - - diff --git a/docs/doxygen/html/functions_t.html b/docs/doxygen/html/functions_t.html deleted file mode 100644 index 6c6af34e..00000000 --- a/docs/doxygen/html/functions_t.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- t -

-
- - - - diff --git a/docs/doxygen/html/functions_type.html b/docs/doxygen/html/functions_type.html deleted file mode 100644 index ced4b8e5..00000000 --- a/docs/doxygen/html/functions_type.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

- - -

- e -

- - -

- f -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- p -

- - -

- s -

- - -

- v -

-
- - - - diff --git a/docs/doxygen/html/functions_u.html b/docs/doxygen/html/functions_u.html deleted file mode 100644 index d0d44544..00000000 --- a/docs/doxygen/html/functions_u.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- u -

-
- - - - diff --git a/docs/doxygen/html/functions_v.html b/docs/doxygen/html/functions_v.html deleted file mode 100644 index 64ee2fe3..00000000 --- a/docs/doxygen/html/functions_v.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/docs/doxygen/html/functions_vars.html b/docs/doxygen/html/functions_vars.html deleted file mode 100644 index ebe5fa02..00000000 --- a/docs/doxygen/html/functions_vars.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - -EBGeometry: Class Members - Variables - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- m -

- - -

- x -

- - -

- y -

-
- - - - diff --git a/docs/doxygen/html/functions_x.html b/docs/doxygen/html/functions_x.html deleted file mode 100644 index 1c04a1bf..00000000 --- a/docs/doxygen/html/functions_x.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- x -

-
- - - - diff --git a/docs/doxygen/html/functions_y.html b/docs/doxygen/html/functions_y.html deleted file mode 100644 index e27d06ea..00000000 --- a/docs/doxygen/html/functions_y.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- y -

-
- - - - diff --git a/docs/doxygen/html/functions_z.html b/docs/doxygen/html/functions_z.html deleted file mode 100644 index bca04304..00000000 --- a/docs/doxygen/html/functions_z.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -EBGeometry: Class Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- z -

-
- - - - diff --git a/docs/doxygen/html/globals.html b/docs/doxygen/html/globals.html deleted file mode 100644 index f0b65b85..00000000 --- a/docs/doxygen/html/globals.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -EBGeometry: File Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented file members with links to the documentation:
-
- - - - diff --git a/docs/doxygen/html/globals_func.html b/docs/doxygen/html/globals_func.html deleted file mode 100644 index e0a64feb..00000000 --- a/docs/doxygen/html/globals_func.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -EBGeometry: File Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/docs/doxygen/html/graph_legend.html b/docs/doxygen/html/graph_legend.html deleted file mode 100644 index b9e7eb0a..00000000 --- a/docs/doxygen/html/graph_legend.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -EBGeometry: Graph Legend - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

-
- -
-

The boxes in the above graph have the following meaning:

-
    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a gray border denotes an undocumented struct or class.
  • -
  • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • -
-

The arrows have the following meaning:

-
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • -
-
- - - - diff --git a/docs/doxygen/html/graph_legend.md5 b/docs/doxygen/html/graph_legend.md5 deleted file mode 100644 index a06ed050..00000000 --- a/docs/doxygen/html/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/docs/doxygen/html/graph_legend.png b/docs/doxygen/html/graph_legend.png deleted file mode 100644 index 81788d8b..00000000 Binary files a/docs/doxygen/html/graph_legend.png and /dev/null differ diff --git a/docs/doxygen/html/hierarchy.html b/docs/doxygen/html/hierarchy.html deleted file mode 100644 index 802fe664..00000000 --- a/docs/doxygen/html/hierarchy.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -EBGeometry: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - -
 CBoundingVolumes::AABBT< T >Axis-aligned bounding box as bounding volume
 CBoundingVolumes::BoundingSphereT< T >Class which encloses a set of points using a bounding sphere
 CDcel::EdgeIteratorT< T >Class which can iterate through edges and vertices around a DCEL polygon face
 CDcel::EdgeT< T >Class which represents a half-edge in a double-edge connected list (DCEL)
 CDcel::FaceT< T >Class which represents a polygon face in a double-edge connected list (DCEL)
 CBVH::LinearBVH< T, P, BV, K >Forward declare linear BVH class
 CBVH::LinearNodeT< T, P, BV, K >Forward declare linear node class
 CDcel::MeshT< T >Mesh class which stores a full DCEL mesh (with signed distance functions)
 CBVH::NodeT< T, P, BV, K >Forward declare the BVH node since it is needed for the polymorphic lambdas
 CDcel::Parser::PLY< T >Class for generation a Dcel::MeshT<T> from the Stanford PLY file format
 CDcel::Polygon2D< T >Class for embedding a DCEL polygon face into 2D
 CSignedDistanceFunction< T >Abstract representation of a signed distance function
 CBoxSDF< T >Signed distance field for an axis-aligned box
 CCylinderSDF< T >Signed distance field for a cylinder
 CSphereSDF< T >Signed distance field for sphere
 CTorusSDF< T >Signed distance field for a torus
 CUnion< T >Distance function union. Computes the signed distance to the closest object of N non-overlapping objects
 CUnionBVH< T, BV, K >Distance function union using BVHs. Computes the signed distance to the closest object of N non-overlapping objects
 CTransformOp< T >Base class for transformation operators
 CRotateOp< T >Rotation operator. Can scale an input point
 CTranslateOp< T >Translation operator. Can translate an input point
 CVec2T< T >Two-dimensional vector class with arithmetic operators
 CVec3T< T >Three-dimensional vector class with arithmetic operators
 CDcel::VertexT< T >Class which represents a vertex node in a double-edge connected list (DCEL)
-
-
- - - - diff --git a/docs/doxygen/html/index.html b/docs/doxygen/html/index.html deleted file mode 100644 index ccf9d4d2..00000000 --- a/docs/doxygen/html/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -EBGeometry: EBGeometry - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - -
-

EBGeometry is a code for computing signed distance functions to watertight and orientable surface grids. It was written to be used with embedded-boundary (EB) codes like Chombo or AMReX.

-

Tesselations must consist of planar polygons (not necessarily triangles). Internally, the surface mesh is stored in a doubly-connected edge list (DCEL), i.e. a half-edge data structure. On watertight and orientable grids, the distance to any feature (facet, edge, vertex) is well defined, and can naively be computed in various ways:

-
    -
  • Directly, by iterating through all facets.
  • -
  • With conventional bounding volume hierarchies (BVHs).
  • -
  • With compact (linearized) BVHs.
  • -
-

The BVHs in EBGeometry are not limited to facets. Users can also embed entire objects (e.g., analytic functions) in the BVHs, e.g. the BVH accelerator can be used to accelerate the signed distance computation when geometries contain many objects. BVHs can also be nested so that the BVH accelerator is used to embed objects that are themselves contained in a BVH. For example, a scene consisting of many objects described by surface grids can be embedded as a BVH-of-BVH type of scene. In addition, EBGeometry provides standard operators for signed distance fields like rotations, translations, and scalings.

-
-Signed distance field from Armadillo geometry -
-

Requirements

-
    -
  • A C++ compiler which supports C++14.
  • -
  • An analytic signed distance function or a Watertight and orientable surface (only PLY files currently supported).
  • -
-

Basic usage

-

EBGeometry is a header-only library in C++. To use it, simply make EBGeometry.hpp visible to your code and include it.

-

To clone EBGeometry:

git clone git@github.com:rmrsk/EBGeometry.git
-

Various examples are given in the Examples folder. To run one of the examples, navigate to the example and compile and run it. E.g.,

cd Examples/Basic
-g++ -O3 -std=c++14 main.cpp
-./a.out porsche.ply
-

The examples take the following steps that are specific to EBGeometry:

-
    -
  1. Define an analytic signed distance function or parse a surface mesh into a DCEL mesh object.
  2. -
  3. Partition using BVHs.
  4. -
  5. Compute the signed distance function.
  6. -
-

More complex examples that use Chombo or AMReX will also include application-specific code.

-

Advanced usage

-

For more advanced usage, users can supply their own file parsers (only PLY files are currently supported), provide their own bounding volumes, or their own BVH partitioners. EBGeometry is not too strict about these things, and uses rigorous templating for ensuring that the EBGeometry functionality can be extended.

-

License

-

See LICENSE and Copyright.txt for redistribution rights.

-
- - - - diff --git a/docs/doxygen/html/inherit_graph_0.map b/docs/doxygen/html/inherit_graph_0.map deleted file mode 100644 index b4dedd67..00000000 --- a/docs/doxygen/html/inherit_graph_0.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_0.md5 b/docs/doxygen/html/inherit_graph_0.md5 deleted file mode 100644 index 66859dc3..00000000 --- a/docs/doxygen/html/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -358f150712e93f8ed75d247b53133afa \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_0.png b/docs/doxygen/html/inherit_graph_0.png deleted file mode 100644 index 4a06a503..00000000 Binary files a/docs/doxygen/html/inherit_graph_0.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_1.map b/docs/doxygen/html/inherit_graph_1.map deleted file mode 100644 index dc64c945..00000000 --- a/docs/doxygen/html/inherit_graph_1.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_1.md5 b/docs/doxygen/html/inherit_graph_1.md5 deleted file mode 100644 index 375b1367..00000000 --- a/docs/doxygen/html/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -4fd0aaa72e030487c820dba0b510f876 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_1.png b/docs/doxygen/html/inherit_graph_1.png deleted file mode 100644 index e9fd8749..00000000 Binary files a/docs/doxygen/html/inherit_graph_1.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_10.map b/docs/doxygen/html/inherit_graph_10.map deleted file mode 100644 index a99dec89..00000000 --- a/docs/doxygen/html/inherit_graph_10.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_10.md5 b/docs/doxygen/html/inherit_graph_10.md5 deleted file mode 100644 index 9309620d..00000000 --- a/docs/doxygen/html/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -43d41a81a40fcb8ff5a042a2e9e02e17 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_10.png b/docs/doxygen/html/inherit_graph_10.png deleted file mode 100644 index ae6c793e..00000000 Binary files a/docs/doxygen/html/inherit_graph_10.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_11.map b/docs/doxygen/html/inherit_graph_11.map deleted file mode 100644 index be654f16..00000000 --- a/docs/doxygen/html/inherit_graph_11.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_11.md5 b/docs/doxygen/html/inherit_graph_11.md5 deleted file mode 100644 index 40c71fd1..00000000 --- a/docs/doxygen/html/inherit_graph_11.md5 +++ /dev/null @@ -1 +0,0 @@ -0b24af8c6ce0a837ce583121c0fb7e4a \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_11.png b/docs/doxygen/html/inherit_graph_11.png deleted file mode 100644 index 5046a3d1..00000000 Binary files a/docs/doxygen/html/inherit_graph_11.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_12.map b/docs/doxygen/html/inherit_graph_12.map deleted file mode 100644 index 85cd3c39..00000000 --- a/docs/doxygen/html/inherit_graph_12.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/doxygen/html/inherit_graph_12.md5 b/docs/doxygen/html/inherit_graph_12.md5 deleted file mode 100644 index 7a49b014..00000000 --- a/docs/doxygen/html/inherit_graph_12.md5 +++ /dev/null @@ -1 +0,0 @@ -b17b30f68c0b84968635cfc9ef255b38 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_12.png b/docs/doxygen/html/inherit_graph_12.png deleted file mode 100644 index 0037adac..00000000 Binary files a/docs/doxygen/html/inherit_graph_12.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_13.map b/docs/doxygen/html/inherit_graph_13.map deleted file mode 100644 index 2a24cfd1..00000000 --- a/docs/doxygen/html/inherit_graph_13.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/doxygen/html/inherit_graph_13.md5 b/docs/doxygen/html/inherit_graph_13.md5 deleted file mode 100644 index e4cf5578..00000000 --- a/docs/doxygen/html/inherit_graph_13.md5 +++ /dev/null @@ -1 +0,0 @@ -91a5f2285137586ba90d1a83a7ab7b64 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_13.png b/docs/doxygen/html/inherit_graph_13.png deleted file mode 100644 index ba85a663..00000000 Binary files a/docs/doxygen/html/inherit_graph_13.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_14.map b/docs/doxygen/html/inherit_graph_14.map deleted file mode 100644 index 73c496e4..00000000 --- a/docs/doxygen/html/inherit_graph_14.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_14.md5 b/docs/doxygen/html/inherit_graph_14.md5 deleted file mode 100644 index 34714ba9..00000000 --- a/docs/doxygen/html/inherit_graph_14.md5 +++ /dev/null @@ -1 +0,0 @@ -4b1ad4277032ee10bd1e09dc18025928 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_14.png b/docs/doxygen/html/inherit_graph_14.png deleted file mode 100644 index f976379f..00000000 Binary files a/docs/doxygen/html/inherit_graph_14.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_15.map b/docs/doxygen/html/inherit_graph_15.map deleted file mode 100644 index 10a50426..00000000 --- a/docs/doxygen/html/inherit_graph_15.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_15.md5 b/docs/doxygen/html/inherit_graph_15.md5 deleted file mode 100644 index 7a9ba823..00000000 --- a/docs/doxygen/html/inherit_graph_15.md5 +++ /dev/null @@ -1 +0,0 @@ -819711adce0d6cbdf8dcdfbdd9ec768d \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_15.png b/docs/doxygen/html/inherit_graph_15.png deleted file mode 100644 index f5c2e7d3..00000000 Binary files a/docs/doxygen/html/inherit_graph_15.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_2.map b/docs/doxygen/html/inherit_graph_2.map deleted file mode 100644 index 344288f8..00000000 --- a/docs/doxygen/html/inherit_graph_2.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_2.md5 b/docs/doxygen/html/inherit_graph_2.md5 deleted file mode 100644 index 22da6fbb..00000000 --- a/docs/doxygen/html/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -efd7a7e9b5773a391be51d168865227f \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_2.png b/docs/doxygen/html/inherit_graph_2.png deleted file mode 100644 index 0e7d8bd8..00000000 Binary files a/docs/doxygen/html/inherit_graph_2.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_3.map b/docs/doxygen/html/inherit_graph_3.map deleted file mode 100644 index 10f8308d..00000000 --- a/docs/doxygen/html/inherit_graph_3.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_3.md5 b/docs/doxygen/html/inherit_graph_3.md5 deleted file mode 100644 index c4365123..00000000 --- a/docs/doxygen/html/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -efbcaf19d0f897984ba524ca28fabeea \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_3.png b/docs/doxygen/html/inherit_graph_3.png deleted file mode 100644 index c3d91264..00000000 Binary files a/docs/doxygen/html/inherit_graph_3.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_4.map b/docs/doxygen/html/inherit_graph_4.map deleted file mode 100644 index 04b90790..00000000 --- a/docs/doxygen/html/inherit_graph_4.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_4.md5 b/docs/doxygen/html/inherit_graph_4.md5 deleted file mode 100644 index 507cfcf8..00000000 --- a/docs/doxygen/html/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -b9d2eacf0f5bfd6994b4e74df13fb79d \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_4.png b/docs/doxygen/html/inherit_graph_4.png deleted file mode 100644 index 5a14a2bb..00000000 Binary files a/docs/doxygen/html/inherit_graph_4.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_5.map b/docs/doxygen/html/inherit_graph_5.map deleted file mode 100644 index 5b502e8a..00000000 --- a/docs/doxygen/html/inherit_graph_5.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_5.md5 b/docs/doxygen/html/inherit_graph_5.md5 deleted file mode 100644 index 73ad32ee..00000000 --- a/docs/doxygen/html/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -ba17b088c9fe2d5ead6fb0cf46963c67 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_5.png b/docs/doxygen/html/inherit_graph_5.png deleted file mode 100644 index 0dd61a93..00000000 Binary files a/docs/doxygen/html/inherit_graph_5.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_6.map b/docs/doxygen/html/inherit_graph_6.map deleted file mode 100644 index dad7ca3e..00000000 --- a/docs/doxygen/html/inherit_graph_6.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_6.md5 b/docs/doxygen/html/inherit_graph_6.md5 deleted file mode 100644 index b05fb6d4..00000000 --- a/docs/doxygen/html/inherit_graph_6.md5 +++ /dev/null @@ -1 +0,0 @@ -f4f177dfddca8e1b7fb18c750267cf43 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_6.png b/docs/doxygen/html/inherit_graph_6.png deleted file mode 100644 index 06def14f..00000000 Binary files a/docs/doxygen/html/inherit_graph_6.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_7.map b/docs/doxygen/html/inherit_graph_7.map deleted file mode 100644 index 68d2565a..00000000 --- a/docs/doxygen/html/inherit_graph_7.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_7.md5 b/docs/doxygen/html/inherit_graph_7.md5 deleted file mode 100644 index 44d870e3..00000000 --- a/docs/doxygen/html/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -7a7609383812314f7236b294db2df820 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_7.png b/docs/doxygen/html/inherit_graph_7.png deleted file mode 100644 index 4301311d..00000000 Binary files a/docs/doxygen/html/inherit_graph_7.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_8.map b/docs/doxygen/html/inherit_graph_8.map deleted file mode 100644 index ad846c32..00000000 --- a/docs/doxygen/html/inherit_graph_8.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_8.md5 b/docs/doxygen/html/inherit_graph_8.md5 deleted file mode 100644 index 784aa2ee..00000000 --- a/docs/doxygen/html/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -9e7138e9542372568fa3e728b2a0562c \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_8.png b/docs/doxygen/html/inherit_graph_8.png deleted file mode 100644 index 59215f2d..00000000 Binary files a/docs/doxygen/html/inherit_graph_8.png and /dev/null differ diff --git a/docs/doxygen/html/inherit_graph_9.map b/docs/doxygen/html/inherit_graph_9.map deleted file mode 100644 index 41cbb3b6..00000000 --- a/docs/doxygen/html/inherit_graph_9.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/doxygen/html/inherit_graph_9.md5 b/docs/doxygen/html/inherit_graph_9.md5 deleted file mode 100644 index 290acf09..00000000 --- a/docs/doxygen/html/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -868c5add16c2f0579f9f4275831ed027 \ No newline at end of file diff --git a/docs/doxygen/html/inherit_graph_9.png b/docs/doxygen/html/inherit_graph_9.png deleted file mode 100644 index 5e66bc0b..00000000 Binary files a/docs/doxygen/html/inherit_graph_9.png and /dev/null differ diff --git a/docs/doxygen/html/inherits.html b/docs/doxygen/html/inherits.html deleted file mode 100644 index d03dd40c..00000000 --- a/docs/doxygen/html/inherits.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -EBGeometry: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
- - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - - - - - - -
- - - - - -
- - - -
- - - -
-
- - - - diff --git a/docs/doxygen/html/jquery.js b/docs/doxygen/html/jquery.js deleted file mode 100644 index f5343eda..00000000 --- a/docs/doxygen/html/jquery.js +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' - - - -
- -
-
BVH Namespace Reference
-
-
- -

Namespace for various bounding volume heirarchy (BVH) functionality. -More...

-
- - - - - - - - - - -

-Classes

class  LinearBVH
 Forward declare linear BVH class. More...
 
class  LinearNodeT
 Forward declare linear node class. More...
 
class  NodeT
 Forward declare the BVH node since it is needed for the polymorphic lambdas. More...
 
- - - - - - - - - - - - - - - - - -

-Typedefs

template<class P >
using PrimitiveListT = std::vector< std::shared_ptr< const P > >
 Alias to cut down on typing. More...
 
template<class T , class P , class BV , int K>
using StopFunctionT = std::function< bool(const NodeT< T, P, BV, K > &a_node)>
 Stop function for deciding when a BVH node can't be divided into sub-volumes. More...
 
template<class P , int K>
using PartitionerT = std::function< std::array< PrimitiveListT< P >, K >(const PrimitiveListT< P > &a_primitives)>
 Polymorphic partitioner for splitting a list of primitives into K new lists of primitives. More...
 
template<class P , class BV >
using BVConstructorT = std::function< BV(const std::shared_ptr< const P > &a_primitive)>
 Constructor method for creating bounding volumes from a list of primitives. More...
 
- - - - -

-Enumerations

enum  Prune { Stack, -Ordered, -Unordered - }
 Typename for identifying algorithms various algorithms during tree traversel. More...
 
-

Detailed Description

-

Namespace for various bounding volume heirarchy (BVH) functionality.

-

Typedef Documentation

- -

◆ BVConstructorT

- -
-
-
-template<class P , class BV >
- - - - -
using BVH::BVConstructorT = typedef std::function<BV(const std::shared_ptr<const P>& a_primitive)>
-
- -

Constructor method for creating bounding volumes from a list of primitives.

-

P is the primitive type bound in the BVH and BV is the bounding volume type.

Parameters
- - -
[in]a_primitivesList of primitives.
-
-
-
Returns
Returns a new bounding volumes which is guaranteed to enclose all the input primitives.
- -
-
- -

◆ PartitionerT

- -
-
-
-template<class P , int K>
- - - - -
using BVH::PartitionerT = typedef std::function<std::array<PrimitiveListT<P>, K>(const PrimitiveListT<P>& a_primitives)>
-
- -

Polymorphic partitioner for splitting a list of primitives into K new lists of primitives.

-

P is the primitive type bound in the BVH and K is the BVH degree.

Parameters
- - -
[in]a_primitivesList of primitives to be subdivided into sub-bounding volumes.
-
-
-
Returns
Returns a list (std::array) of new primitives which make up the new bounding volumes.
- -
-
- -

◆ PrimitiveListT

- -
-
-
-template<class P >
- - - - -
using BVH::PrimitiveListT = typedef std::vector<std::shared_ptr<const P> >
-
- -

Alias to cut down on typing.

-

P is the primitive bounded by the BVH.

- -
-
- -

◆ StopFunctionT

- -
-
-
-template<class T , class P , class BV , int K>
- - - - -
using BVH::StopFunctionT = typedef std::function<bool(const NodeT<T, P, BV, K>& a_node)>
-
- -

Stop function for deciding when a BVH node can't be divided into sub-volumes.

-

T is the precision used in the BVH computations, P is the enclosing primitive and BV is the bounding volume used in the BVH. K is the tree degree.

Parameters
- - -
[in]a_nodeBVH node
-
-
-
Returns
True if the node can't be divided into subvolumes and false otherwise.
- -
-
-

Enumeration Type Documentation

- -

◆ Prune

- -
-
- - - - - -
- - - - -
enum BVH::Prune
-
-strong
-
- -

Typename for identifying algorithms various algorithms during tree traversel.

-

Stack => Use stack/priority queue (ordered traversal). Ordered => Use recursive ordered traversal. Unordered => Use recursive unordered traversal.

- -
-
- - - - - diff --git a/docs/doxygen/html/namespaceBoundingVolumes.html b/docs/doxygen/html/namespaceBoundingVolumes.html deleted file mode 100644 index 9e632047..00000000 --- a/docs/doxygen/html/namespaceBoundingVolumes.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - -EBGeometry: BoundingVolumes Namespace Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
BoundingVolumes Namespace Reference
-
-
- -

Namespace for encapsulating various bounding volumes for usage with BVHs. -More...

- - - - - - - - -

-Classes

class  AABBT
 Axis-aligned bounding box as bounding volume. More...
 
class  BoundingSphereT
 Class which encloses a set of points using a bounding sphere. More...
 
- - - - - - - - - - - - - - - - - -

-Functions

template<class T >
bool intersects (const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
 Intersection method for testing if two bounding spheres overlap. More...
 
template<class T >
bool intersects (const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept
 Intersection method for testing if two bounding boxes overlap. More...
 
template<class T >
getOverlappingVolume (const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept
 Compute the overlapping volume between two bounding spheres. More...
 
template<class T >
getOverlappingVolume (const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept
 Compute the overlapping volume between two bounding boxes. More...
 
-

Detailed Description

-

Namespace for encapsulating various bounding volumes for usage with BVHs.

-

Function Documentation

- -

◆ getOverlappingVolume() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
T BoundingVolumes::getOverlappingVolume (const BoundingSphereT< T > & a_u,
const BoundingSphereT< T > & a_v 
)
-
-noexcept
-
- -

Compute the overlapping volume between two bounding spheres.

-
Parameters
- - - -
[in]a_uOne bounding sphere
[in]a_vThe other bounding sphere
-
-
- -
-
- -

◆ getOverlappingVolume() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
T BoundingVolumes::getOverlappingVolume (const AABBT< T > & a_u,
const AABBT< T > & a_v 
)
-
-noexcept
-
- -

Compute the overlapping volume between two bounding boxes.

-
Parameters
- - - -
[in]a_uOne bounding box
[in]a_vThe other bounding box
-
-
- -
-
- -

◆ intersects() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool BoundingVolumes::intersects (const BoundingSphereT< T > & a_u,
const BoundingSphereT< T > & a_v 
)
-
-noexcept
-
- -

Intersection method for testing if two bounding spheres overlap.

-
Parameters
- - - -
[in]a_uOne bounding sphere
[in]a_vThe other bounding sphere
-
-
- -
-
- -

◆ intersects() [2/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool BoundingVolumes::intersects (const AABBT< T > & a_u,
const AABBT< T > & a_v 
)
-
-noexcept
-
- -

Intersection method for testing if two bounding boxes overlap.

-
Parameters
- - - -
[in]a_uOne bounding box
[in]a_vThe other bounding box
-
-
- -
-
-
- - - - diff --git a/docs/doxygen/html/namespaceDcel.html b/docs/doxygen/html/namespaceDcel.html deleted file mode 100644 index 5a292744..00000000 --- a/docs/doxygen/html/namespaceDcel.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - -EBGeometry: Dcel Namespace Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
Dcel Namespace Reference
-
-
- -

Namespace containing various double-connected edge list (DCEL) functionality. -More...

- - - - - -

-Namespaces

 Parser
 Namespace which encapsulates possible file parsers for building DCEL meshes.
 
- - - - - - - - - - - - - - - - - - - -

-Classes

class  EdgeIteratorT
 Class which can iterate through edges and vertices around a DCEL polygon face. More...
 
class  EdgeT
 Class which represents a half-edge in a double-edge connected list (DCEL). More...
 
class  FaceT
 Class which represents a polygon face in a double-edge connected list (DCEL). More...
 
class  MeshT
 Mesh class which stores a full DCEL mesh (with signed distance functions) More...
 
class  Polygon2D
 Class for embedding a DCEL polygon face into 2D. More...
 
class  VertexT
 Class which represents a vertex node in a double-edge connected list (DCEL). More...
 
- - - - - -

-Typedefs

-template<class T >
using PrimitiveList = std::vector< std::shared_ptr< const Dcel::FaceT< T > > >
 Alias for which primitives are used in the BVH. For DCEL meshes the primitive is a polygon face.
 
- - - - - - - - - - - - - - - - - - - - -

-Variables

-constexpr int primitivesPerLeafNode = 1
 This is the lowest number of a primitives that a BVH node is allowed to enclose.
 
template<class T , class BV >
BVH::BVConstructorT< FaceT< T >, BV > defaultBVConstructor
 Bounding volume constructor for a DCEL face. More...
 
template<class T , class BV , int K>
BVH::StopFunctionT< T, FaceT< T >, BV, K > defaultStopFunction
 Default stop function. This function terminates the division process if a BVH node has only one primitive. More...
 
template<class T , int K>
BVH::PartitionerT< FaceT< T >, K > spatialSplitPartitioner
 Default partitioner function for subdividing into K sub-volumes. More...
 
template<class T , int K>
BVH::PartitionerT< FaceT< T >, K > spatialSplitBinaryPartitioner
 Binary partitioner based on spatial splits. More...
 
-

Detailed Description

-

Namespace containing various double-connected edge list (DCEL) functionality.

-

Variable Documentation

- -

◆ defaultBVConstructor

- -
-
-
-template<class T , class BV >
- - - - -
BVH::BVConstructorT<FaceT<T>, BV> Dcel::defaultBVConstructor
-
-Initial value:
= [](const std::shared_ptr<const FaceT<T> >& a_primitive){
return BV(a_primitive->getAllVertexCoordinates());
}
-

Bounding volume constructor for a DCEL face.

-

With BVHs and DCEL, the object to be bounded is the polygon face (e.g., triangle). We assume that our BV constructor can enclose points, so we return an object that encloses all the vertices of the polygon.

Parameters
- - -
[in]a_primitivePrimitive (facet) to be bounded.
-
-
-
Returns
Returns a bounding volume which encloses the input face.
- -
-
- -

◆ defaultStopFunction

- -
-
-
-template<class T , class BV , int K>
- - - - -
BVH::StopFunctionT<T, FaceT<T>, BV, K> Dcel::defaultStopFunction
-
-Initial value:
= [](const BVH::NodeT<T, FaceT<T>, BV, K>& a_node){
const auto& primitives = a_node.getPrimitives();
const int numPrims = primitives.size();
return numPrims <= primitivesPerLeafNode || numPrims < K;
}
Forward declare the BVH node since it is needed for the polymorphic lambdas.
Definition: EBGeometry_BVH.hpp:36
-
constexpr int primitivesPerLeafNode
This is the lowest number of a primitives that a BVH node is allowed to enclose.
Definition: EBGeometry_DcelBVH.hpp:34
-
-

Default stop function. This function terminates the division process if a BVH node has only one primitive.

-

In this function, BVH::NodeT<T, FaceT<T>, BVH > is a BVH node. The interpretation of the parameters are: T is the precision, FaceT<T> is the primitive type in the BVH tree, and BV is the bounding volume type.

Parameters
- - -
[in]a_nodeBounding volume hierarchy node.
-
-
-
Returns
Returns true if the bounding volume shouldn't be split more and false otherwise.
- -
-
- -

◆ spatialSplitBinaryPartitioner

- -
-
-
-template<class T , int K>
- - - - -
BVH::PartitionerT<FaceT<T>, K> Dcel::spatialSplitBinaryPartitioner
-
- -

Binary partitioner based on spatial splits.

-
Parameters
- - -
[in]a_primitivesList of primitives to partition into sub-bounding volumes
-
-
-

This is a partitioner that calls the spatialSplitPartitioner in order to recursively subdivided volumes into 2^K subvolumes.

- -
-
- -

◆ spatialSplitPartitioner

- -
-
-
-template<class T , int K>
- - - - -
BVH::PartitionerT<FaceT<T>, K> Dcel::spatialSplitPartitioner
-
- -

Default partitioner function for subdividing into K sub-volumes.

-
Parameters
- - -
[in]a_primitivesList of primitives to partition into sub-bounding volumes
-
-
-

This is a very stupid partitioner which splits into equal chunks along the longest coordinate.

- -
-
-
- - - - diff --git a/docs/doxygen/html/namespaceDcel_1_1Parser.html b/docs/doxygen/html/namespaceDcel_1_1Parser.html deleted file mode 100644 index 37147a04..00000000 --- a/docs/doxygen/html/namespaceDcel_1_1Parser.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -EBGeometry: Dcel::Parser Namespace Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Dcel::Parser Namespace Reference
-
-
- -

Namespace which encapsulates possible file parsers for building DCEL meshes. -More...

- - - - - -

-Classes

class  PLY
 Class for generation a Dcel::MeshT<T> from the Stanford PLY file format. More...
 
-

Detailed Description

-

Namespace which encapsulates possible file parsers for building DCEL meshes.

-
- - - - diff --git a/docs/doxygen/html/namespaceEBGeometry.html b/docs/doxygen/html/namespaceEBGeometry.html deleted file mode 100644 index 4565e664..00000000 --- a/docs/doxygen/html/namespaceEBGeometry.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -EBGeometry: EBGeometry Namespace Reference - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
EBGeometry Namespace Reference
-
-
- -

Name space for all of EBGeometry. -More...

-

Detailed Description

-

Name space for all of EBGeometry.

-
- - - - diff --git a/docs/doxygen/html/namespacemembers.html b/docs/doxygen/html/namespacemembers.html deleted file mode 100644 index 5a3b232b..00000000 --- a/docs/doxygen/html/namespacemembers.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -EBGeometry: Namespace Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
    -
  • BVConstructorT -: BVH -
  • -
  • defaultBVConstructor -: Dcel -
  • -
  • defaultStopFunction -: Dcel -
  • -
  • getOverlappingVolume() -: BoundingVolumes -
  • -
  • intersects() -: BoundingVolumes -
  • -
  • PartitionerT -: BVH -
  • -
  • PrimitiveList -: Dcel -
  • -
  • PrimitiveListT -: BVH -
  • -
  • primitivesPerLeafNode -: Dcel -
  • -
  • Prune -: BVH -
  • -
  • spatialSplitBinaryPartitioner -: Dcel -
  • -
  • spatialSplitPartitioner -: Dcel -
  • -
  • StopFunctionT -: BVH -
  • -
-
- - - - diff --git a/docs/doxygen/html/namespacemembers_enum.html b/docs/doxygen/html/namespacemembers_enum.html deleted file mode 100644 index 08500155..00000000 --- a/docs/doxygen/html/namespacemembers_enum.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - -EBGeometry: Namespace Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
    -
  • Prune -: BVH -
  • -
-
- - - - diff --git a/docs/doxygen/html/namespacemembers_func.html b/docs/doxygen/html/namespacemembers_func.html deleted file mode 100644 index 63f2b37b..00000000 --- a/docs/doxygen/html/namespacemembers_func.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -EBGeometry: Namespace Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/docs/doxygen/html/namespacemembers_type.html b/docs/doxygen/html/namespacemembers_type.html deleted file mode 100644 index 4db17b4b..00000000 --- a/docs/doxygen/html/namespacemembers_type.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -EBGeometry: Namespace Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
    -
  • BVConstructorT -: BVH -
  • -
  • PartitionerT -: BVH -
  • -
  • PrimitiveList -: Dcel -
  • -
  • PrimitiveListT -: BVH -
  • -
  • StopFunctionT -: BVH -
  • -
-
- - - - diff --git a/docs/doxygen/html/namespacemembers_vars.html b/docs/doxygen/html/namespacemembers_vars.html deleted file mode 100644 index 2bd4be70..00000000 --- a/docs/doxygen/html/namespacemembers_vars.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -EBGeometry: Namespace Members - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
    -
  • defaultBVConstructor -: Dcel -
  • -
  • defaultStopFunction -: Dcel -
  • -
  • primitivesPerLeafNode -: Dcel -
  • -
  • spatialSplitBinaryPartitioner -: Dcel -
  • -
  • spatialSplitPartitioner -: Dcel -
  • -
-
- - - - diff --git a/docs/doxygen/html/namespaces.html b/docs/doxygen/html/namespaces.html deleted file mode 100644 index 73a3ad14..00000000 --- a/docs/doxygen/html/namespaces.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -EBGeometry: Namespace List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Namespace List
-
-
-
Here is a list of all documented namespaces with brief descriptions:
-
[detail level 12]
- - - - - -
 NBoundingVolumesNamespace for encapsulating various bounding volumes for usage with BVHs
 NBVHNamespace for various bounding volume heirarchy (BVH) functionality
 NDcelNamespace containing various double-connected edge list (DCEL) functionality
 NParserNamespace which encapsulates possible file parsers for building DCEL meshes
 NEBGeometryName space for all of EBGeometry
-
-
- - - - diff --git a/docs/doxygen/html/nav_f.png b/docs/doxygen/html/nav_f.png deleted file mode 100644 index 72a58a52..00000000 Binary files a/docs/doxygen/html/nav_f.png and /dev/null differ diff --git a/docs/doxygen/html/nav_g.png b/docs/doxygen/html/nav_g.png deleted file mode 100644 index 2093a237..00000000 Binary files a/docs/doxygen/html/nav_g.png and /dev/null differ diff --git a/docs/doxygen/html/nav_h.png b/docs/doxygen/html/nav_h.png deleted file mode 100644 index 33389b10..00000000 Binary files a/docs/doxygen/html/nav_h.png and /dev/null differ diff --git a/docs/doxygen/html/open.png b/docs/doxygen/html/open.png deleted file mode 100644 index 30f75c7e..00000000 Binary files a/docs/doxygen/html/open.png and /dev/null differ diff --git a/docs/doxygen/html/pages.html b/docs/doxygen/html/pages.html deleted file mode 100644 index e07726a2..00000000 --- a/docs/doxygen/html/pages.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -EBGeometry: Related Pages - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Related Pages
-
-
-
Here is a list of all related documentation pages:
- - -
 Todo List
-
-
- - - - diff --git a/docs/doxygen/html/search/all_0.html b/docs/doxygen/html/search/all_0.html deleted file mode 100644 index f25360b7..00000000 --- a/docs/doxygen/html/search/all_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_0.js b/docs/doxygen/html/search/all_0.js deleted file mode 100644 index 3cc677cb..00000000 --- a/docs/doxygen/html/search/all_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['aabbt',['AABBT',['../classBoundingVolumes_1_1AABBT.html',1,'BoundingVolumes::AABBT< T >'],['../classBoundingVolumes_1_1AABBT.html#a180558daace1d1fb990f9e197eaec02d',1,'BoundingVolumes::AABBT::AABBT()'],['../classBoundingVolumes_1_1AABBT.html#a28d34a1b4467d329bd50e3561b1e705a',1,'BoundingVolumes::AABBT::AABBT(const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)'],['../classBoundingVolumes_1_1AABBT.html#af69dd29c29d40b1f550118cde9479f15',1,'BoundingVolumes::AABBT::AABBT(const AABBT &a_other)'],['../classBoundingVolumes_1_1AABBT.html#a08ddef449ffd740163b584c8ccd6f395',1,'BoundingVolumes::AABBT::AABBT(const std::vector< AABBT< T > > &a_others)'],['../classBoundingVolumes_1_1AABBT.html#ab58be0cf4a32b502fdd1aedb7ba11587',1,'BoundingVolumes::AABBT::AABBT(const std::vector< Vec3T< P > > &a_points)']]], - ['addface',['addFace',['../classDcel_1_1VertexT.html#a032c39370f08bbc27f3da35ee0873409',1,'Dcel::VertexT']]] -]; diff --git a/docs/doxygen/html/search/all_1.html b/docs/doxygen/html/search/all_1.html deleted file mode 100644 index b13f0f7f..00000000 --- a/docs/doxygen/html/search/all_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_1.js b/docs/doxygen/html/search/all_1.js deleted file mode 100644 index c7039278..00000000 --- a/docs/doxygen/html/search/all_1.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['boundingspheret',['BoundingSphereT',['../classBoundingVolumes_1_1BoundingSphereT.html',1,'BoundingVolumes::BoundingSphereT< T >'],['../classBoundingVolumes_1_1BoundingSphereT.html#a5616a743d8b53b11533ef47b3da281aa',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT()'],['../classBoundingVolumes_1_1BoundingSphereT.html#a9e81ed0ce76489225f5dbd57ed1abc8f',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const Vec3T< T > &a_center, const T &a_radius)'],['../classBoundingVolumes_1_1BoundingSphereT.html#af9cd8b7e77ed36178073be298efd27f0',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const std::vector< BoundingSphereT< T > > &a_otherSpheres)'],['../classBoundingVolumes_1_1BoundingSphereT.html#afd5a1632d9ceef8a4fa3af59e562c7f8',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const BoundingSphereT &a_other)'],['../classBoundingVolumes_1_1BoundingSphereT.html#a88655edd39b6276b9bb58eb9bd6af82d',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg=BoundingVolumeAlgorithm::Ritter)']]], - ['boundingvolumealgorithm',['BoundingVolumeAlgorithm',['../classBoundingVolumes_1_1BoundingSphereT.html#ae98cd00c8e45c93a0fc4fbabec63b007',1,'BoundingVolumes::BoundingSphereT']]], - ['boundingvolumes',['BoundingVolumes',['../namespaceBoundingVolumes.html',1,'']]], - ['boxsdf',['BoxSDF',['../classBoxSDF.html',1,'BoxSDF< T >'],['../classBoxSDF.html#a59b774b2a6fc27001e1a40662f49c5cb',1,'BoxSDF::BoxSDF()=delete'],['../classBoxSDF.html#a8cac002be3de6c478a6d68e6e88607d8',1,'BoxSDF::BoxSDF(const Vec3T< T > &a_loCorner, const Vec3T< T > &a_hiCorner, const bool a_flipInside)']]], - ['buildernode',['BuilderNode',['../classUnionBVH.html#a9fd434576440274a81c0251962d7ff7e',1,'UnionBVH']]], - ['buildritter',['buildRitter',['../classBoundingVolumes_1_1BoundingSphereT.html#abea0326be2d1843f3ad7c6de1ebe2418',1,'BoundingVolumes::BoundingSphereT']]], - ['buildtree',['buildTree',['../classUnionBVH.html#a97769f4c449610b681a70b93c99a40ca',1,'UnionBVH']]], - ['bvconstructor',['BVConstructor',['../classBVH_1_1NodeT.html#a2340f2466ed5b6eebab4bdc72004858e',1,'BVH::NodeT::BVConstructor()'],['../classUnionBVH.html#a09561e026cd6a7da1a7dbdbad5eea2c2',1,'UnionBVH::BVConstructor()']]], - ['bvconstructort',['BVConstructorT',['../namespaceBVH.html#a245702d7eff40cdaedb5dff68c25a88a',1,'BVH']]], - ['bvh',['BVH',['../namespaceBVH.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/all_10.html b/docs/doxygen/html/search/all_10.html deleted file mode 100644 index d1345a1f..00000000 --- a/docs/doxygen/html/search/all_10.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_10.js b/docs/doxygen/html/search/all_10.js deleted file mode 100644 index 86e9441e..00000000 --- a/docs/doxygen/html/search/all_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['union',['Union',['../classUnion.html',1,'Union< T >'],['../classUnion.html#a2dea7d7ed6d5456f87feff0e02c99453',1,'Union::Union()=delete'],['../classUnion.html#a7f1a9e850f8965dc35e221b23a55e451',1,'Union::Union(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)']]], - ['unionbvh',['UnionBVH',['../classUnionBVH.html',1,'UnionBVH< T, BV, K >'],['../classUnionBVH.html#aa2d9a2e95e58a0d7dfb2b92283626cac',1,'UnionBVH::UnionBVH()=delete'],['../classUnionBVH.html#a6a0a50fcddc59dbb1c9b9444b0fce117',1,'UnionBVH::UnionBVH(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)'],['../classUnionBVH.html#a9eb2c19a0fdc645e068c09398d3dd0f3',1,'UnionBVH::UnionBVH(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign, const BVConstructor &a_bvConstructor)']]], - ['unsigneddistance2',['unsignedDistance2',['../classDcel_1_1EdgeT.html#a50345997f00af679875fda510b3e0607',1,'Dcel::EdgeT::unsignedDistance2()'],['../classDcel_1_1FaceT.html#a2915506b12c361eb4a25cba80638cb7d',1,'Dcel::FaceT::unsignedDistance2()'],['../classDcel_1_1MeshT.html#a8be4c3d6f606b8bc8cc36820de773de1',1,'Dcel::MeshT::unsignedDistance2()'],['../classDcel_1_1VertexT.html#a552b7d88dfe80c76561b5a002ddc176b',1,'Dcel::VertexT::unsignedDistance2()']]] -]; diff --git a/docs/doxygen/html/search/all_11.html b/docs/doxygen/html/search/all_11.html deleted file mode 100644 index 2be8b711..00000000 --- a/docs/doxygen/html/search/all_11.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_11.js b/docs/doxygen/html/search/all_11.js deleted file mode 100644 index dfe9a6cb..00000000 --- a/docs/doxygen/html/search/all_11.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['vec2',['Vec2',['../classDcel_1_1Polygon2D.html#ab70ec33cb6418fa0204f0d951dfd01fb',1,'Dcel::Polygon2D']]], - ['vec2t',['Vec2T',['../classVec2T.html',1,'Vec2T< T >'],['../classVec2T.html#a4aa6e0bd3922abd84449278429a03418',1,'Vec2T::Vec2T()'],['../classVec2T.html#a15e8a7710ad0a1de03a34660ae54e96e',1,'Vec2T::Vec2T(const Vec2T &u)'],['../classVec2T.html#a0721d6450bab8361f76ee63826f9e8f4',1,'Vec2T::Vec2T(const T &a_x, const T &a_y)']]], - ['vec3',['Vec3',['../classBoundingVolumes_1_1BoundingSphereT.html#ad89ed315255abcde216e9ca1de3068ab',1,'BoundingVolumes::BoundingSphereT::Vec3()'],['../classBoundingVolumes_1_1AABBT.html#aa968c6b21a7f02e1cbfc03d26c7e67b4',1,'BoundingVolumes::AABBT::Vec3()'],['../classBVH_1_1NodeT.html#a6fbb4308c5c55ee170c5f992df7ae1d0',1,'BVH::NodeT::Vec3()'],['../classBVH_1_1LinearNodeT.html#a073e87d51d44b4cc243c8f90690247a6',1,'BVH::LinearNodeT::Vec3()'],['../classBVH_1_1LinearBVH.html#a13b0083e8b7ff1a5e170d39d69e6a15a',1,'BVH::LinearBVH::Vec3()'],['../classDcel_1_1EdgeT.html#a93b8679cea557c419af44385ca6d356a',1,'Dcel::EdgeT::Vec3()'],['../classDcel_1_1FaceT.html#ade9c182834ec6f18a0e17b8140308db2',1,'Dcel::FaceT::Vec3()'],['../classDcel_1_1MeshT.html#a646c5d8f66b3079bca35fe4186493627',1,'Dcel::MeshT::Vec3()'],['../classDcel_1_1Polygon2D.html#a46e9686210f09464e8f5ad13300717b9',1,'Dcel::Polygon2D::Vec3()'],['../classDcel_1_1VertexT.html#a6e073dc7426756edef5594816be6e7c7',1,'Dcel::VertexT::Vec3()']]], - ['vec3t',['Vec3T',['../classVec3T.html',1,'Vec3T< T >'],['../classVec3T.html#a919b1cabc678f8d71763e03fab500334',1,'Vec3T::Vec3T()'],['../classVec3T.html#ab328767434f527b25c110dc83a0cb7ee',1,'Vec3T::Vec3T(const Vec3T< T > &a_u)'],['../classVec3T.html#acc3573bc8c3232eb14a22ca833cbce30',1,'Vec3T::Vec3T(const T &a_x, const T &a_y, const T &a_z)']]], - ['vertex',['Vertex',['../classDcel_1_1EdgeT.html#a2409bc47d421bbea1c091fb6b15da271',1,'Dcel::EdgeT::Vertex()'],['../classDcel_1_1FaceT.html#acf33f51e5402ed6bf811521b138121b9',1,'Dcel::FaceT::Vertex()'],['../classDcel_1_1EdgeIteratorT.html#a4ca07f27da7faf50db5dbd1f20bbcafb',1,'Dcel::EdgeIteratorT::Vertex()'],['../classDcel_1_1MeshT.html#a58b357c4ad94f4a4b813ed7ebf01cd05',1,'Dcel::MeshT::Vertex()'],['../classDcel_1_1Parser_1_1PLY.html#acbecc13804a702a6bf2687d9bf5d7989',1,'Dcel::Parser::PLY::Vertex()'],['../classDcel_1_1VertexT.html#a2c8a221a9f03e9bafa891bd0759b4f8f',1,'Dcel::VertexT::Vertex()']]], - ['vertexnormalweight',['VertexNormalWeight',['../classDcel_1_1MeshT.html#a0cd3a02853cf4fcc34a0816368ed4dc0',1,'Dcel::MeshT']]], - ['vertexptr',['VertexPtr',['../classDcel_1_1EdgeT.html#ab4ba57cfc6b2f90da43096eea87bb284',1,'Dcel::EdgeT::VertexPtr()'],['../classDcel_1_1FaceT.html#a9c22745bf7351c3bfba27d5816a50deb',1,'Dcel::FaceT::VertexPtr()'],['../classDcel_1_1EdgeIteratorT.html#ac6f7324622a089d17c5b66eb0be679f0',1,'Dcel::EdgeIteratorT::VertexPtr()'],['../classDcel_1_1MeshT.html#a1e0abeadcb51e679b0dd9a36e2ee08c7',1,'Dcel::MeshT::VertexPtr()'],['../classDcel_1_1VertexT.html#aa7d02695a42762b98a66c559e6d3d849',1,'Dcel::VertexT::VertexPtr()']]], - ['vertext',['VertexT',['../classDcel_1_1VertexT.html',1,'Dcel::VertexT< T >'],['../classDcel_1_1VertexT.html#ab93f0a7a59fa9d78d89d1b0e97451ce7',1,'Dcel::VertexT::VertexT()'],['../classDcel_1_1VertexT.html#ade01d01c6a145c31c6f46dccc902cfae',1,'Dcel::VertexT::VertexT(const Vec3 &a_position)'],['../classDcel_1_1VertexT.html#a90d3c97e605b8084667a85ddfb4ba8bc',1,'Dcel::VertexT::VertexT(const Vec3 &a_position, const Vec3 &a_normal)'],['../classDcel_1_1VertexT.html#ac904e9902633915706d81122e72aa847',1,'Dcel::VertexT::VertexT(const Vertex &a_otherVertex)']]] -]; diff --git a/docs/doxygen/html/search/all_12.html b/docs/doxygen/html/search/all_12.html deleted file mode 100644 index 13c52637..00000000 --- a/docs/doxygen/html/search/all_12.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_12.js b/docs/doxygen/html/search/all_12.js deleted file mode 100644 index a27555a4..00000000 --- a/docs/doxygen/html/search/all_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x',['X',['../classVec3T.html#a0643a9f9a68edf5d4656f2e613c9624f',1,'Vec3T::X()'],['../classVec2T.html#a66ea295b52114b22de1f76cce1aa7f51',1,'Vec2T::x()']]] -]; diff --git a/docs/doxygen/html/search/all_13.html b/docs/doxygen/html/search/all_13.html deleted file mode 100644 index b4a8bca6..00000000 --- a/docs/doxygen/html/search/all_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_13.js b/docs/doxygen/html/search/all_13.js deleted file mode 100644 index c7b08612..00000000 --- a/docs/doxygen/html/search/all_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['y',['y',['../classVec2T.html#a71ce5251d618a6dbd4e0e7a0f867b6cf',1,'Vec2T']]] -]; diff --git a/docs/doxygen/html/search/all_14.html b/docs/doxygen/html/search/all_14.html deleted file mode 100644 index fb4d0ecc..00000000 --- a/docs/doxygen/html/search/all_14.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_14.js b/docs/doxygen/html/search/all_14.js deleted file mode 100644 index 8a59d13a..00000000 --- a/docs/doxygen/html/search/all_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zero',['zero',['../classVec2T.html#a3c243787a7817ce09946691cdf14d0e0',1,'Vec2T::zero()'],['../classVec3T.html#af438ba5c8990b07e566bf7e48dcbcfb2',1,'Vec3T::zero()']]] -]; diff --git a/docs/doxygen/html/search/all_15.html b/docs/doxygen/html/search/all_15.html deleted file mode 100644 index 8afe9a03..00000000 --- a/docs/doxygen/html/search/all_15.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_15.js b/docs/doxygen/html/search/all_15.js deleted file mode 100644 index 2f91737e..00000000 --- a/docs/doxygen/html/search/all_15.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['_7eaabbt',['~AABBT',['../classBoundingVolumes_1_1AABBT.html#af0a2f67ce6f85f947849d199e6dee1aa',1,'BoundingVolumes::AABBT']]], - ['_7eboundingspheret',['~BoundingSphereT',['../classBoundingVolumes_1_1BoundingSphereT.html#a4495da5774e14f97c0e7579b37cfd60e',1,'BoundingVolumes::BoundingSphereT']]], - ['_7eboxsdf',['~BoxSDF',['../classBoxSDF.html#aae169f61825b3235cbb44d299c36e268',1,'BoxSDF']]], - ['_7ecylindersdf',['~CylinderSDF',['../classCylinderSDF.html#a974c6b114bc5dbf88c171de5328dcaf6',1,'CylinderSDF']]], - ['_7eedget',['~EdgeT',['../classDcel_1_1EdgeT.html#a94083c72ec137f822fcb08fb600ddd87',1,'Dcel::EdgeT']]], - ['_7efacet',['~FaceT',['../classDcel_1_1FaceT.html#a56988526e98a2626c644117e9298fd4b',1,'Dcel::FaceT']]], - ['_7elinearbvh',['~LinearBVH',['../classBVH_1_1LinearBVH.html#a39a98014b81061b35604422cfab5c9b7',1,'BVH::LinearBVH']]], - ['_7elinearnodet',['~LinearNodeT',['../classBVH_1_1LinearNodeT.html#a4b5dd392397794113ad3b5bb2ed5003a',1,'BVH::LinearNodeT']]], - ['_7emesht',['~MeshT',['../classDcel_1_1MeshT.html#a51da8ad54b3cfe69a695221f73bd97b2',1,'Dcel::MeshT']]], - ['_7enodet',['~NodeT',['../classBVH_1_1NodeT.html#a5bc328f2381b6babe37496758ea4b583',1,'BVH::NodeT']]], - ['_7epolygon2d',['~Polygon2D',['../classDcel_1_1Polygon2D.html#a0c605c847f830faf8a9f4fbc7a5c5a12',1,'Dcel::Polygon2D']]], - ['_7erotateop',['~RotateOp',['../classRotateOp.html#aaa12091fe7937f5ed7e2d35e0632337b',1,'RotateOp']]], - ['_7esigneddistancefunction',['~SignedDistanceFunction',['../classSignedDistanceFunction.html#ab47b289bd8351d7f323938c91b2bb92b',1,'SignedDistanceFunction']]], - ['_7espheresdf',['~SphereSDF',['../classSphereSDF.html#ab5980286d17bb9da7425b4d9d4045850',1,'SphereSDF']]], - ['_7etorussdf',['~TorusSDF',['../classTorusSDF.html#a97178b72cbb9208b7dde0a6db1ab6e18',1,'TorusSDF']]], - ['_7etransformop',['~TransformOp',['../classTransformOp.html#a556cc7f5bbe70ce148a0791b883eb58c',1,'TransformOp']]], - ['_7etranslateop',['~TranslateOp',['../classTranslateOp.html#ad96b4ec0f30fb98dbd684afef1bfff03',1,'TranslateOp']]], - ['_7eunion',['~Union',['../classUnion.html#a5c4f15da1b35f6f6643d49ed18faa386',1,'Union']]], - ['_7eunionbvh',['~UnionBVH',['../classUnionBVH.html#aac0a1f16ad0a273e72c8bcd15b80f336',1,'UnionBVH']]], - ['_7evec2t',['~Vec2T',['../classVec2T.html#a15a9bac13b94b58f0907443bc551dbee',1,'Vec2T']]], - ['_7evec3t',['~Vec3T',['../classVec3T.html#a505fc5de8e213d1fc8e0df5f3b7a3dc7',1,'Vec3T']]], - ['_7evertext',['~VertexT',['../classDcel_1_1VertexT.html#ab0a8e0aa0960f68177e115b897283a1c',1,'Dcel::VertexT']]] -]; diff --git a/docs/doxygen/html/search/all_2.html b/docs/doxygen/html/search/all_2.html deleted file mode 100644 index 9543c57b..00000000 --- a/docs/doxygen/html/search/all_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_2.js b/docs/doxygen/html/search/all_2.js deleted file mode 100644 index b303f4e9..00000000 --- a/docs/doxygen/html/search/all_2.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['computeandstoreedges',['computeAndStoreEdges',['../classDcel_1_1FaceT.html#a5e913d5cdebb6b95c43e6e0fdc2e3589',1,'Dcel::FaceT']]], - ['computearea',['computeArea',['../classDcel_1_1FaceT.html#a3a3bfa74a7c07252a2a904206678bb66',1,'Dcel::FaceT']]], - ['computecentroid',['computeCentroid',['../classDcel_1_1FaceT.html#a7aded1c77a78a38115e5388311ed25b0',1,'Dcel::FaceT']]], - ['computeedgelength',['computeEdgeLength',['../classDcel_1_1EdgeT.html#abddfe200f9af04cf49362d4ed1e8d37b',1,'Dcel::EdgeT']]], - ['computenormal',['computeNormal',['../classDcel_1_1EdgeT.html#ad78566030a7781469035cc4b6ed3393b',1,'Dcel::EdgeT::computeNormal()'],['../classDcel_1_1FaceT.html#a574abc710dd63e88503d4011f27adf89',1,'Dcel::FaceT::computeNormal()']]], - ['computepolygon2d',['computePolygon2D',['../classDcel_1_1FaceT.html#a863d94c15412e535ca62f9cd52eead5f',1,'Dcel::FaceT']]], - ['computevertexnormalangleweighted',['computeVertexNormalAngleWeighted',['../classDcel_1_1VertexT.html#aa9e66780ec134afe94d9e5a8221fdc0e',1,'Dcel::VertexT::computeVertexNormalAngleWeighted() noexcept'],['../classDcel_1_1VertexT.html#aea793773eec08852108d3bd5c4eea5a9',1,'Dcel::VertexT::computeVertexNormalAngleWeighted(const std::vector< FacePtr > &a_faces) noexcept']]], - ['computevertexnormalaverage',['computeVertexNormalAverage',['../classDcel_1_1VertexT.html#adb439515e1814e3fdd9d040b9c1b22df',1,'Dcel::VertexT::computeVertexNormalAverage() noexcept'],['../classDcel_1_1VertexT.html#a6faffb2c5038d62c2f7866736ebe7393',1,'Dcel::VertexT::computeVertexNormalAverage(const std::vector< FacePtr > &a_faces) noexcept']]], - ['cross',['cross',['../classVec3T.html#af628d2d42a93200a929bd54a1fe8353f',1,'Vec3T']]], - ['cylindersdf',['CylinderSDF',['../classCylinderSDF.html',1,'CylinderSDF< T >'],['../classCylinderSDF.html#a4cad4283fea40d7e4f865a29f6b5bb20',1,'CylinderSDF::CylinderSDF()=delete'],['../classCylinderSDF.html#a0c710e871e7e7eb37f379c79c3412607',1,'CylinderSDF::CylinderSDF(const Vec3T< T > &a_center1, const Vec3T< T > &a_center2, const T &a_radius, const bool a_flipInside)']]] -]; diff --git a/docs/doxygen/html/search/all_3.html b/docs/doxygen/html/search/all_3.html deleted file mode 100644 index 03405c0f..00000000 --- a/docs/doxygen/html/search/all_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_3.js b/docs/doxygen/html/search/all_3.js deleted file mode 100644 index 55562d65..00000000 --- a/docs/doxygen/html/search/all_3.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['dcel',['Dcel',['../namespaceDcel.html',1,'']]], - ['defaultbvconstructor',['defaultBVConstructor',['../namespaceDcel.html#a628449c42ce3f2784ca018f2a3c88a11',1,'Dcel']]], - ['defaultstopfunction',['defaultStopFunction',['../namespaceDcel.html#a45e9f2554a8d9ea01164cd51f787f989',1,'Dcel']]], - ['define',['define',['../classBoundingVolumes_1_1BoundingSphereT.html#aac21650a7d3f65081483512064cbcfa8',1,'BoundingVolumes::BoundingSphereT::define()'],['../classBoundingVolumes_1_1AABBT.html#a5ff57720a5d6511642ce39a09a7b7663',1,'BoundingVolumes::AABBT::define()'],['../classDcel_1_1EdgeT.html#aa3257bd5d35041860b10e882e68b2c14',1,'Dcel::EdgeT::define()'],['../classDcel_1_1FaceT.html#a44b70fa51382ef625d110bbad64b7442',1,'Dcel::FaceT::define()'],['../classDcel_1_1MeshT.html#af65f5fc459d586ba3b6bd0711b0951f5',1,'Dcel::MeshT::define()'],['../classDcel_1_1VertexT.html#a20a894d436707a4205501bbc5cd72323',1,'Dcel::VertexT::define()']]], - ['directsigneddistance',['DirectSignedDistance',['../classDcel_1_1MeshT.html#ada074ff3b1a612e46098f4ba6ca0bda2',1,'Dcel::MeshT']]], - ['directsigneddistance2',['DirectSignedDistance2',['../classDcel_1_1MeshT.html#ac00a6da46649246a3a2db70b29bb2407',1,'Dcel::MeshT']]], - ['dot',['dot',['../classVec2T.html#ab7ed0195847b7a1037051402967780a3',1,'Vec2T::dot()'],['../classVec3T.html#ab4bebdfbdc863826a1a7e86cad130ff8',1,'Vec3T::dot()']]], - ['parser',['Parser',['../namespaceDcel_1_1Parser.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/all_4.html b/docs/doxygen/html/search/all_4.html deleted file mode 100644 index 8e1f4b9c..00000000 --- a/docs/doxygen/html/search/all_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_4.js b/docs/doxygen/html/search/all_4.js deleted file mode 100644 index df888d83..00000000 --- a/docs/doxygen/html/search/all_4.js +++ /dev/null @@ -1,43 +0,0 @@ -var searchData= -[ - ['ebgeometry',['EBGeometry',['../namespaceEBGeometry.html',1,'']]], - ['ebgeometry_5fanalyticdistancefunctions_2ehpp',['EBGeometry_AnalyticDistanceFunctions.hpp',['../EBGeometry__AnalyticDistanceFunctions_8hpp.html',1,'']]], - ['ebgeometry_5fboundingvolumes_2ehpp',['EBGeometry_BoundingVolumes.hpp',['../EBGeometry__BoundingVolumes_8hpp.html',1,'']]], - ['ebgeometry_5fboundingvolumesimplem_2ehpp',['EBGeometry_BoundingVolumesImplem.hpp',['../EBGeometry__BoundingVolumesImplem_8hpp.html',1,'']]], - ['ebgeometry_5fbvh_2ehpp',['EBGeometry_BVH.hpp',['../EBGeometry__BVH_8hpp.html',1,'']]], - ['ebgeometry_5fbvhimplem_2ehpp',['EBGeometry_BVHImplem.hpp',['../EBGeometry__BVHImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcel_2ehpp',['EBGeometry_Dcel.hpp',['../EBGeometry__Dcel_8hpp.html',1,'']]], - ['ebgeometry_5fdcelbvh_2ehpp',['EBGeometry_DcelBVH.hpp',['../EBGeometry__DcelBVH_8hpp.html',1,'']]], - ['ebgeometry_5fdceledge_2ehpp',['EBGeometry_DcelEdge.hpp',['../EBGeometry__DcelEdge_8hpp.html',1,'']]], - ['ebgeometry_5fdceledgeimplem_2ehpp',['EBGeometry_DcelEdgeImplem.hpp',['../EBGeometry__DcelEdgeImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelface_2ehpp',['EBGeometry_DcelFace.hpp',['../EBGeometry__DcelFace_8hpp.html',1,'']]], - ['ebgeometry_5fdcelfaceimplem_2ehpp',['EBGeometry_DcelFaceImplem.hpp',['../EBGeometry__DcelFaceImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdceliterator_2ehpp',['EBGeometry_DcelIterator.hpp',['../EBGeometry__DcelIterator_8hpp.html',1,'']]], - ['ebgeometry_5fdceliteratorimplem_2ehpp',['EBGeometry_DcelIteratorImplem.hpp',['../EBGeometry__DcelIteratorImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelmesh_2ehpp',['EBGeometry_DcelMesh.hpp',['../EBGeometry__DcelMesh_8hpp.html',1,'']]], - ['ebgeometry_5fdcelmeshimplem_2ehpp',['EBGeometry_DcelMeshImplem.hpp',['../EBGeometry__DcelMeshImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelparser_2ehpp',['EBGeometry_DcelParser.hpp',['../EBGeometry__DcelParser_8hpp.html',1,'']]], - ['ebgeometry_5fdcelparserimplem_2ehpp',['EBGeometry_DcelParserImplem.hpp',['../EBGeometry__DcelParserImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelpolygon2d_2ehpp',['EBGeometry_DcelPolygon2D.hpp',['../EBGeometry__DcelPolygon2D_8hpp.html',1,'']]], - ['ebgeometry_5fdcelpolygon2dimplem_2ehpp',['EBGeometry_DcelPolygon2DImplem.hpp',['../EBGeometry__DcelPolygon2DImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelvertex_2ehpp',['EBGeometry_DcelVertex.hpp',['../EBGeometry__DcelVertex_8hpp.html',1,'']]], - ['ebgeometry_5fdcelverteximplem_2ehpp',['EBGeometry_DcelVertexImplem.hpp',['../EBGeometry__DcelVertexImplem_8hpp.html',1,'']]], - ['ebgeometry_5fnamespacefooter_2ehpp',['EBGeometry_NamespaceFooter.hpp',['../EBGeometry__NamespaceFooter_8hpp.html',1,'']]], - ['ebgeometry_5fnamespaceheader_2ehpp',['EBGeometry_NamespaceHeader.hpp',['../EBGeometry__NamespaceHeader_8hpp.html',1,'']]], - ['ebgeometry_5fsigneddistancefunction_2ehpp',['EBGeometry_SignedDistanceFunction.hpp',['../EBGeometry__SignedDistanceFunction_8hpp.html',1,'']]], - ['ebgeometry_5fsigneddistancefunctionimplem_2ehpp',['EBGeometry_SignedDistanceFunctionImplem.hpp',['../EBGeometry__SignedDistanceFunctionImplem_8hpp.html',1,'']]], - ['ebgeometry_5ftransformops_2ehpp',['EBGeometry_TransformOps.hpp',['../EBGeometry__TransformOps_8hpp.html',1,'']]], - ['ebgeometry_5ftransformopsimplem_2ehpp',['EBGeometry_TransformOpsImplem.hpp',['../EBGeometry__TransformOpsImplem_8hpp.html',1,'']]], - ['ebgeometry_5funion_2ehpp',['EBGeometry_Union.hpp',['../EBGeometry__Union_8hpp.html',1,'']]], - ['ebgeometry_5funionbvh_2ehpp',['EBGeometry_UnionBVH.hpp',['../EBGeometry__UnionBVH_8hpp.html',1,'']]], - ['ebgeometry_5funionbvhimplem_2ehpp',['EBGeometry_UnionBVHImplem.hpp',['../EBGeometry__UnionBVHImplem_8hpp.html',1,'']]], - ['ebgeometry_5funionimplem_2ehpp',['EBGeometry_UnionImplem.hpp',['../EBGeometry__UnionImplem_8hpp.html',1,'']]], - ['ebgeometry_5fvec_2ehpp',['EBGeometry_Vec.hpp',['../EBGeometry__Vec_8hpp.html',1,'']]], - ['ebgeometry_5fvecimplem_2ehpp',['EBGeometry_VecImplem.hpp',['../EBGeometry__VecImplem_8hpp.html',1,'']]], - ['edge',['Edge',['../classDcel_1_1EdgeT.html#a00184663a9d069d2c7a7e0a970f71fd5',1,'Dcel::EdgeT::Edge()'],['../classDcel_1_1FaceT.html#a32a6b328d61bd2739fd840b892833c41',1,'Dcel::FaceT::Edge()'],['../classDcel_1_1EdgeIteratorT.html#ab65ac3b39da5eeb9e3e795f62647ac0b',1,'Dcel::EdgeIteratorT::Edge()'],['../classDcel_1_1MeshT.html#a94f5c42e6f80fd948ebbc294d948ffab',1,'Dcel::MeshT::Edge()'],['../classDcel_1_1Parser_1_1PLY.html#af3741c96a8a8434780665641912ff1d4',1,'Dcel::Parser::PLY::Edge()'],['../classDcel_1_1VertexT.html#abe1079747424916a164ec68b46333fc3',1,'Dcel::VertexT::Edge()']]], - ['edgeiterator',['EdgeIterator',['../classDcel_1_1EdgeT.html#ad55f43bd1061c5ab99c80005861d5bcf',1,'Dcel::EdgeT::EdgeIterator()'],['../classDcel_1_1FaceT.html#afcd6f529cb59cd3dc358d6da52de54a1',1,'Dcel::FaceT::EdgeIterator()'],['../classDcel_1_1Parser_1_1PLY.html#aa0a9888ee0a1539928e6c1ffdda299a8',1,'Dcel::Parser::PLY::EdgeIterator()'],['../classDcel_1_1VertexT.html#abf182ec635351e107cd474df25b6ba73',1,'Dcel::VertexT::EdgeIterator()']]], - ['edgeiteratort',['EdgeIteratorT',['../classDcel_1_1EdgeIteratorT.html',1,'Dcel::EdgeIteratorT< T >'],['../classDcel_1_1EdgeIteratorT.html#a20ff352f5f61ce6297e82d5be43377ce',1,'Dcel::EdgeIteratorT::EdgeIteratorT()=delete'],['../classDcel_1_1EdgeIteratorT.html#aefe8b41b1b21825922096a45ce645149',1,'Dcel::EdgeIteratorT::EdgeIteratorT(Face &a_face)'],['../classDcel_1_1EdgeIteratorT.html#a1e47d3f1320c6ce4f37e1772ed936451',1,'Dcel::EdgeIteratorT::EdgeIteratorT(const Face &a_face)'],['../classDcel_1_1EdgeIteratorT.html#a0041cf8e8c4dcdda12a514aa64e295f7',1,'Dcel::EdgeIteratorT::EdgeIteratorT(Vertex &a_vertex)'],['../classDcel_1_1EdgeIteratorT.html#abda0210d73dd861142c8e23b4d589bd0',1,'Dcel::EdgeIteratorT::EdgeIteratorT(const Vertex &a_vertex)']]], - ['edgeptr',['EdgePtr',['../classDcel_1_1EdgeT.html#af525f4228d820f6b8b23fc02d937e4c8',1,'Dcel::EdgeT::EdgePtr()'],['../classDcel_1_1FaceT.html#a0f3448c4cf108341e48029b8040c7cec',1,'Dcel::FaceT::EdgePtr()'],['../classDcel_1_1EdgeIteratorT.html#a75d19cf89d4ac007483aa8124482513b',1,'Dcel::EdgeIteratorT::EdgePtr()'],['../classDcel_1_1MeshT.html#ab2b035530536a8bc56e40aab455f24e3',1,'Dcel::MeshT::EdgePtr()'],['../classDcel_1_1VertexT.html#a7c049a24ac43b9750578e4f4ed543831',1,'Dcel::VertexT::EdgePtr()']]], - ['edget',['EdgeT',['../classDcel_1_1EdgeT.html',1,'Dcel::EdgeT< T >'],['../classDcel_1_1EdgeT.html#a2a9682fd036374aad598a50fe54b2c1f',1,'Dcel::EdgeT::EdgeT()'],['../classDcel_1_1EdgeT.html#abe96b4404fa1961df79ffa618a7e8633',1,'Dcel::EdgeT::EdgeT(const Edge &a_otherEdge)'],['../classDcel_1_1EdgeT.html#a639b427e60ede1948f8344a41b9bfc32',1,'Dcel::EdgeT::EdgeT(const VertexPtr &a_vertex)']]], - ['ebgeometry',['EBGeometry',['../index.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/all_5.html b/docs/doxygen/html/search/all_5.html deleted file mode 100644 index 89a879ea..00000000 --- a/docs/doxygen/html/search/all_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_5.js b/docs/doxygen/html/search/all_5.js deleted file mode 100644 index 00ba3ec7..00000000 --- a/docs/doxygen/html/search/all_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['face',['Face',['../classDcel_1_1EdgeT.html#a46456b8f418abc6f09154e8e0d398e37',1,'Dcel::EdgeT::Face()'],['../classDcel_1_1FaceT.html#a01d61241adc3c536c364084740b8c6da',1,'Dcel::FaceT::Face()'],['../classDcel_1_1EdgeIteratorT.html#a59cc24c2a7a6a12c5c60bc04b0ac7497',1,'Dcel::EdgeIteratorT::Face()'],['../classDcel_1_1MeshT.html#ac1fcce96c65811660619af9eb32589f9',1,'Dcel::MeshT::Face()'],['../classDcel_1_1Parser_1_1PLY.html#ac67854dee5613f4e877e8caddb4580f3',1,'Dcel::Parser::PLY::Face()'],['../classDcel_1_1VertexT.html#a455510a8591a4e0f235b2049deb96e08',1,'Dcel::VertexT::Face()']]], - ['faceptr',['FacePtr',['../classDcel_1_1EdgeT.html#a97dd9849ea4a21223095f852e48e36e8',1,'Dcel::EdgeT::FacePtr()'],['../classDcel_1_1FaceT.html#a4c7f99f7e30983c04a9d0b2f7ca40736',1,'Dcel::FaceT::FacePtr()'],['../classDcel_1_1EdgeIteratorT.html#a99deb9b82e268cf8fd1f7c0b94fea339',1,'Dcel::EdgeIteratorT::FacePtr()'],['../classDcel_1_1MeshT.html#a6c71642a9e6b36f9d6ab6027035625f0',1,'Dcel::MeshT::FacePtr()'],['../classDcel_1_1VertexT.html#a5acb4c66c49319683c71f52e56ad8e8a',1,'Dcel::VertexT::FacePtr()']]], - ['facet',['FaceT',['../classDcel_1_1FaceT.html',1,'Dcel::FaceT< T >'],['../classDcel_1_1FaceT.html#ad26587e282563bc4e8c6559b2551627f',1,'Dcel::FaceT::FaceT()'],['../classDcel_1_1FaceT.html#a9111394950a9fb2f8b918423416c83bd',1,'Dcel::FaceT::FaceT(const EdgePtr &a_edge)'],['../classDcel_1_1FaceT.html#a0c318a29cae34ba4105235fd55d22b39',1,'Dcel::FaceT::FaceT(const Face &a_otherFace)']]], - ['flattentree',['flattenTree',['../classBVH_1_1NodeT.html#acb801f1e446a6472f5d330e85318bdb3',1,'BVH::NodeT::flattenTree() const noexcept'],['../classBVH_1_1NodeT.html#aa01d6673b9e48735594b01bdcbefc63f',1,'BVH::NodeT::flattenTree(std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, std::vector< std::shared_ptr< const P > > &a_sortedPrimitives, unsigned long &a_offset) const noexcept']]] -]; diff --git a/docs/doxygen/html/search/all_6.html b/docs/doxygen/html/search/all_6.html deleted file mode 100644 index 6afac066..00000000 --- a/docs/doxygen/html/search/all_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_6.js b/docs/doxygen/html/search/all_6.js deleted file mode 100644 index ee47470a..00000000 --- a/docs/doxygen/html/search/all_6.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['gathervertices',['gatherVertices',['../classDcel_1_1FaceT.html#aba1c0e341f18097112fd55465cc00eeb',1,'Dcel::FaceT']]], - ['getallvertexcoordinates',['getAllVertexCoordinates',['../classDcel_1_1FaceT.html#a17f38028d7bd3150feb22484e601f557',1,'Dcel::FaceT::getAllVertexCoordinates()'],['../classDcel_1_1MeshT.html#a597a38ed9f3e3a2a33f2d1211da322f3',1,'Dcel::MeshT::getAllVertexCoordinates()']]], - ['getarea',['getArea',['../classBoundingVolumes_1_1BoundingSphereT.html#a303fd50d1b8d27c7014c50ba0867a0b3',1,'BoundingVolumes::BoundingSphereT::getArea()'],['../classBoundingVolumes_1_1AABBT.html#ae2f3ba3dde664cccd7c46b0ef4f087d6',1,'BoundingVolumes::AABBT::getArea()'],['../classDcel_1_1FaceT.html#aeddb2fe440acd3dadc6160be390127fe',1,'Dcel::FaceT::getArea() noexcept'],['../classDcel_1_1FaceT.html#ab5352c13f01b1d2ec8fbd630d4c01083',1,'Dcel::FaceT::getArea() const noexcept']]], - ['getboundingvolume',['getBoundingVolume',['../classBVH_1_1NodeT.html#a02cba4dcb065ebfaeea7e4d251b89d04',1,'BVH::NodeT::getBoundingVolume()'],['../classBVH_1_1LinearNodeT.html#a152b12723c86f8fcb7522562cd97cd67',1,'BVH::LinearNodeT::getBoundingVolume()']]], - ['getcenter',['getCenter',['../classSphereSDF.html#a82922ae162a9b96279cc4d0d866b303d',1,'SphereSDF::getCenter() const noexcept'],['../classSphereSDF.html#a4f3a9220bfe2fc817131f655ce6f30cd',1,'SphereSDF::getCenter() noexcept'],['../classTorusSDF.html#a0973ae5f9e4a023ae15728d0a5063b4d',1,'TorusSDF::getCenter() const noexcept'],['../classTorusSDF.html#ad4a6d109ff640e2cb003901bf6ac1c85',1,'TorusSDF::getCenter() noexcept']]], - ['getcenter1',['getCenter1',['../classCylinderSDF.html#a7f6134d1ef1fe08ffaf43ece08c84fe0',1,'CylinderSDF']]], - ['getcenter2',['getCenter2',['../classCylinderSDF.html#aa4188d330f841f04a3f7dba6d1ef9c8f',1,'CylinderSDF']]], - ['getcentroid',['getCentroid',['../classBoundingVolumes_1_1BoundingSphereT.html#ac3adb87ea4da98d70375e5806e8dfdc5',1,'BoundingVolumes::BoundingSphereT::getCentroid() noexcept'],['../classBoundingVolumes_1_1BoundingSphereT.html#a62e38a048c7aacd79aec8dcc251e3a65',1,'BoundingVolumes::BoundingSphereT::getCentroid() const noexcept'],['../classBoundingVolumes_1_1AABBT.html#a7c98cb4cec1eb672755c9c469ca44990',1,'BoundingVolumes::AABBT::getCentroid()'],['../classDcel_1_1FaceT.html#a1b9c15538b2d7840a11b30f5e236c2a9',1,'Dcel::FaceT::getCentroid() noexcept'],['../classDcel_1_1FaceT.html#af2bf6614093074f450b2e0e5ea58682a',1,'Dcel::FaceT::getCentroid() const noexcept'],['../classDcel_1_1FaceT.html#a43e5b9aebe8736a42568ae0e6fbb6db3',1,'Dcel::FaceT::getCentroid(const int a_dir) noexcept'],['../classDcel_1_1FaceT.html#ac835d260a630e303babd7f87eb7d5a1a',1,'Dcel::FaceT::getCentroid(const int a_dir) const noexcept']]], - ['getchildoffsets',['getChildOffsets',['../classBVH_1_1LinearNodeT.html#af08feacbaa148425a896c196b0b6d1da',1,'BVH::LinearNodeT']]], - ['getchildren',['getChildren',['../classBVH_1_1NodeT.html#ac8df9e7b154186207263b8727e1084a8',1,'BVH::NodeT']]], - ['getdistance',['getDistance',['../classBoundingVolumes_1_1BoundingSphereT.html#a06ec858b7349e6a926ad476990c774cb',1,'BoundingVolumes::BoundingSphereT::getDistance()'],['../classBoundingVolumes_1_1AABBT.html#ad883975a0926c0755a978283137f378f',1,'BoundingVolumes::AABBT::getDistance()']]], - ['getdistancetoboundingvolume',['getDistanceToBoundingVolume',['../classBVH_1_1NodeT.html#a8da9f78078b0a579868d026bd61a2947',1,'BVH::NodeT::getDistanceToBoundingVolume()'],['../classBVH_1_1LinearNodeT.html#a2bf5b1c514a20754d527b17e1c664630',1,'BVH::LinearNodeT::getDistanceToBoundingVolume()']]], - ['getdistancetoprimitives',['getDistanceToPrimitives',['../classBVH_1_1NodeT.html#a61dc7040d57f0a69984548eb4804244b',1,'BVH::NodeT::getDistanceToPrimitives()'],['../classBVH_1_1LinearNodeT.html#a1a0a50ba8c1c0601f12ae02857246b1f',1,'BVH::LinearNodeT::getDistanceToPrimitives()']]], - ['getedges',['getEdges',['../classDcel_1_1MeshT.html#a3c6566eab929cc4108213959fa25777e',1,'Dcel::MeshT::getEdges() noexcept'],['../classDcel_1_1MeshT.html#a3440c0836148040bfd6cc679f047ec5b',1,'Dcel::MeshT::getEdges() const noexcept']]], - ['getface',['getFace',['../classDcel_1_1EdgeT.html#a522de398f834c68701e4a44f2c9ba972',1,'Dcel::EdgeT::getFace() noexcept'],['../classDcel_1_1EdgeT.html#a3966ae6b38b26c618cfb56bd5adb8b54',1,'Dcel::EdgeT::getFace() const noexcept']]], - ['getfaces',['getFaces',['../classDcel_1_1MeshT.html#a348cffec1fa223f131819abad1c89338',1,'Dcel::MeshT::getFaces() noexcept'],['../classDcel_1_1MeshT.html#afe1bd52d15af160f691bdd83305c84c7',1,'Dcel::MeshT::getFaces() const noexcept'],['../classDcel_1_1VertexT.html#a1d365de69778aa4bb35f80c936e95251',1,'Dcel::VertexT::getFaces() noexcept'],['../classDcel_1_1VertexT.html#aa73d20542e46c20afba1f14cd061f126',1,'Dcel::VertexT::getFaces() const noexcept']]], - ['gethalfedge',['getHalfEdge',['../classDcel_1_1FaceT.html#a121a02750336ee4050bfd5db8f9328b4',1,'Dcel::FaceT::getHalfEdge() noexcept'],['../classDcel_1_1FaceT.html#a1b273c8c0157f7ec9604424a2b073db3',1,'Dcel::FaceT::getHalfEdge() const noexcept']]], - ['gethighcorner',['getHighCorner',['../classBoxSDF.html#a10f3d6859f29566cca0bf2e89d1142c3',1,'BoxSDF::getHighCorner() const noexcept'],['../classBoxSDF.html#a624cf8fea66776ecce602039beb1059c',1,'BoxSDF::getHighCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#a2ecaeccecdb8882051516409e5749ef9',1,'BoundingVolumes::AABBT::getHighCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#aef8dcd08ea8726cdcd3d361d33c4d554',1,'BoundingVolumes::AABBT::getHighCorner() const noexcept']]], - ['gethighestcoordinate',['getHighestCoordinate',['../classDcel_1_1FaceT.html#ad712b8dec98d77e631e1c7a920424d1f',1,'Dcel::FaceT']]], - ['getlowcorner',['getLowCorner',['../classBoxSDF.html#a564b5f203d6bec78be94da4b9119748a',1,'BoxSDF::getLowCorner() const noexcept'],['../classBoxSDF.html#aa4ce24307fa921d36527ae4a8d6c0b36',1,'BoxSDF::getLowCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#a6368509e66a2b5691272f273fe96f670',1,'BoundingVolumes::AABBT::getLowCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#a937cfc6cbbbd457f872370c1c4d5e81e',1,'BoundingVolumes::AABBT::getLowCorner() const noexcept']]], - ['getmajorradius',['getMajorRadius',['../classTorusSDF.html#acf871d02fb580a9c33d6c54517730036',1,'TorusSDF::getMajorRadius() const noexcept'],['../classTorusSDF.html#a81910ce83df61223ab3484c7de0747c7',1,'TorusSDF::getMajorRadius() noexcept']]], - ['getminorradius',['getMinorRadius',['../classTorusSDF.html#a3af383d80c8d11ab9d39fc872d661a42',1,'TorusSDF::getMinorRadius() const noexcept'],['../classTorusSDF.html#a0eff8ed5c429c6f80580c9660ac9cdfa',1,'TorusSDF::getMinorRadius() noexcept']]], - ['getnextedge',['getNextEdge',['../classDcel_1_1EdgeT.html#a1c865581d60a3e89e91d1d8db56fc2d1',1,'Dcel::EdgeT::getNextEdge() noexcept'],['../classDcel_1_1EdgeT.html#a6b50d3dd8ab3e2cda28819f6e4be9769',1,'Dcel::EdgeT::getNextEdge() const noexcept']]], - ['getnormal',['getNormal',['../classDcel_1_1EdgeT.html#a3caca2b8e0d73531566218a7febe24d8',1,'Dcel::EdgeT::getNormal() noexcept'],['../classDcel_1_1EdgeT.html#a60b8b2acf41484ff0c521310cece56a3',1,'Dcel::EdgeT::getNormal() const noexcept'],['../classDcel_1_1FaceT.html#a0e6079ca8d45b2e2090bd6202c7a679e',1,'Dcel::FaceT::getNormal() noexcept'],['../classDcel_1_1FaceT.html#adff3ebb9eba8d500e21fed65b32ea8fb',1,'Dcel::FaceT::getNormal() const noexcept'],['../classDcel_1_1VertexT.html#a11d1c90ccfa44b5ea121223bd86214c9',1,'Dcel::VertexT::getNormal() noexcept'],['../classDcel_1_1VertexT.html#a6d2d15dff96e192dff0254d40e1927b7',1,'Dcel::VertexT::getNormal() const noexcept']]], - ['getnumprimitives',['getNumPrimitives',['../classBVH_1_1LinearNodeT.html#a245e67b6824cadf1733c3c9176259106',1,'BVH::LinearNodeT']]], - ['getothervertex',['getOtherVertex',['../classDcel_1_1EdgeT.html#aaa6ae21b177a7661ba61ad2b63ed47f3',1,'Dcel::EdgeT::getOtherVertex() noexcept'],['../classDcel_1_1EdgeT.html#ac2b40be7e45425caaf85b13b50bd89a0',1,'Dcel::EdgeT::getOtherVertex() const noexcept']]], - ['getoutgoingedge',['getOutgoingEdge',['../classDcel_1_1VertexT.html#ae310f38b6e5b9bb4bae4633117a26708',1,'Dcel::VertexT::getOutgoingEdge() noexcept'],['../classDcel_1_1VertexT.html#ab726cf7028c0b9de7eaff211d9ca34aa',1,'Dcel::VertexT::getOutgoingEdge() const noexcept']]], - ['getoverlappingvolume',['getOverlappingVolume',['../classBoundingVolumes_1_1BoundingSphereT.html#a4581b87c7a3ccd3b58168bfdae9436cb',1,'BoundingVolumes::BoundingSphereT::getOverlappingVolume()'],['../classBoundingVolumes_1_1AABBT.html#ae65563ac6f3851f8fb05e0c98613fc0d',1,'BoundingVolumes::AABBT::getOverlappingVolume()'],['../namespaceBoundingVolumes.html#a4f159289c317e02beedb4b38136ad692',1,'BoundingVolumes::getOverlappingVolume(const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept'],['../namespaceBoundingVolumes.html#ae5716e39e88aaeec0c204f453cac2acd',1,'BoundingVolumes::getOverlappingVolume(const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept']]], - ['getpairedge',['getPairEdge',['../classDcel_1_1EdgeT.html#a1a076a12b7e269aecd77172b1d4c57e1',1,'Dcel::EdgeT::getPairEdge() noexcept'],['../classDcel_1_1EdgeT.html#a46f28f7da631e2d0f7f3139d1167b392',1,'Dcel::EdgeT::getPairEdge() const noexcept']]], - ['getposition',['getPosition',['../classDcel_1_1VertexT.html#af3ecf093a2fc7fd0f728d463ccacb8ce',1,'Dcel::VertexT::getPosition() noexcept'],['../classDcel_1_1VertexT.html#a7a4c3e499c6f7e529cc556eecf94f3fe',1,'Dcel::VertexT::getPosition() const noexcept']]], - ['getpreviousedge',['getPreviousEdge',['../classDcel_1_1EdgeT.html#ad97e2996c4559b8977d807a5627d5251',1,'Dcel::EdgeT::getPreviousEdge() noexcept'],['../classDcel_1_1EdgeT.html#ae4baac4bda30dfa3827ea87f2f72481f',1,'Dcel::EdgeT::getPreviousEdge() const noexcept']]], - ['getprimitives',['getPrimitives',['../classBVH_1_1NodeT.html#a2e0c1e030162a2dc049acb4debd4d9f2',1,'BVH::NodeT::getPrimitives() const noexcept'],['../classBVH_1_1NodeT.html#adce9d9c6bd4ab3d613bef232353774f3',1,'BVH::NodeT::getPrimitives() noexcept']]], - ['getprimitivesoffset',['getPrimitivesOffset',['../classBVH_1_1LinearNodeT.html#a8cfca65bd808adc8eb2793e7d7aabcd3',1,'BVH::LinearNodeT']]], - ['getradius',['getRadius',['../classSphereSDF.html#a2cdc1f42f3de4c0ca017571910fbe72c',1,'SphereSDF::getRadius() const noexcept'],['../classSphereSDF.html#a09245289037ae77adf204160c0d5b9cc',1,'SphereSDF::getRadius() noexcept'],['../classCylinderSDF.html#a545624c47a5a898b74059e95d44461b2',1,'CylinderSDF::getRadius()'],['../classBoundingVolumes_1_1BoundingSphereT.html#a8c4f10492e97aa460b1207f384e1c081',1,'BoundingVolumes::BoundingSphereT::getRadius() noexcept'],['../classBoundingVolumes_1_1BoundingSphereT.html#affac2a4ac0cefaada01c5532eb13f26a',1,'BoundingVolumes::BoundingSphereT::getRadius() const noexcept']]], - ['getsmallestcoordinate',['getSmallestCoordinate',['../classDcel_1_1FaceT.html#a8eb0b35ecb5de2601dc9f7ff0d2cac0d',1,'Dcel::FaceT']]], - ['getvertex',['getVertex',['../classDcel_1_1EdgeT.html#a44193130714264f57d80e7bfc8264662',1,'Dcel::EdgeT::getVertex() noexcept'],['../classDcel_1_1EdgeT.html#afa36dc535018588ba2238c5f42a9abd8',1,'Dcel::EdgeT::getVertex() const noexcept']]], - ['getvertices',['getVertices',['../classDcel_1_1MeshT.html#a0ccf0a5a707dbad79b3578a401449e9c',1,'Dcel::MeshT::getVertices() noexcept'],['../classDcel_1_1MeshT.html#a579860225cb9fc926fea4856563bef08',1,'Dcel::MeshT::getVertices() const noexcept']]], - ['getvolume',['getVolume',['../classBoundingVolumes_1_1BoundingSphereT.html#a44e0069495c19069fced07aab8e614c6',1,'BoundingVolumes::BoundingSphereT::getVolume()'],['../classBoundingVolumes_1_1AABBT.html#ac5b8f2caa8afe1177f3d2924fbc3f7a5',1,'BoundingVolumes::AABBT::getVolume()']]] -]; diff --git a/docs/doxygen/html/search/all_7.html b/docs/doxygen/html/search/all_7.html deleted file mode 100644 index de191077..00000000 --- a/docs/doxygen/html/search/all_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_7.js b/docs/doxygen/html/search/all_7.js deleted file mode 100644 index 09b19e37..00000000 --- a/docs/doxygen/html/search/all_7.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['incrementwarning',['incrementWarning',['../classDcel_1_1MeshT.html#ae13801eefa60ad08ff1da0df1da34784',1,'Dcel::MeshT']]], - ['infinity',['infinity',['../classVec2T.html#a28b453ff4fd4ede74e401454b67f73d6',1,'Vec2T::infinity()'],['../classVec3T.html#ad88913a21fd56327b28092c2e39ebc3e',1,'Vec3T::infinity()']]], - ['insertchildren',['insertChildren',['../classBVH_1_1NodeT.html#a83c128d1045ccc23000a8b26f75b3172',1,'BVH::NodeT']]], - ['insideoutsidealgorithm',['InsideOutsideAlgorithm',['../classDcel_1_1Polygon2D.html#a1ec8170036eb8dd1cedbe1b4d31024b4',1,'Dcel::Polygon2D']]], - ['intersects',['intersects',['../classBoundingVolumes_1_1BoundingSphereT.html#a90baad0c400aac7645a7e8c1ab13096a',1,'BoundingVolumes::BoundingSphereT::intersects()'],['../classBoundingVolumes_1_1AABBT.html#a87d160a3e05082e34e37d8b4472bad7d',1,'BoundingVolumes::AABBT::intersects()'],['../namespaceBoundingVolumes.html#af35f33c5f319a466550d9ad1040beced',1,'BoundingVolumes::intersects(const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept'],['../namespaceBoundingVolumes.html#a5c360ccd42017c01acbe1caf2cfd1efe',1,'BoundingVolumes::intersects(const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept']]], - ['isleaf',['isLeaf',['../classBVH_1_1NodeT.html#a5c57552524601da9bf20e722e2433aa0',1,'BVH::NodeT::isLeaf()'],['../classBVH_1_1LinearNodeT.html#aba361834e3d013725a92ec4b45633584',1,'BVH::LinearNodeT::isLeaf()']]], - ['ispointinside',['isPointInside',['../classDcel_1_1Polygon2D.html#ade475a82be10cbacf382016e85316853',1,'Dcel::Polygon2D']]], - ['ispointinsideface',['isPointInsideFace',['../classDcel_1_1FaceT.html#a628d1734a63636a528fe2f7019bc4dd8',1,'Dcel::FaceT']]], - ['ispointinsidepolygoncrossingnumber',['isPointInsidePolygonCrossingNumber',['../classDcel_1_1Polygon2D.html#aa1edee7ad8913b35663792624e914aad',1,'Dcel::Polygon2D']]], - ['ispointinsidepolygonsubtend',['isPointInsidePolygonSubtend',['../classDcel_1_1Polygon2D.html#a8a6a32defe11ad15996e286aa76d4428',1,'Dcel::Polygon2D']]], - ['ispointinsidepolygonwindingnumber',['isPointInsidePolygonWindingNumber',['../classDcel_1_1Polygon2D.html#ad4d6b51a54f6a9c89812a5bcbc0e1902',1,'Dcel::Polygon2D']]], - ['iterationmode',['IterationMode',['../classDcel_1_1EdgeIteratorT.html#ad6b36e4ef39214ccd75966a6ecd82682',1,'Dcel::EdgeIteratorT']]] -]; diff --git a/docs/doxygen/html/search/all_8.html b/docs/doxygen/html/search/all_8.html deleted file mode 100644 index 11e27cdb..00000000 --- a/docs/doxygen/html/search/all_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_8.js b/docs/doxygen/html/search/all_8.js deleted file mode 100644 index ed98f6ca..00000000 --- a/docs/doxygen/html/search/all_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['length',['length',['../classVec2T.html#ad7965b8d549a5f9d08cab43760dab56b',1,'Vec2T::length()'],['../classVec3T.html#a93c868b181e24a4f74702a8b8a36f815',1,'Vec3T::length()']]], - ['length2',['length2',['../classVec2T.html#a9beb3ae1b8b76926f8864686cb6a2ace',1,'Vec2T::length2()'],['../classVec3T.html#aaed89aee434cfa0abd86fe33bff49b4e',1,'Vec3T::length2()']]], - ['linearbvh',['LinearBVH',['../classBVH_1_1LinearBVH.html',1,'BVH::LinearBVH< T, P, BV, K >'],['../classBVH_1_1LinearBVH.html#af071dcad6741be1314c0b39512d2f142',1,'BVH::LinearBVH::LinearBVH()=delete'],['../classBVH_1_1LinearBVH.html#a34fcf759d0b39c9d83aca039cd0b18a8',1,'BVH::LinearBVH::LinearBVH(const std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)'],['../classBVH_1_1LinearBVH.html#a413ba6da95c3839b90c4a3441aa5395b',1,'BVH::LinearBVH::LinearBVH(const std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)']]], - ['linearnode',['LinearNode',['../classBVH_1_1LinearBVH.html#ad8c5e4f84138090dbd408a075dc91896',1,'BVH::LinearBVH::LinearNode()'],['../classUnionBVH.html#a25cac5a9dc5396299f06399434ebe212',1,'UnionBVH::LinearNode()']]], - ['linearnodet',['LinearNodeT',['../classBVH_1_1LinearNodeT.html',1,'BVH::LinearNodeT< T, P, BV, K >'],['../classBVH_1_1LinearNodeT.html#ae7dbdb102840eb271dadea2f25aa6f8b',1,'BVH::LinearNodeT::LinearNodeT()']]] -]; diff --git a/docs/doxygen/html/search/all_9.html b/docs/doxygen/html/search/all_9.html deleted file mode 100644 index f8abbbe5..00000000 --- a/docs/doxygen/html/search/all_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_9.js b/docs/doxygen/html/search/all_9.js deleted file mode 100644 index 336cb2c2..00000000 --- a/docs/doxygen/html/search/all_9.js +++ /dev/null @@ -1,58 +0,0 @@ -var searchData= -[ - ['m_5falgorithm',['m_algorithm',['../classDcel_1_1MeshT.html#aaa5bdf8df02aa8bcff84203467f86fbe',1,'Dcel::MeshT']]], - ['m_5farea',['m_area',['../classDcel_1_1FaceT.html#a572c463c60afb896c8cec667c964631f',1,'Dcel::FaceT']]], - ['m_5faxis',['m_axis',['../classCylinderSDF.html#a034a7baec832c8a19fd2cd33ec1358eb',1,'CylinderSDF::m_axis()'],['../classRotateOp.html#ae0f4b6879b2b86506b4a528d7e627255',1,'RotateOp::m_axis()']]], - ['m_5fboundingvolume',['m_boundingVolume',['../classBVH_1_1NodeT.html#a7f8720f2ab03ee9e81de114c479cb2e5',1,'BVH::NodeT::m_boundingVolume()'],['../classBVH_1_1LinearNodeT.html#acef96b811ea69cd649fda35da082b361',1,'BVH::LinearNodeT::m_boundingVolume()']]], - ['m_5fcenter',['m_center',['../classSphereSDF.html#ab3caacb26a72b3ada01f09a248f5cb83',1,'SphereSDF::m_center()'],['../classTorusSDF.html#aa097ba79346768486083bf5269b20821',1,'TorusSDF::m_center()'],['../classCylinderSDF.html#a38e901843de5889a3c3eee35bc2a534c',1,'CylinderSDF::m_center()'],['../classBoundingVolumes_1_1BoundingSphereT.html#ad65d5be68c4028651d959dc8b88fe944',1,'BoundingVolumes::BoundingSphereT::m_center()']]], - ['m_5fcenter1',['m_center1',['../classCylinderSDF.html#ac69f666234c9625306153be47295cdbc',1,'CylinderSDF']]], - ['m_5fcenter2',['m_center2',['../classCylinderSDF.html#a02b8aea5350ad933ed53abea6cb58103',1,'CylinderSDF']]], - ['m_5fcentroid',['m_centroid',['../classDcel_1_1FaceT.html#a9a85e2c47be9ac4bbfe8620bc0773d6d',1,'Dcel::FaceT']]], - ['m_5fchildoffsets',['m_childOffsets',['../classBVH_1_1LinearNodeT.html#a2a160d04d0bea69de7eb949fd9d56dda',1,'BVH::LinearNodeT']]], - ['m_5fchildren',['m_children',['../classBVH_1_1NodeT.html#afaf556d6faa78c2cc2b27c82feb0145c',1,'BVH::NodeT']]], - ['m_5fcosangle',['m_cosAngle',['../classRotateOp.html#a8eed86f336946618f1964056405b9ac4',1,'RotateOp']]], - ['m_5fcuredge',['m_curEdge',['../classDcel_1_1EdgeIteratorT.html#afcebe87fbd158d212d7ba0a6b01efa8c',1,'Dcel::EdgeIteratorT']]], - ['m_5fdistancefunctions',['m_distanceFunctions',['../classUnion.html#a5d2f543272ab5fe25f6f5945ad1ef27f',1,'Union::m_distanceFunctions()'],['../classUnionBVH.html#a026a103a13d0b04bedb6dabd50e4da69',1,'UnionBVH::m_distanceFunctions()']]], - ['m_5fedges',['m_edges',['../classDcel_1_1FaceT.html#a9228b5f27e1aa5c9eea36a7c27462e6c',1,'Dcel::FaceT::m_edges()'],['../classDcel_1_1MeshT.html#a3325cb09037fa32255aa1a8a5536e473',1,'Dcel::MeshT::m_edges()']]], - ['m_5fface',['m_face',['../classDcel_1_1EdgeT.html#a47aaa6dbeeb6a56f1c7b6d73b2119761',1,'Dcel::EdgeT']]], - ['m_5ffaces',['m_faces',['../classDcel_1_1MeshT.html#a17e08b2ee4b5b7b1dc3df974e792ca5f',1,'Dcel::MeshT::m_faces()'],['../classDcel_1_1VertexT.html#ad0a8f9c1015b62c891ad2d877d6b8802',1,'Dcel::VertexT::m_faces()']]], - ['m_5fflipinside',['m_flipInside',['../classSphereSDF.html#a9a32a668648c166b41c5d1c3981c9579',1,'SphereSDF::m_flipInside()'],['../classBoxSDF.html#aac14b4352ba92c067f70884a99c934bf',1,'BoxSDF::m_flipInside()'],['../classTorusSDF.html#a41d7b8bbbf97d96d49432dcb1036573a',1,'TorusSDF::m_flipInside()'],['../classCylinderSDF.html#a1c57a3a6464820197347bcdc5977f7ba',1,'CylinderSDF::m_flipInside()']]], - ['m_5fflipsign',['m_flipSign',['../classUnion.html#a53b9705419030572836a540e7fa3752f',1,'Union::m_flipSign()'],['../classUnionBVH.html#a0782d93bd0a7bff7580a99e6fef285c7',1,'UnionBVH::m_flipSign()']]], - ['m_5ffullloop',['m_fullLoop',['../classDcel_1_1EdgeIteratorT.html#a39560da0f4479c53ed27c38bdfab7c21',1,'Dcel::EdgeIteratorT']]], - ['m_5fhalfedge',['m_halfEdge',['../classDcel_1_1FaceT.html#afe66c3d93bb0ea04d9a0d263b2927bd3',1,'Dcel::FaceT']]], - ['m_5fhicorner',['m_hiCorner',['../classBoxSDF.html#a96181447700a9106e937fa2ff73499b1',1,'BoxSDF::m_hiCorner()'],['../classBoundingVolumes_1_1AABBT.html#a35f9498191e406b3f48f7454bfdf0cf7',1,'BoundingVolumes::AABBT::m_hiCorner()']]], - ['m_5finvlen2',['m_invLen2',['../classDcel_1_1EdgeT.html#a3689615754e3bdafb12109d5b82183a7',1,'Dcel::EdgeT']]], - ['m_5fisgood',['m_isGood',['../classUnionBVH.html#a2c3a008bd61f225a83c959f2280b9649',1,'UnionBVH']]], - ['m_5fitermode',['m_iterMode',['../classDcel_1_1EdgeIteratorT.html#aa0c8a35a18d668927dd966ddd9620ce5',1,'Dcel::EdgeIteratorT']]], - ['m_5flength',['m_length',['../classCylinderSDF.html#a715c9888a921083d827bad94b4660626',1,'CylinderSDF']]], - ['m_5flinearnodes',['m_linearNodes',['../classBVH_1_1LinearBVH.html#ac11af18884c0568f3067ef12c7f53e39',1,'BVH::LinearBVH']]], - ['m_5flocorner',['m_loCorner',['../classBoxSDF.html#a7286bfb7a6669127b4902b1b2e9a2c80',1,'BoxSDF::m_loCorner()'],['../classBoundingVolumes_1_1AABBT.html#a5cbd0ee374c62951aa58644bc09f70cf',1,'BoundingVolumes::AABBT::m_loCorner()']]], - ['m_5fmajorradius',['m_majorRadius',['../classTorusSDF.html#a21d443b0a0f8af98856cdc7bce0363ba',1,'TorusSDF']]], - ['m_5fminorradius',['m_minorRadius',['../classTorusSDF.html#afedc4aacff95c95b97d1d540dddd2e99',1,'TorusSDF']]], - ['m_5fnextedge',['m_nextEdge',['../classDcel_1_1EdgeT.html#a26de8e8184c0a6656a2cee2af1bc0230',1,'Dcel::EdgeT']]], - ['m_5fnormal',['m_normal',['../classDcel_1_1EdgeT.html#af44c33f8b5b0a3d45cd4a83e6fde4db5',1,'Dcel::EdgeT::m_normal()'],['../classDcel_1_1FaceT.html#a886ee24ddf3dae99b836b39183a412ba',1,'Dcel::FaceT::m_normal()'],['../classDcel_1_1VertexT.html#a509216af6d1d2ca84d1d774b4a6c7659',1,'Dcel::VertexT::m_normal()']]], - ['m_5fnumprimitives',['m_numPrimitives',['../classBVH_1_1LinearNodeT.html#a59a4aff1eeac58606f4854e334e10a17',1,'BVH::LinearNodeT']]], - ['m_5foutgoingedge',['m_outgoingEdge',['../classDcel_1_1VertexT.html#ab02281ef4c214c2ea5567dae97864846',1,'Dcel::VertexT']]], - ['m_5fpairedge',['m_pairEdge',['../classDcel_1_1EdgeT.html#a5c3bc15e1360b931231cac396493f5b6',1,'Dcel::EdgeT']]], - ['m_5fpoly2',['m_poly2',['../classDcel_1_1FaceT.html#a77edb4eca91bcd6fb47ce3574c11b840',1,'Dcel::FaceT']]], - ['m_5fpoly2algorithm',['m_poly2Algorithm',['../classDcel_1_1FaceT.html#acc53b6246f9d5d57777789aad6084d14',1,'Dcel::FaceT']]], - ['m_5fposition',['m_position',['../classDcel_1_1VertexT.html#a1980e54dcfd5cefdebac129580028015',1,'Dcel::VertexT']]], - ['m_5fpreviousedge',['m_previousEdge',['../classDcel_1_1EdgeT.html#a77d21fbad704f8aa84aeddeaff1532fd',1,'Dcel::EdgeT']]], - ['m_5fprimitives',['m_primitives',['../classBVH_1_1NodeT.html#a3c45be2075d8cdfd0dc0a9e73373b64d',1,'BVH::NodeT::m_primitives()'],['../classBVH_1_1LinearBVH.html#aa4f627615c40d7230139ec1744384322',1,'BVH::LinearBVH::m_primitives()']]], - ['m_5fprimitivesoffset',['m_primitivesOffset',['../classBVH_1_1LinearNodeT.html#a05efc0076443c7131187adfadaad81ea',1,'BVH::LinearNodeT']]], - ['m_5fradius',['m_radius',['../classSphereSDF.html#ac4b0f786ea2b53530512ce3fa4e7bdbd',1,'SphereSDF::m_radius()'],['../classCylinderSDF.html#ad5ff6ceb3b872fcea0534f89d73f0268',1,'CylinderSDF::m_radius()'],['../classBoundingVolumes_1_1BoundingSphereT.html#adb424c867ed93cf5fdb62afe07a96a05',1,'BoundingVolumes::BoundingSphereT::m_radius()']]], - ['m_5frootnode',['m_rootNode',['../classUnionBVH.html#ad59be4f96e0f020c28f4677dcb94a004',1,'UnionBVH']]], - ['m_5fsinangle',['m_sinAngle',['../classRotateOp.html#ab0f3316357239d07fb1da64b7298d53f',1,'RotateOp']]], - ['m_5fstartedge',['m_startEdge',['../classDcel_1_1EdgeIteratorT.html#a39c525d750868014457cdf06a40455bd',1,'Dcel::EdgeIteratorT']]], - ['m_5ftransformops',['m_transformOps',['../classSignedDistanceFunction.html#af61e5e2ece6add9d2bcf8e5aa8cf2844',1,'SignedDistanceFunction']]], - ['m_5ftranslation',['m_translation',['../classTranslateOp.html#a35f16c6a9cf4c03edffa19d86e73d27a',1,'TranslateOp']]], - ['m_5fvertex',['m_vertex',['../classDcel_1_1EdgeT.html#a30813ecada33723cc466e0cd1d24abd4',1,'Dcel::EdgeT']]], - ['m_5fvertices',['m_vertices',['../classDcel_1_1MeshT.html#a4263fd9ebba22b96e12ee9f046eca089',1,'Dcel::MeshT']]], - ['m_5fx2x1',['m_x2x1',['../classDcel_1_1EdgeT.html#af70e7b85effe62dd804638984b15695a',1,'Dcel::EdgeT']]], - ['max',['max',['../classVec2T.html#a1211175344f9ee8bc0fd4ac2589799d8',1,'Vec2T::max()'],['../classVec3T.html#af06b99bd905435060149a61a13f61546',1,'Vec3T::max() noexcept'],['../classVec3T.html#ac126bbdaeff79e475327887bfa8aa62c',1,'Vec3T::max(const Vec3T< T > &u) noexcept'],['../EBGeometry__Vec_8hpp.html#a71f0bc32c9be501cf01a1b6c715dc0a9',1,'max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a71f0bc32c9be501cf01a1b6c715dc0a9',1,'max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp']]], - ['maxdir',['maxDir',['../classVec3T.html#a292391c1f72ca66e100e7e70512ff9b1',1,'Vec3T']]], - ['mesh',['Mesh',['../classDcel_1_1MeshT.html#abe9db973f4510ccb36e20ecfa9223926',1,'Dcel::MeshT::Mesh()'],['../classDcel_1_1Parser_1_1PLY.html#a047f135a59b43a0fb84f3629a790bba4',1,'Dcel::Parser::PLY::Mesh()']]], - ['mesht',['MeshT',['../classDcel_1_1MeshT.html',1,'Dcel::MeshT< T >'],['../classDcel_1_1MeshT.html#a4eae06529761d8aff54e945eb0a3ba91',1,'Dcel::MeshT::MeshT()'],['../classDcel_1_1MeshT.html#aa055e10c62778ba629b3f9c849338e03',1,'Dcel::MeshT::MeshT(const Mesh &a_otherMesh)=delete'],['../classDcel_1_1MeshT.html#a7468e3630893d64a71a7c2347496576b',1,'Dcel::MeshT::MeshT(std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices)']]], - ['min',['min',['../classVec2T.html#aca5161a674a3546a8c9d5543537548a3',1,'Vec2T::min()'],['../classVec3T.html#a4f27fdac2e6ac4feffe148bb8857f8bc',1,'Vec3T::min() noexcept'],['../classVec3T.html#ad0a0c9754ef8df1fa28abdaa01c246c4',1,'Vec3T::min(const Vec3T< T > &u) noexcept'],['../EBGeometry__Vec_8hpp.html#a291f01622695ab94c0092c3af0a1f3ca',1,'min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a291f01622695ab94c0092c3af0a1f3ca',1,'min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp']]], - ['mindir',['minDir',['../classVec3T.html#add4db9b06b01f85ce492742acae86545',1,'Vec3T']]] -]; diff --git a/docs/doxygen/html/search/all_a.html b/docs/doxygen/html/search/all_a.html deleted file mode 100644 index 9601fcee..00000000 --- a/docs/doxygen/html/search/all_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_a.js b/docs/doxygen/html/search/all_a.js deleted file mode 100644 index 5f3e1028..00000000 --- a/docs/doxygen/html/search/all_a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['node',['Node',['../classBVH_1_1NodeT.html#ac52d9b56f082002c7f8be91062c40ff8',1,'BVH::NodeT']]], - ['nodeptr',['NodePtr',['../classBVH_1_1NodeT.html#a008f5c2c53adb1f5730d8478b48529b1',1,'BVH::NodeT']]], - ['nodet',['NodeT',['../classBVH_1_1NodeT.html',1,'BVH::NodeT< T, P, BV, K >'],['../classBVH_1_1NodeT.html#a960d0972bec81cf782b36e57f87da1f1',1,'BVH::NodeT::NodeT()'],['../classBVH_1_1NodeT.html#a6da86ccc8e4a0c556cd67ca59af983dc',1,'BVH::NodeT::NodeT(const std::vector< std::shared_ptr< P > > &a_primitives)'],['../classBVH_1_1NodeT.html#a6312ce04f70c2e1a860ce380298909b6',1,'BVH::NodeT::NodeT(const std::vector< std::shared_ptr< const P > > &a_primitives)']]], - ['normalizenormalvector',['normalizeNormalVector',['../classDcel_1_1EdgeT.html#aae9ee7375ce72ddf5ef375fb18863e8f',1,'Dcel::EdgeT::normalizeNormalVector()'],['../classDcel_1_1FaceT.html#aae0f6ac54d41666fa4b6182c65e5e444',1,'Dcel::FaceT::normalizeNormalVector()'],['../classDcel_1_1VertexT.html#a5926f14833074dfa2acf28a3e5c36f46',1,'Dcel::VertexT::normalizeNormalVector()']]] -]; diff --git a/docs/doxygen/html/search/all_b.html b/docs/doxygen/html/search/all_b.html deleted file mode 100644 index 0814e4e0..00000000 --- a/docs/doxygen/html/search/all_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_b.js b/docs/doxygen/html/search/all_b.js deleted file mode 100644 index bcd81563..00000000 --- a/docs/doxygen/html/search/all_b.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['ok',['ok',['../classDcel_1_1EdgeIteratorT.html#a92bfca2d072bbf54c7be751f8fc4c098',1,'Dcel::EdgeIteratorT']]], - ['one',['one',['../classVec2T.html#a9103ce94a3efa9e85cb732fb68af744e',1,'Vec2T::one()'],['../classVec3T.html#a82237dfeed4017e952c893817afc3827',1,'Vec3T::one()']]], - ['operator_28_29',['operator()',['../classDcel_1_1EdgeIteratorT.html#a56e7dcbaf6f74f6c05b1eb9105d203ad',1,'Dcel::EdgeIteratorT::operator()() noexcept'],['../classDcel_1_1EdgeIteratorT.html#a2e4afdda5a3eb033dc293fefc23edaa6',1,'Dcel::EdgeIteratorT::operator()() const noexcept']]], - ['operator_2a',['operator*',['../classVec2T.html#a1047f21e704d25c4bc5980cd13c00e1c',1,'Vec2T::operator*()'],['../classVec3T.html#aa4768276707889db34a716e9e476b9f1',1,'Vec3T::operator*(const T &s) const noexcept'],['../classVec3T.html#a579db6fb2bed30b3f024d1a017d7a124',1,'Vec3T::operator*(const Vec3T< T > &s) const noexcept'],['../EBGeometry__Vec_8hpp.html#a011c551978bb37db35ea3520fb23bd00',1,'operator*(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__Vec_8hpp.html#affba8fd8ad3fc6110fbba33be5ad6187',1,'operator*(const T &s, const Vec3T< T > &u) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a011c551978bb37db35ea3520fb23bd00',1,'operator*(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a3ed4fdd9b9d6b180e982733b4c7efc8e',1,'operator*(const T &s, const Vec3T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp']]], - ['operator_2a_3d',['operator*=',['../classVec2T.html#ad7525f66bf0c609e79e1d2590af6be0c',1,'Vec2T::operator*=()'],['../classVec3T.html#a0448e51b7f785b14df47092929cb73a3',1,'Vec3T::operator*=()']]], - ['operator_2b',['operator+',['../classVec2T.html#a0ea1e944e722dfdc3a37ebd7ef922eea',1,'Vec2T::operator+()'],['../classVec3T.html#af1ab895de89a1a3143f58d2ce5d78bc2',1,'Vec3T::operator+()']]], - ['operator_2b_2b',['operator++',['../classDcel_1_1EdgeIteratorT.html#ae8dc40da0743b61725062646144b8f32',1,'Dcel::EdgeIteratorT']]], - ['operator_2b_3d',['operator+=',['../classVec2T.html#a6f5fbfd88dc2eac09f17fb999c76e5b0',1,'Vec2T::operator+=()'],['../classVec3T.html#a7d06c56d8579d8b3695f43f62544f999',1,'Vec3T::operator+=()']]], - ['operator_2d',['operator-',['../classVec2T.html#a788b057579c3c92068e15595d7781734',1,'Vec2T::operator-(const Vec2T &a_other) const noexcept'],['../classVec2T.html#aa8176b9c1a1331f1b0358188cd04883f',1,'Vec2T::operator-() const noexcept'],['../classVec3T.html#ac00a70e55a93ecd8c60d29a129f8fbf3',1,'Vec3T::operator-(const Vec3T< T > &u) const noexcept'],['../classVec3T.html#a2d32936bb5a9ddc22152d301723bc3e0',1,'Vec3T::operator-() const noexcept']]], - ['operator_2d_3d',['operator-=',['../classVec2T.html#a6c98f1e7b2bb5479e3616fbda7124313',1,'Vec2T::operator-=()'],['../classVec3T.html#a8a580094450e167248f4ee089027fa40',1,'Vec3T::operator-=()']]], - ['operator_2f',['operator/',['../classVec2T.html#a3cc96a6930ed713df486d177490e1e5c',1,'Vec2T::operator/()'],['../classVec3T.html#acc5973c1c82e51c597b47ba39870f528',1,'Vec3T::operator/(const T &s) const noexcept'],['../classVec3T.html#a3c48111d27fb16cc3304e7aa2b4603fc',1,'Vec3T::operator/(const Vec3T< T > &v) const noexcept'],['../EBGeometry__Vec_8hpp.html#a519f71e021376fe40b7d2f6e451fba02',1,'operator/(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__Vec_8hpp.html#aeeeedd62e251ff33f2e37286e391a0f8',1,'operator/(const T &s, const Vec3T< T > &u) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a519f71e021376fe40b7d2f6e451fba02',1,'operator/(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a317d1a610a2d042d5b41f1fde72d8779',1,'operator/(const T &s, const Vec3T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp']]], - ['operator_2f_3d',['operator/=',['../classVec2T.html#a84e4a2ee2d84fbb42c84d0638ff929f8',1,'Vec2T::operator/=()'],['../classVec3T.html#a9446e83162d3daee6133d12b354a3a41',1,'Vec3T::operator/=()']]], - ['operator_3c',['operator<',['../classVec3T.html#aba830919c5020bb060f39fe9df6b7ca1',1,'Vec3T']]], - ['operator_3c_3d',['operator<=',['../classVec3T.html#a266a34a83b9f23a391151be45a4e39f8',1,'Vec3T']]], - ['operator_3d',['operator=',['../classVec2T.html#ab44f1c41a9a73757430403ea47e1ff33',1,'Vec2T::operator=()'],['../classVec3T.html#a34681a81b55b4e7ae818e01b5f27a3e0',1,'Vec3T::operator=()']]], - ['operator_3d_3d',['operator==',['../classVec3T.html#a715546682c26647643148a80087c4ab4',1,'Vec3T']]], - ['operator_3e',['operator>',['../classVec3T.html#af99810068907e4935ac38bc397ba1102',1,'Vec3T']]], - ['operator_3e_3d',['operator>=',['../classVec3T.html#a3296f8319642088e08bd2d3e253fcd64',1,'Vec3T']]], - ['operator_5b_5d',['operator[]',['../classVec3T.html#a098a19968b6c7b0b76c2572e5236a71a',1,'Vec3T::operator[](int i) noexcept'],['../classVec3T.html#ad09224c5f7e142059d75772c0cbd1990',1,'Vec3T::operator[](int i) const noexcept']]] -]; diff --git a/docs/doxygen/html/search/all_c.html b/docs/doxygen/html/search/all_c.html deleted file mode 100644 index da08c387..00000000 --- a/docs/doxygen/html/search/all_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_c.js b/docs/doxygen/html/search/all_c.js deleted file mode 100644 index 4f87ca5d..00000000 --- a/docs/doxygen/html/search/all_c.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['partitioner',['Partitioner',['../classBVH_1_1NodeT.html#a3bb028655b8b961fa35109af1c14f281',1,'BVH::NodeT']]], - ['partitionert',['PartitionerT',['../namespaceBVH.html#a7c33d54da9893d506709b2ca96b76f55',1,'BVH']]], - ['ply',['PLY',['../classDcel_1_1Parser_1_1PLY.html',1,'Dcel::Parser']]], - ['polygon2d',['Polygon2D',['../classDcel_1_1Polygon2D.html',1,'Dcel::Polygon2D< T >'],['../classDcel_1_1Polygon2D.html#a241e98b67756178d5b8d028b6264a6c2',1,'Dcel::Polygon2D::Polygon2D()=delete'],['../classDcel_1_1Polygon2D.html#adcd7eb98f174260e21d0185deb44d628',1,'Dcel::Polygon2D::Polygon2D(const Vec3 &a_normal, const std::vector< Vec3 > &a_points)']]], - ['primitivelist',['PrimitiveList',['../classBVH_1_1NodeT.html#a19cce6e7fbe85eccb4a3718dd69f49b7',1,'BVH::NodeT::PrimitiveList()'],['../classBVH_1_1LinearBVH.html#a94ee5da1670e2ef85eeabf7cf6a2da92',1,'BVH::LinearBVH::PrimitiveList()'],['../namespaceDcel.html#a69f60bf0111d66715bf4f7a8e22645e6',1,'Dcel::PrimitiveList()']]], - ['primitivelistt',['PrimitiveListT',['../namespaceBVH.html#aa1e753bda451b85cd5b948722a2ad7c7',1,'BVH']]], - ['primitivesperleafnode',['primitivesPerLeafNode',['../namespaceDcel.html#a4db11eb50441e7c4e6c3ae796a202024',1,'Dcel']]], - ['printwarnings',['printWarnings',['../classDcel_1_1MeshT.html#a7115bea1b9d776a5f9c82a1e4fe852a0',1,'Dcel::MeshT']]], - ['projectpointintofaceplane',['projectPointIntoFacePlane',['../classDcel_1_1FaceT.html#af4116b8f72e0dfb797f79cd4f27a71e8',1,'Dcel::FaceT']]], - ['projectpointtoedge',['projectPointToEdge',['../classDcel_1_1EdgeT.html#ab937dca20cefcae4083b3cf873d83265',1,'Dcel::EdgeT']]], - ['prune',['Prune',['../namespaceBVH.html#a3ddb7b34ac1deb3baed2f32d9eacbe5b',1,'BVH']]], - ['pruneordered',['pruneOrdered',['../classBVH_1_1NodeT.html#ac4a3be457d66d2673f717f203e60fc08',1,'BVH::NodeT']]], - ['prunestack',['pruneStack',['../classBVH_1_1NodeT.html#a6bd0a4dd5843f010dd579d59a289b4d8',1,'BVH::NodeT']]], - ['pruneunordered',['pruneUnordered',['../classBVH_1_1NodeT.html#ad252aa451ca983750dfa0c24344253b2',1,'BVH::NodeT']]] -]; diff --git a/docs/doxygen/html/search/all_d.html b/docs/doxygen/html/search/all_d.html deleted file mode 100644 index 9986c9cb..00000000 --- a/docs/doxygen/html/search/all_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_d.js b/docs/doxygen/html/search/all_d.js deleted file mode 100644 index 879bbb3b..00000000 --- a/docs/doxygen/html/search/all_d.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['readascii',['readASCII',['../classDcel_1_1Parser_1_1PLY.html#aaf13b770fe4d9cfc4e419af7418fc35c',1,'Dcel::Parser::PLY::readASCII(const std::string a_filename)'],['../classDcel_1_1Parser_1_1PLY.html#a280f083c1901248de1c69321783ad9d1',1,'Dcel::Parser::PLY::readASCII(Mesh &a_mesh, const std::string a_filename)']]], - ['readfacesascii',['readFacesASCII',['../classDcel_1_1Parser_1_1PLY.html#ae54284d1c7c18a584bd14678763a58e7',1,'Dcel::Parser::PLY']]], - ['readheaderascii',['readHeaderASCII',['../classDcel_1_1Parser_1_1PLY.html#aa8741e334f6c350e1269a42ee1022e57',1,'Dcel::Parser::PLY']]], - ['readverticesascii',['readVerticesASCII',['../classDcel_1_1Parser_1_1PLY.html#a755c28a17a836a05af31991a87212df0',1,'Dcel::Parser::PLY']]], - ['reconcile',['reconcile',['../classDcel_1_1EdgeT.html#ac4aaf294fd41c84ef2f7f54a8024e6dd',1,'Dcel::EdgeT::reconcile()'],['../classDcel_1_1FaceT.html#aaf3f8b92ca4393391ea213b0ecfe19bd',1,'Dcel::FaceT::reconcile()'],['../classDcel_1_1MeshT.html#a98d80b5f83b9d6ff55d0d0da34d0b422',1,'Dcel::MeshT::reconcile()']]], - ['reconcileedges',['reconcileEdges',['../classDcel_1_1MeshT.html#a33f6506c1daf9946d1f21117c0ab89d5',1,'Dcel::MeshT']]], - ['reconcilefaces',['reconcileFaces',['../classDcel_1_1MeshT.html#a5e31ae8b95c9ee725e205d8ae4fd35dc',1,'Dcel::MeshT']]], - ['reconcilepairedges',['reconcilePairEdges',['../classDcel_1_1Parser_1_1PLY.html#afaceb1664b12f30599fe68faba6ca725',1,'Dcel::Parser::PLY']]], - ['reconcilevertices',['reconcileVertices',['../classDcel_1_1MeshT.html#ad2b65aa214d51ecd438bc876e7255290',1,'Dcel::MeshT']]], - ['reset',['reset',['../classDcel_1_1EdgeIteratorT.html#ab1bc6f043869340ee1e1358e4289b8dd',1,'Dcel::EdgeIteratorT']]], - ['rotate',['rotate',['../classSignedDistanceFunction.html#ae8de697f4d0966290342bcf6383585ef',1,'SignedDistanceFunction']]], - ['rotateop',['RotateOp',['../classRotateOp.html',1,'RotateOp< T >'],['../classRotateOp.html#afac8d44cae4c9109c96d2c1ae47a1dc2',1,'RotateOp::RotateOp()'],['../classRotateOp.html#a018f0a465bfaf271958ac975eb24b5bb',1,'RotateOp::RotateOp(const T a_angle, const int a_axis) noexcept']]] -]; diff --git a/docs/doxygen/html/search/all_e.html b/docs/doxygen/html/search/all_e.html deleted file mode 100644 index 9fa42bba..00000000 --- a/docs/doxygen/html/search/all_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_e.js b/docs/doxygen/html/search/all_e.js deleted file mode 100644 index 279db9e6..00000000 --- a/docs/doxygen/html/search/all_e.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['sanitycheck',['sanityCheck',['../classDcel_1_1MeshT.html#a1814ba63c6e0d7a007ee78c24d6ea159',1,'Dcel::MeshT']]], - ['sdf',['SDF',['../classUnion.html#a9e9d1d95ae54fa471c6f29e778239021',1,'Union::SDF()'],['../classUnionBVH.html#a5d1d64d7cabf1000fc1a804d06e103cc',1,'UnionBVH::SDF()']]], - ['sdflist',['SDFList',['../classUnionBVH.html#ac23ace50239fbe00130df2a7e42af995',1,'UnionBVH']]], - ['searchalgorithm',['SearchAlgorithm',['../classDcel_1_1MeshT.html#abb4c3bb7a52804bb041c133f30151399',1,'Dcel::MeshT']]], - ['setboundingvolume',['setBoundingVolume',['../classBVH_1_1LinearNodeT.html#a03e3dd1c74bf9e66ed692130b49c2e0f',1,'BVH::LinearNodeT']]], - ['setchildoffset',['setChildOffset',['../classBVH_1_1LinearNodeT.html#a3a972ef5ea9abc6e2ead9f453e233e2f',1,'BVH::LinearNodeT']]], - ['setedge',['setEdge',['../classDcel_1_1VertexT.html#a4ac13c49c61857ea7d0990212b43ca41',1,'Dcel::VertexT']]], - ['setface',['setFace',['../classDcel_1_1EdgeT.html#adb65dd99901ed730354b17c59e46e1fb',1,'Dcel::EdgeT']]], - ['sethalfedge',['setHalfEdge',['../classDcel_1_1FaceT.html#a2680477d0a6c8b2187230170522fe3a5',1,'Dcel::FaceT']]], - ['setinsideoutsidealgorithm',['setInsideOutsideAlgorithm',['../classDcel_1_1FaceT.html#a12b6dc8412276137532a63c292e4b6fe',1,'Dcel::FaceT::setInsideOutsideAlgorithm()'],['../classDcel_1_1MeshT.html#a1e46a744a2526e451229e2f2e4830ca5',1,'Dcel::MeshT::setInsideOutsideAlgorithm()']]], - ['setnextedge',['setNextEdge',['../classDcel_1_1EdgeT.html#aeeda5324a62f1d8b6e50d788907526bf',1,'Dcel::EdgeT']]], - ['setnormal',['setNormal',['../classDcel_1_1VertexT.html#a3bffe6c4f0d0766cdd7a4bb3a6050cb4',1,'Dcel::VertexT']]], - ['setnumprimitives',['setNumPrimitives',['../classBVH_1_1LinearNodeT.html#a1a91e5f540da1b1bb85224db94cd53d8',1,'BVH::LinearNodeT']]], - ['setpairedge',['setPairEdge',['../classDcel_1_1EdgeT.html#ab9ef2366cf1d411444caf81d5159a3e1',1,'Dcel::EdgeT']]], - ['setposition',['setPosition',['../classDcel_1_1VertexT.html#a9c7d9a23275e5e3165eb8c6018b55a7e',1,'Dcel::VertexT']]], - ['setpreviousedge',['setPreviousEdge',['../classDcel_1_1EdgeT.html#af5aa7f27fe95ba4331259b4de927bb37',1,'Dcel::EdgeT']]], - ['setprimitives',['setPrimitives',['../classBVH_1_1NodeT.html#a2c9c3d3a83b3c1895c8f89b2bbd62e81',1,'BVH::NodeT']]], - ['setprimitivesoffset',['setPrimitivesOffset',['../classBVH_1_1LinearNodeT.html#ace68df1290bd44623c694e6b7ebdec6e',1,'BVH::LinearNodeT']]], - ['setsearchalgorithm',['setSearchAlgorithm',['../classDcel_1_1MeshT.html#abc7a2bd7632be06c0ad9cf49816d262f',1,'Dcel::MeshT']]], - ['setvertex',['setVertex',['../classDcel_1_1EdgeT.html#a2611a8e0ae581ab8822f677d6d69edbd',1,'Dcel::EdgeT']]], - ['signeddistance',['signedDistance',['../classSphereSDF.html#a9b0c5f0b1af2c4b62bee1c873e0158e8',1,'SphereSDF::signedDistance()'],['../classBoxSDF.html#a6e7a72790061423e5c9ea47d9e26736f',1,'BoxSDF::signedDistance()'],['../classTorusSDF.html#a23b4d455de2b7b9988ce81833ccd5302',1,'TorusSDF::signedDistance()'],['../classCylinderSDF.html#a082c08089b07402d55020ed8186cc992',1,'CylinderSDF::signedDistance()'],['../classBVH_1_1NodeT.html#a0fe074fbff56ac2d0a6ad113ed34d56b',1,'BVH::NodeT::signedDistance(const Vec3T< T > &a_point) const noexcept'],['../classBVH_1_1NodeT.html#a1f9067b43b1a6962854f4a2b43325858',1,'BVH::NodeT::signedDistance(const Vec3T< T > &a_point, const Prune a_pruning) const noexcept'],['../classBVH_1_1LinearBVH.html#a8fb0c0cb9e8f5161ed78953237eb3c39',1,'BVH::LinearBVH::signedDistance()'],['../classDcel_1_1EdgeT.html#adba2d72aed5f510997d06c2bc9e6e96c',1,'Dcel::EdgeT::signedDistance()'],['../classDcel_1_1FaceT.html#a8ac718b0c9af797d34efcda43f38b6c0',1,'Dcel::FaceT::signedDistance()'],['../classDcel_1_1MeshT.html#aa6f614aa0d93c3345c10150168347497',1,'Dcel::MeshT::signedDistance(const Vec3 &a_x0) const noexcept'],['../classDcel_1_1MeshT.html#a4fa40378fbd4c31cd50e77da70ef30fd',1,'Dcel::MeshT::signedDistance(const Vec3 &a_x0, SearchAlgorithm a_algorithm) const noexcept'],['../classDcel_1_1VertexT.html#afce7ba8e2bbf81b158b43af2576c4dda',1,'Dcel::VertexT::signedDistance()'],['../classSignedDistanceFunction.html#af5912280ca51dc21a2d6949a30ec7d21',1,'SignedDistanceFunction::signedDistance()'],['../classUnion.html#a08beffd354ca261e3d31bcb453951810',1,'Union::signedDistance()'],['../classUnionBVH.html#a9681fdc161e2e077a33caaddb78fb4ba',1,'UnionBVH::signedDistance()']]], - ['signeddistancefunction',['SignedDistanceFunction',['../classSignedDistanceFunction.html',1,'SignedDistanceFunction< T >'],['../classSignedDistanceFunction.html#abfeeff9b3901e03ec6b73317dc9a722e',1,'SignedDistanceFunction::SignedDistanceFunction()']]], - ['spatialsplitbinarypartitioner',['spatialSplitBinaryPartitioner',['../namespaceDcel.html#a08217ffcd4cfc6f58a3b0b3f780fc611',1,'Dcel']]], - ['spatialsplitpartitioner',['spatialSplitPartitioner',['../namespaceDcel.html#ab4f869248e23d47bb01ad06c76288fef',1,'Dcel']]], - ['spheresdf',['SphereSDF',['../classSphereSDF.html',1,'SphereSDF< T >'],['../classSphereSDF.html#ad5f6d20f6ccd77ba91c00acd2aeea28f',1,'SphereSDF::SphereSDF()=delete'],['../classSphereSDF.html#a3e555062b1b20c1729a9f4ab6136add4',1,'SphereSDF::SphereSDF(const Vec3T< T > &a_center, const T &a_radius, const bool a_flipInside)'],['../classSphereSDF.html#a2c25f14a19fcb910cd4d48af7123185a',1,'SphereSDF::SphereSDF(const SphereSDF &a_other)']]], - ['stopfunction',['StopFunction',['../classBVH_1_1NodeT.html#acbe56195affc439febe8aca84db308e3',1,'BVH::NodeT']]], - ['stopfunctiont',['StopFunctionT',['../namespaceBVH.html#afef1c5979c34a11d23b756cc09654bf9',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/all_f.html b/docs/doxygen/html/search/all_f.html deleted file mode 100644 index 6ecfc0ed..00000000 --- a/docs/doxygen/html/search/all_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/all_f.js b/docs/doxygen/html/search/all_f.js deleted file mode 100644 index 3a1ce4b3..00000000 --- a/docs/doxygen/html/search/all_f.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['todo_20list',['Todo List',['../todo.html',1,'']]], - ['topdownsortandpartitionprimitives',['topDownSortAndPartitionPrimitives',['../classBVH_1_1NodeT.html#acae5a575fa8b236de984fdd41e04c038',1,'BVH::NodeT']]], - ['torussdf',['TorusSDF',['../classTorusSDF.html',1,'TorusSDF< T >'],['../classTorusSDF.html#a4591d7c3cdbbed45fdbaf414f0d096ee',1,'TorusSDF::TorusSDF()=delete'],['../classTorusSDF.html#acf22c1b59605e93750a3a002fd5bc23a',1,'TorusSDF::TorusSDF(const Vec3T< T > &a_center, const T &a_majorRadius, const T &a_minorRadius, const bool a_flipInside)']]], - ['transform',['transform',['../classTransformOp.html#a61c1920daa9f55fd2ea9095cbcfa18b8',1,'TransformOp::transform()'],['../classTranslateOp.html#a16941d9e52b02d39f9c92f6b23f61af6',1,'TranslateOp::transform()'],['../classRotateOp.html#aaffc25806ef6b9d7ea6651aa2bb9767c',1,'RotateOp::transform()']]], - ['transformop',['TransformOp',['../classTransformOp.html',1,'TransformOp< T >'],['../classTransformOp.html#ab904cbdd373ca07e08b254163331b3b4',1,'TransformOp::TransformOp()']]], - ['transformpoint',['transformPoint',['../classSignedDistanceFunction.html#af186f98f9ea4ac96fccb4add4ebf196d',1,'SignedDistanceFunction']]], - ['translate',['translate',['../classSignedDistanceFunction.html#add71ebc2e7f3fb5e85766898413482e7',1,'SignedDistanceFunction']]], - ['translateop',['TranslateOp',['../classTranslateOp.html',1,'TranslateOp< T >'],['../classTranslateOp.html#ab20f5a272d6cd34bf98fc23523913fc9',1,'TranslateOp::TranslateOp()'],['../classTranslateOp.html#ac646a47f26119d8316533c91f3043864',1,'TranslateOp::TranslateOp(const Vec3T< T > &a_translation)']]] -]; diff --git a/docs/doxygen/html/search/classes_0.html b/docs/doxygen/html/search/classes_0.html deleted file mode 100644 index 1c3e406a..00000000 --- a/docs/doxygen/html/search/classes_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_0.js b/docs/doxygen/html/search/classes_0.js deleted file mode 100644 index 7ca32fd9..00000000 --- a/docs/doxygen/html/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['aabbt',['AABBT',['../classBoundingVolumes_1_1AABBT.html',1,'BoundingVolumes']]] -]; diff --git a/docs/doxygen/html/search/classes_1.html b/docs/doxygen/html/search/classes_1.html deleted file mode 100644 index a8e70695..00000000 --- a/docs/doxygen/html/search/classes_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_1.js b/docs/doxygen/html/search/classes_1.js deleted file mode 100644 index f8da72b8..00000000 --- a/docs/doxygen/html/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['boundingspheret',['BoundingSphereT',['../classBoundingVolumes_1_1BoundingSphereT.html',1,'BoundingVolumes']]], - ['boxsdf',['BoxSDF',['../classBoxSDF.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/classes_2.html b/docs/doxygen/html/search/classes_2.html deleted file mode 100644 index 5c09c969..00000000 --- a/docs/doxygen/html/search/classes_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_2.js b/docs/doxygen/html/search/classes_2.js deleted file mode 100644 index 730f33b1..00000000 --- a/docs/doxygen/html/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['cylindersdf',['CylinderSDF',['../classCylinderSDF.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/classes_3.html b/docs/doxygen/html/search/classes_3.html deleted file mode 100644 index 5faaeba8..00000000 --- a/docs/doxygen/html/search/classes_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_3.js b/docs/doxygen/html/search/classes_3.js deleted file mode 100644 index d2a0b3be..00000000 --- a/docs/doxygen/html/search/classes_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['edgeiteratort',['EdgeIteratorT',['../classDcel_1_1EdgeIteratorT.html',1,'Dcel']]], - ['edget',['EdgeT',['../classDcel_1_1EdgeT.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/classes_4.html b/docs/doxygen/html/search/classes_4.html deleted file mode 100644 index b3f11bc7..00000000 --- a/docs/doxygen/html/search/classes_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_4.js b/docs/doxygen/html/search/classes_4.js deleted file mode 100644 index 1132aacc..00000000 --- a/docs/doxygen/html/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['facet',['FaceT',['../classDcel_1_1FaceT.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/classes_5.html b/docs/doxygen/html/search/classes_5.html deleted file mode 100644 index 952ace6f..00000000 --- a/docs/doxygen/html/search/classes_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_5.js b/docs/doxygen/html/search/classes_5.js deleted file mode 100644 index cf957b19..00000000 --- a/docs/doxygen/html/search/classes_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['linearbvh',['LinearBVH',['../classBVH_1_1LinearBVH.html',1,'BVH']]], - ['linearnodet',['LinearNodeT',['../classBVH_1_1LinearNodeT.html',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/classes_6.html b/docs/doxygen/html/search/classes_6.html deleted file mode 100644 index 75eef9f4..00000000 --- a/docs/doxygen/html/search/classes_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_6.js b/docs/doxygen/html/search/classes_6.js deleted file mode 100644 index bf7af1d2..00000000 --- a/docs/doxygen/html/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mesht',['MeshT',['../classDcel_1_1MeshT.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/classes_7.html b/docs/doxygen/html/search/classes_7.html deleted file mode 100644 index 745f5f28..00000000 --- a/docs/doxygen/html/search/classes_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_7.js b/docs/doxygen/html/search/classes_7.js deleted file mode 100644 index 3b8bd80d..00000000 --- a/docs/doxygen/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['nodet',['NodeT',['../classBVH_1_1NodeT.html',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/classes_8.html b/docs/doxygen/html/search/classes_8.html deleted file mode 100644 index 5a443d9d..00000000 --- a/docs/doxygen/html/search/classes_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_8.js b/docs/doxygen/html/search/classes_8.js deleted file mode 100644 index 92a7cca3..00000000 --- a/docs/doxygen/html/search/classes_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ply',['PLY',['../classDcel_1_1Parser_1_1PLY.html',1,'Dcel::Parser']]], - ['polygon2d',['Polygon2D',['../classDcel_1_1Polygon2D.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/classes_9.html b/docs/doxygen/html/search/classes_9.html deleted file mode 100644 index 9cb55be4..00000000 --- a/docs/doxygen/html/search/classes_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_9.js b/docs/doxygen/html/search/classes_9.js deleted file mode 100644 index 0e6ea017..00000000 --- a/docs/doxygen/html/search/classes_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rotateop',['RotateOp',['../classRotateOp.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/classes_a.html b/docs/doxygen/html/search/classes_a.html deleted file mode 100644 index 54940d78..00000000 --- a/docs/doxygen/html/search/classes_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_a.js b/docs/doxygen/html/search/classes_a.js deleted file mode 100644 index f54569b0..00000000 --- a/docs/doxygen/html/search/classes_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['signeddistancefunction',['SignedDistanceFunction',['../classSignedDistanceFunction.html',1,'']]], - ['spheresdf',['SphereSDF',['../classSphereSDF.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/classes_b.html b/docs/doxygen/html/search/classes_b.html deleted file mode 100644 index 6071ae04..00000000 --- a/docs/doxygen/html/search/classes_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_b.js b/docs/doxygen/html/search/classes_b.js deleted file mode 100644 index 0255c882..00000000 --- a/docs/doxygen/html/search/classes_b.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['torussdf',['TorusSDF',['../classTorusSDF.html',1,'']]], - ['transformop',['TransformOp',['../classTransformOp.html',1,'']]], - ['translateop',['TranslateOp',['../classTranslateOp.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/classes_c.html b/docs/doxygen/html/search/classes_c.html deleted file mode 100644 index 6cf1d008..00000000 --- a/docs/doxygen/html/search/classes_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_c.js b/docs/doxygen/html/search/classes_c.js deleted file mode 100644 index a42f7510..00000000 --- a/docs/doxygen/html/search/classes_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['union',['Union',['../classUnion.html',1,'']]], - ['unionbvh',['UnionBVH',['../classUnionBVH.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/classes_d.html b/docs/doxygen/html/search/classes_d.html deleted file mode 100644 index d4a7ed7a..00000000 --- a/docs/doxygen/html/search/classes_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/classes_d.js b/docs/doxygen/html/search/classes_d.js deleted file mode 100644 index ed3bfa97..00000000 --- a/docs/doxygen/html/search/classes_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['vec2t',['Vec2T',['../classVec2T.html',1,'']]], - ['vec3t',['Vec3T',['../classVec3T.html',1,'']]], - ['vertext',['VertexT',['../classDcel_1_1VertexT.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/close.png b/docs/doxygen/html/search/close.png deleted file mode 100644 index 9342d3df..00000000 Binary files a/docs/doxygen/html/search/close.png and /dev/null differ diff --git a/docs/doxygen/html/search/enums_0.html b/docs/doxygen/html/search/enums_0.html deleted file mode 100644 index ee343ac0..00000000 --- a/docs/doxygen/html/search/enums_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/enums_0.js b/docs/doxygen/html/search/enums_0.js deleted file mode 100644 index 5c4d2bc5..00000000 --- a/docs/doxygen/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['boundingvolumealgorithm',['BoundingVolumeAlgorithm',['../classBoundingVolumes_1_1BoundingSphereT.html#ae98cd00c8e45c93a0fc4fbabec63b007',1,'BoundingVolumes::BoundingSphereT']]] -]; diff --git a/docs/doxygen/html/search/enums_1.html b/docs/doxygen/html/search/enums_1.html deleted file mode 100644 index 3fd210a0..00000000 --- a/docs/doxygen/html/search/enums_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/enums_1.js b/docs/doxygen/html/search/enums_1.js deleted file mode 100644 index 67a750d0..00000000 --- a/docs/doxygen/html/search/enums_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['insideoutsidealgorithm',['InsideOutsideAlgorithm',['../classDcel_1_1Polygon2D.html#a1ec8170036eb8dd1cedbe1b4d31024b4',1,'Dcel::Polygon2D']]], - ['iterationmode',['IterationMode',['../classDcel_1_1EdgeIteratorT.html#ad6b36e4ef39214ccd75966a6ecd82682',1,'Dcel::EdgeIteratorT']]] -]; diff --git a/docs/doxygen/html/search/enums_2.html b/docs/doxygen/html/search/enums_2.html deleted file mode 100644 index a042e520..00000000 --- a/docs/doxygen/html/search/enums_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/enums_2.js b/docs/doxygen/html/search/enums_2.js deleted file mode 100644 index 333bc853..00000000 --- a/docs/doxygen/html/search/enums_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['prune',['Prune',['../namespaceBVH.html#a3ddb7b34ac1deb3baed2f32d9eacbe5b',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/enums_3.html b/docs/doxygen/html/search/enums_3.html deleted file mode 100644 index 265e0cb9..00000000 --- a/docs/doxygen/html/search/enums_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/enums_3.js b/docs/doxygen/html/search/enums_3.js deleted file mode 100644 index 8ddb3fd4..00000000 --- a/docs/doxygen/html/search/enums_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['searchalgorithm',['SearchAlgorithm',['../classDcel_1_1MeshT.html#abb4c3bb7a52804bb041c133f30151399',1,'Dcel::MeshT']]] -]; diff --git a/docs/doxygen/html/search/enums_4.html b/docs/doxygen/html/search/enums_4.html deleted file mode 100644 index 97ee07fb..00000000 --- a/docs/doxygen/html/search/enums_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/enums_4.js b/docs/doxygen/html/search/enums_4.js deleted file mode 100644 index 7f5c214e..00000000 --- a/docs/doxygen/html/search/enums_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['vertexnormalweight',['VertexNormalWeight',['../classDcel_1_1MeshT.html#a0cd3a02853cf4fcc34a0816368ed4dc0',1,'Dcel::MeshT']]] -]; diff --git a/docs/doxygen/html/search/enums_5.html b/docs/doxygen/html/search/enums_5.html deleted file mode 100644 index f837d25f..00000000 --- a/docs/doxygen/html/search/enums_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/enums_5.js b/docs/doxygen/html/search/enums_5.js deleted file mode 100644 index 7f5c214e..00000000 --- a/docs/doxygen/html/search/enums_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['vertexnormalweight',['VertexNormalWeight',['../classDcel_1_1MeshT.html#a0cd3a02853cf4fcc34a0816368ed4dc0',1,'Dcel::MeshT']]] -]; diff --git a/docs/doxygen/html/search/files_0.html b/docs/doxygen/html/search/files_0.html deleted file mode 100644 index 4f272b83..00000000 --- a/docs/doxygen/html/search/files_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/files_0.js b/docs/doxygen/html/search/files_0.js deleted file mode 100644 index 2381b3fe..00000000 --- a/docs/doxygen/html/search/files_0.js +++ /dev/null @@ -1,36 +0,0 @@ -var searchData= -[ - ['ebgeometry_5fanalyticdistancefunctions_2ehpp',['EBGeometry_AnalyticDistanceFunctions.hpp',['../EBGeometry__AnalyticDistanceFunctions_8hpp.html',1,'']]], - ['ebgeometry_5fboundingvolumes_2ehpp',['EBGeometry_BoundingVolumes.hpp',['../EBGeometry__BoundingVolumes_8hpp.html',1,'']]], - ['ebgeometry_5fboundingvolumesimplem_2ehpp',['EBGeometry_BoundingVolumesImplem.hpp',['../EBGeometry__BoundingVolumesImplem_8hpp.html',1,'']]], - ['ebgeometry_5fbvh_2ehpp',['EBGeometry_BVH.hpp',['../EBGeometry__BVH_8hpp.html',1,'']]], - ['ebgeometry_5fbvhimplem_2ehpp',['EBGeometry_BVHImplem.hpp',['../EBGeometry__BVHImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcel_2ehpp',['EBGeometry_Dcel.hpp',['../EBGeometry__Dcel_8hpp.html',1,'']]], - ['ebgeometry_5fdcelbvh_2ehpp',['EBGeometry_DcelBVH.hpp',['../EBGeometry__DcelBVH_8hpp.html',1,'']]], - ['ebgeometry_5fdceledge_2ehpp',['EBGeometry_DcelEdge.hpp',['../EBGeometry__DcelEdge_8hpp.html',1,'']]], - ['ebgeometry_5fdceledgeimplem_2ehpp',['EBGeometry_DcelEdgeImplem.hpp',['../EBGeometry__DcelEdgeImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelface_2ehpp',['EBGeometry_DcelFace.hpp',['../EBGeometry__DcelFace_8hpp.html',1,'']]], - ['ebgeometry_5fdcelfaceimplem_2ehpp',['EBGeometry_DcelFaceImplem.hpp',['../EBGeometry__DcelFaceImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdceliterator_2ehpp',['EBGeometry_DcelIterator.hpp',['../EBGeometry__DcelIterator_8hpp.html',1,'']]], - ['ebgeometry_5fdceliteratorimplem_2ehpp',['EBGeometry_DcelIteratorImplem.hpp',['../EBGeometry__DcelIteratorImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelmesh_2ehpp',['EBGeometry_DcelMesh.hpp',['../EBGeometry__DcelMesh_8hpp.html',1,'']]], - ['ebgeometry_5fdcelmeshimplem_2ehpp',['EBGeometry_DcelMeshImplem.hpp',['../EBGeometry__DcelMeshImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelparser_2ehpp',['EBGeometry_DcelParser.hpp',['../EBGeometry__DcelParser_8hpp.html',1,'']]], - ['ebgeometry_5fdcelparserimplem_2ehpp',['EBGeometry_DcelParserImplem.hpp',['../EBGeometry__DcelParserImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelpolygon2d_2ehpp',['EBGeometry_DcelPolygon2D.hpp',['../EBGeometry__DcelPolygon2D_8hpp.html',1,'']]], - ['ebgeometry_5fdcelpolygon2dimplem_2ehpp',['EBGeometry_DcelPolygon2DImplem.hpp',['../EBGeometry__DcelPolygon2DImplem_8hpp.html',1,'']]], - ['ebgeometry_5fdcelvertex_2ehpp',['EBGeometry_DcelVertex.hpp',['../EBGeometry__DcelVertex_8hpp.html',1,'']]], - ['ebgeometry_5fdcelverteximplem_2ehpp',['EBGeometry_DcelVertexImplem.hpp',['../EBGeometry__DcelVertexImplem_8hpp.html',1,'']]], - ['ebgeometry_5fnamespacefooter_2ehpp',['EBGeometry_NamespaceFooter.hpp',['../EBGeometry__NamespaceFooter_8hpp.html',1,'']]], - ['ebgeometry_5fnamespaceheader_2ehpp',['EBGeometry_NamespaceHeader.hpp',['../EBGeometry__NamespaceHeader_8hpp.html',1,'']]], - ['ebgeometry_5fsigneddistancefunction_2ehpp',['EBGeometry_SignedDistanceFunction.hpp',['../EBGeometry__SignedDistanceFunction_8hpp.html',1,'']]], - ['ebgeometry_5fsigneddistancefunctionimplem_2ehpp',['EBGeometry_SignedDistanceFunctionImplem.hpp',['../EBGeometry__SignedDistanceFunctionImplem_8hpp.html',1,'']]], - ['ebgeometry_5ftransformops_2ehpp',['EBGeometry_TransformOps.hpp',['../EBGeometry__TransformOps_8hpp.html',1,'']]], - ['ebgeometry_5ftransformopsimplem_2ehpp',['EBGeometry_TransformOpsImplem.hpp',['../EBGeometry__TransformOpsImplem_8hpp.html',1,'']]], - ['ebgeometry_5funion_2ehpp',['EBGeometry_Union.hpp',['../EBGeometry__Union_8hpp.html',1,'']]], - ['ebgeometry_5funionbvh_2ehpp',['EBGeometry_UnionBVH.hpp',['../EBGeometry__UnionBVH_8hpp.html',1,'']]], - ['ebgeometry_5funionbvhimplem_2ehpp',['EBGeometry_UnionBVHImplem.hpp',['../EBGeometry__UnionBVHImplem_8hpp.html',1,'']]], - ['ebgeometry_5funionimplem_2ehpp',['EBGeometry_UnionImplem.hpp',['../EBGeometry__UnionImplem_8hpp.html',1,'']]], - ['ebgeometry_5fvec_2ehpp',['EBGeometry_Vec.hpp',['../EBGeometry__Vec_8hpp.html',1,'']]], - ['ebgeometry_5fvecimplem_2ehpp',['EBGeometry_VecImplem.hpp',['../EBGeometry__VecImplem_8hpp.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/functions_0.html b/docs/doxygen/html/search/functions_0.html deleted file mode 100644 index 4e6d87d1..00000000 --- a/docs/doxygen/html/search/functions_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_0.js b/docs/doxygen/html/search/functions_0.js deleted file mode 100644 index 70958a3c..00000000 --- a/docs/doxygen/html/search/functions_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['aabbt',['AABBT',['../classBoundingVolumes_1_1AABBT.html#a180558daace1d1fb990f9e197eaec02d',1,'BoundingVolumes::AABBT::AABBT()'],['../classBoundingVolumes_1_1AABBT.html#a28d34a1b4467d329bd50e3561b1e705a',1,'BoundingVolumes::AABBT::AABBT(const Vec3T< T > &a_lo, const Vec3T< T > &a_hi)'],['../classBoundingVolumes_1_1AABBT.html#af69dd29c29d40b1f550118cde9479f15',1,'BoundingVolumes::AABBT::AABBT(const AABBT &a_other)'],['../classBoundingVolumes_1_1AABBT.html#a08ddef449ffd740163b584c8ccd6f395',1,'BoundingVolumes::AABBT::AABBT(const std::vector< AABBT< T > > &a_others)'],['../classBoundingVolumes_1_1AABBT.html#ab58be0cf4a32b502fdd1aedb7ba11587',1,'BoundingVolumes::AABBT::AABBT(const std::vector< Vec3T< P > > &a_points)']]], - ['addface',['addFace',['../classDcel_1_1VertexT.html#a032c39370f08bbc27f3da35ee0873409',1,'Dcel::VertexT']]] -]; diff --git a/docs/doxygen/html/search/functions_1.html b/docs/doxygen/html/search/functions_1.html deleted file mode 100644 index b343e2db..00000000 --- a/docs/doxygen/html/search/functions_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_1.js b/docs/doxygen/html/search/functions_1.js deleted file mode 100644 index f73bf611..00000000 --- a/docs/doxygen/html/search/functions_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['boundingspheret',['BoundingSphereT',['../classBoundingVolumes_1_1BoundingSphereT.html#a5616a743d8b53b11533ef47b3da281aa',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT()'],['../classBoundingVolumes_1_1BoundingSphereT.html#a9e81ed0ce76489225f5dbd57ed1abc8f',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const Vec3T< T > &a_center, const T &a_radius)'],['../classBoundingVolumes_1_1BoundingSphereT.html#af9cd8b7e77ed36178073be298efd27f0',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const std::vector< BoundingSphereT< T > > &a_otherSpheres)'],['../classBoundingVolumes_1_1BoundingSphereT.html#afd5a1632d9ceef8a4fa3af59e562c7f8',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const BoundingSphereT &a_other)'],['../classBoundingVolumes_1_1BoundingSphereT.html#a88655edd39b6276b9bb58eb9bd6af82d',1,'BoundingVolumes::BoundingSphereT::BoundingSphereT(const std::vector< Vec3T< P > > &a_points, const BoundingVolumeAlgorithm &a_alg=BoundingVolumeAlgorithm::Ritter)']]], - ['boxsdf',['BoxSDF',['../classBoxSDF.html#a59b774b2a6fc27001e1a40662f49c5cb',1,'BoxSDF::BoxSDF()=delete'],['../classBoxSDF.html#a8cac002be3de6c478a6d68e6e88607d8',1,'BoxSDF::BoxSDF(const Vec3T< T > &a_loCorner, const Vec3T< T > &a_hiCorner, const bool a_flipInside)']]], - ['buildritter',['buildRitter',['../classBoundingVolumes_1_1BoundingSphereT.html#abea0326be2d1843f3ad7c6de1ebe2418',1,'BoundingVolumes::BoundingSphereT']]], - ['buildtree',['buildTree',['../classUnionBVH.html#a97769f4c449610b681a70b93c99a40ca',1,'UnionBVH']]] -]; diff --git a/docs/doxygen/html/search/functions_10.html b/docs/doxygen/html/search/functions_10.html deleted file mode 100644 index 72bc1ea1..00000000 --- a/docs/doxygen/html/search/functions_10.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_10.js b/docs/doxygen/html/search/functions_10.js deleted file mode 100644 index dc193128..00000000 --- a/docs/doxygen/html/search/functions_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['union',['Union',['../classUnion.html#a2dea7d7ed6d5456f87feff0e02c99453',1,'Union::Union()=delete'],['../classUnion.html#a7f1a9e850f8965dc35e221b23a55e451',1,'Union::Union(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)']]], - ['unionbvh',['UnionBVH',['../classUnionBVH.html#aa2d9a2e95e58a0d7dfb2b92283626cac',1,'UnionBVH::UnionBVH()=delete'],['../classUnionBVH.html#a6a0a50fcddc59dbb1c9b9444b0fce117',1,'UnionBVH::UnionBVH(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign)'],['../classUnionBVH.html#a9eb2c19a0fdc645e068c09398d3dd0f3',1,'UnionBVH::UnionBVH(const std::vector< std::shared_ptr< SDF > > &a_distanceFunctions, const bool a_flipSign, const BVConstructor &a_bvConstructor)']]], - ['unsigneddistance2',['unsignedDistance2',['../classDcel_1_1EdgeT.html#a50345997f00af679875fda510b3e0607',1,'Dcel::EdgeT::unsignedDistance2()'],['../classDcel_1_1FaceT.html#a2915506b12c361eb4a25cba80638cb7d',1,'Dcel::FaceT::unsignedDistance2()'],['../classDcel_1_1MeshT.html#a8be4c3d6f606b8bc8cc36820de773de1',1,'Dcel::MeshT::unsignedDistance2()'],['../classDcel_1_1VertexT.html#a552b7d88dfe80c76561b5a002ddc176b',1,'Dcel::VertexT::unsignedDistance2()']]] -]; diff --git a/docs/doxygen/html/search/functions_11.html b/docs/doxygen/html/search/functions_11.html deleted file mode 100644 index 6948a615..00000000 --- a/docs/doxygen/html/search/functions_11.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_11.js b/docs/doxygen/html/search/functions_11.js deleted file mode 100644 index 171286e4..00000000 --- a/docs/doxygen/html/search/functions_11.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['vec2t',['Vec2T',['../classVec2T.html#a4aa6e0bd3922abd84449278429a03418',1,'Vec2T::Vec2T()'],['../classVec2T.html#a15e8a7710ad0a1de03a34660ae54e96e',1,'Vec2T::Vec2T(const Vec2T &u)'],['../classVec2T.html#a0721d6450bab8361f76ee63826f9e8f4',1,'Vec2T::Vec2T(const T &a_x, const T &a_y)']]], - ['vec3t',['Vec3T',['../classVec3T.html#a919b1cabc678f8d71763e03fab500334',1,'Vec3T::Vec3T()'],['../classVec3T.html#ab328767434f527b25c110dc83a0cb7ee',1,'Vec3T::Vec3T(const Vec3T< T > &a_u)'],['../classVec3T.html#acc3573bc8c3232eb14a22ca833cbce30',1,'Vec3T::Vec3T(const T &a_x, const T &a_y, const T &a_z)']]], - ['vertext',['VertexT',['../classDcel_1_1VertexT.html#ab93f0a7a59fa9d78d89d1b0e97451ce7',1,'Dcel::VertexT::VertexT()'],['../classDcel_1_1VertexT.html#ade01d01c6a145c31c6f46dccc902cfae',1,'Dcel::VertexT::VertexT(const Vec3 &a_position)'],['../classDcel_1_1VertexT.html#a90d3c97e605b8084667a85ddfb4ba8bc',1,'Dcel::VertexT::VertexT(const Vec3 &a_position, const Vec3 &a_normal)'],['../classDcel_1_1VertexT.html#ac904e9902633915706d81122e72aa847',1,'Dcel::VertexT::VertexT(const Vertex &a_otherVertex)']]] -]; diff --git a/docs/doxygen/html/search/functions_12.html b/docs/doxygen/html/search/functions_12.html deleted file mode 100644 index 3df84892..00000000 --- a/docs/doxygen/html/search/functions_12.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_12.js b/docs/doxygen/html/search/functions_12.js deleted file mode 100644 index 8a59d13a..00000000 --- a/docs/doxygen/html/search/functions_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zero',['zero',['../classVec2T.html#a3c243787a7817ce09946691cdf14d0e0',1,'Vec2T::zero()'],['../classVec3T.html#af438ba5c8990b07e566bf7e48dcbcfb2',1,'Vec3T::zero()']]] -]; diff --git a/docs/doxygen/html/search/functions_13.html b/docs/doxygen/html/search/functions_13.html deleted file mode 100644 index febf8e03..00000000 --- a/docs/doxygen/html/search/functions_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_13.js b/docs/doxygen/html/search/functions_13.js deleted file mode 100644 index 2f91737e..00000000 --- a/docs/doxygen/html/search/functions_13.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['_7eaabbt',['~AABBT',['../classBoundingVolumes_1_1AABBT.html#af0a2f67ce6f85f947849d199e6dee1aa',1,'BoundingVolumes::AABBT']]], - ['_7eboundingspheret',['~BoundingSphereT',['../classBoundingVolumes_1_1BoundingSphereT.html#a4495da5774e14f97c0e7579b37cfd60e',1,'BoundingVolumes::BoundingSphereT']]], - ['_7eboxsdf',['~BoxSDF',['../classBoxSDF.html#aae169f61825b3235cbb44d299c36e268',1,'BoxSDF']]], - ['_7ecylindersdf',['~CylinderSDF',['../classCylinderSDF.html#a974c6b114bc5dbf88c171de5328dcaf6',1,'CylinderSDF']]], - ['_7eedget',['~EdgeT',['../classDcel_1_1EdgeT.html#a94083c72ec137f822fcb08fb600ddd87',1,'Dcel::EdgeT']]], - ['_7efacet',['~FaceT',['../classDcel_1_1FaceT.html#a56988526e98a2626c644117e9298fd4b',1,'Dcel::FaceT']]], - ['_7elinearbvh',['~LinearBVH',['../classBVH_1_1LinearBVH.html#a39a98014b81061b35604422cfab5c9b7',1,'BVH::LinearBVH']]], - ['_7elinearnodet',['~LinearNodeT',['../classBVH_1_1LinearNodeT.html#a4b5dd392397794113ad3b5bb2ed5003a',1,'BVH::LinearNodeT']]], - ['_7emesht',['~MeshT',['../classDcel_1_1MeshT.html#a51da8ad54b3cfe69a695221f73bd97b2',1,'Dcel::MeshT']]], - ['_7enodet',['~NodeT',['../classBVH_1_1NodeT.html#a5bc328f2381b6babe37496758ea4b583',1,'BVH::NodeT']]], - ['_7epolygon2d',['~Polygon2D',['../classDcel_1_1Polygon2D.html#a0c605c847f830faf8a9f4fbc7a5c5a12',1,'Dcel::Polygon2D']]], - ['_7erotateop',['~RotateOp',['../classRotateOp.html#aaa12091fe7937f5ed7e2d35e0632337b',1,'RotateOp']]], - ['_7esigneddistancefunction',['~SignedDistanceFunction',['../classSignedDistanceFunction.html#ab47b289bd8351d7f323938c91b2bb92b',1,'SignedDistanceFunction']]], - ['_7espheresdf',['~SphereSDF',['../classSphereSDF.html#ab5980286d17bb9da7425b4d9d4045850',1,'SphereSDF']]], - ['_7etorussdf',['~TorusSDF',['../classTorusSDF.html#a97178b72cbb9208b7dde0a6db1ab6e18',1,'TorusSDF']]], - ['_7etransformop',['~TransformOp',['../classTransformOp.html#a556cc7f5bbe70ce148a0791b883eb58c',1,'TransformOp']]], - ['_7etranslateop',['~TranslateOp',['../classTranslateOp.html#ad96b4ec0f30fb98dbd684afef1bfff03',1,'TranslateOp']]], - ['_7eunion',['~Union',['../classUnion.html#a5c4f15da1b35f6f6643d49ed18faa386',1,'Union']]], - ['_7eunionbvh',['~UnionBVH',['../classUnionBVH.html#aac0a1f16ad0a273e72c8bcd15b80f336',1,'UnionBVH']]], - ['_7evec2t',['~Vec2T',['../classVec2T.html#a15a9bac13b94b58f0907443bc551dbee',1,'Vec2T']]], - ['_7evec3t',['~Vec3T',['../classVec3T.html#a505fc5de8e213d1fc8e0df5f3b7a3dc7',1,'Vec3T']]], - ['_7evertext',['~VertexT',['../classDcel_1_1VertexT.html#ab0a8e0aa0960f68177e115b897283a1c',1,'Dcel::VertexT']]] -]; diff --git a/docs/doxygen/html/search/functions_2.html b/docs/doxygen/html/search/functions_2.html deleted file mode 100644 index ecce2f31..00000000 --- a/docs/doxygen/html/search/functions_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_2.js b/docs/doxygen/html/search/functions_2.js deleted file mode 100644 index b99997f7..00000000 --- a/docs/doxygen/html/search/functions_2.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['computeandstoreedges',['computeAndStoreEdges',['../classDcel_1_1FaceT.html#a5e913d5cdebb6b95c43e6e0fdc2e3589',1,'Dcel::FaceT']]], - ['computearea',['computeArea',['../classDcel_1_1FaceT.html#a3a3bfa74a7c07252a2a904206678bb66',1,'Dcel::FaceT']]], - ['computecentroid',['computeCentroid',['../classDcel_1_1FaceT.html#a7aded1c77a78a38115e5388311ed25b0',1,'Dcel::FaceT']]], - ['computeedgelength',['computeEdgeLength',['../classDcel_1_1EdgeT.html#abddfe200f9af04cf49362d4ed1e8d37b',1,'Dcel::EdgeT']]], - ['computenormal',['computeNormal',['../classDcel_1_1EdgeT.html#ad78566030a7781469035cc4b6ed3393b',1,'Dcel::EdgeT::computeNormal()'],['../classDcel_1_1FaceT.html#a574abc710dd63e88503d4011f27adf89',1,'Dcel::FaceT::computeNormal()']]], - ['computepolygon2d',['computePolygon2D',['../classDcel_1_1FaceT.html#a863d94c15412e535ca62f9cd52eead5f',1,'Dcel::FaceT']]], - ['computevertexnormalangleweighted',['computeVertexNormalAngleWeighted',['../classDcel_1_1VertexT.html#aa9e66780ec134afe94d9e5a8221fdc0e',1,'Dcel::VertexT::computeVertexNormalAngleWeighted() noexcept'],['../classDcel_1_1VertexT.html#aea793773eec08852108d3bd5c4eea5a9',1,'Dcel::VertexT::computeVertexNormalAngleWeighted(const std::vector< FacePtr > &a_faces) noexcept']]], - ['computevertexnormalaverage',['computeVertexNormalAverage',['../classDcel_1_1VertexT.html#adb439515e1814e3fdd9d040b9c1b22df',1,'Dcel::VertexT::computeVertexNormalAverage() noexcept'],['../classDcel_1_1VertexT.html#a6faffb2c5038d62c2f7866736ebe7393',1,'Dcel::VertexT::computeVertexNormalAverage(const std::vector< FacePtr > &a_faces) noexcept']]], - ['cross',['cross',['../classVec3T.html#af628d2d42a93200a929bd54a1fe8353f',1,'Vec3T']]], - ['cylindersdf',['CylinderSDF',['../classCylinderSDF.html#a4cad4283fea40d7e4f865a29f6b5bb20',1,'CylinderSDF::CylinderSDF()=delete'],['../classCylinderSDF.html#a0c710e871e7e7eb37f379c79c3412607',1,'CylinderSDF::CylinderSDF(const Vec3T< T > &a_center1, const Vec3T< T > &a_center2, const T &a_radius, const bool a_flipInside)']]] -]; diff --git a/docs/doxygen/html/search/functions_3.html b/docs/doxygen/html/search/functions_3.html deleted file mode 100644 index 15f06abd..00000000 --- a/docs/doxygen/html/search/functions_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_3.js b/docs/doxygen/html/search/functions_3.js deleted file mode 100644 index b096db6b..00000000 --- a/docs/doxygen/html/search/functions_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['define',['define',['../classBoundingVolumes_1_1BoundingSphereT.html#aac21650a7d3f65081483512064cbcfa8',1,'BoundingVolumes::BoundingSphereT::define()'],['../classBoundingVolumes_1_1AABBT.html#a5ff57720a5d6511642ce39a09a7b7663',1,'BoundingVolumes::AABBT::define()'],['../classDcel_1_1EdgeT.html#aa3257bd5d35041860b10e882e68b2c14',1,'Dcel::EdgeT::define()'],['../classDcel_1_1FaceT.html#a44b70fa51382ef625d110bbad64b7442',1,'Dcel::FaceT::define()'],['../classDcel_1_1MeshT.html#af65f5fc459d586ba3b6bd0711b0951f5',1,'Dcel::MeshT::define()'],['../classDcel_1_1VertexT.html#a20a894d436707a4205501bbc5cd72323',1,'Dcel::VertexT::define()']]], - ['directsigneddistance',['DirectSignedDistance',['../classDcel_1_1MeshT.html#ada074ff3b1a612e46098f4ba6ca0bda2',1,'Dcel::MeshT']]], - ['directsigneddistance2',['DirectSignedDistance2',['../classDcel_1_1MeshT.html#ac00a6da46649246a3a2db70b29bb2407',1,'Dcel::MeshT']]], - ['dot',['dot',['../classVec2T.html#ab7ed0195847b7a1037051402967780a3',1,'Vec2T::dot()'],['../classVec3T.html#ab4bebdfbdc863826a1a7e86cad130ff8',1,'Vec3T::dot()']]] -]; diff --git a/docs/doxygen/html/search/functions_4.html b/docs/doxygen/html/search/functions_4.html deleted file mode 100644 index 8985ff27..00000000 --- a/docs/doxygen/html/search/functions_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_4.js b/docs/doxygen/html/search/functions_4.js deleted file mode 100644 index d8b99b55..00000000 --- a/docs/doxygen/html/search/functions_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['edgeiteratort',['EdgeIteratorT',['../classDcel_1_1EdgeIteratorT.html#a20ff352f5f61ce6297e82d5be43377ce',1,'Dcel::EdgeIteratorT::EdgeIteratorT()=delete'],['../classDcel_1_1EdgeIteratorT.html#aefe8b41b1b21825922096a45ce645149',1,'Dcel::EdgeIteratorT::EdgeIteratorT(Face &a_face)'],['../classDcel_1_1EdgeIteratorT.html#a1e47d3f1320c6ce4f37e1772ed936451',1,'Dcel::EdgeIteratorT::EdgeIteratorT(const Face &a_face)'],['../classDcel_1_1EdgeIteratorT.html#a0041cf8e8c4dcdda12a514aa64e295f7',1,'Dcel::EdgeIteratorT::EdgeIteratorT(Vertex &a_vertex)'],['../classDcel_1_1EdgeIteratorT.html#abda0210d73dd861142c8e23b4d589bd0',1,'Dcel::EdgeIteratorT::EdgeIteratorT(const Vertex &a_vertex)']]], - ['edget',['EdgeT',['../classDcel_1_1EdgeT.html#a2a9682fd036374aad598a50fe54b2c1f',1,'Dcel::EdgeT::EdgeT()'],['../classDcel_1_1EdgeT.html#abe96b4404fa1961df79ffa618a7e8633',1,'Dcel::EdgeT::EdgeT(const Edge &a_otherEdge)'],['../classDcel_1_1EdgeT.html#a639b427e60ede1948f8344a41b9bfc32',1,'Dcel::EdgeT::EdgeT(const VertexPtr &a_vertex)']]] -]; diff --git a/docs/doxygen/html/search/functions_5.html b/docs/doxygen/html/search/functions_5.html deleted file mode 100644 index 03149184..00000000 --- a/docs/doxygen/html/search/functions_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_5.js b/docs/doxygen/html/search/functions_5.js deleted file mode 100644 index b77160c2..00000000 --- a/docs/doxygen/html/search/functions_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['facet',['FaceT',['../classDcel_1_1FaceT.html#ad26587e282563bc4e8c6559b2551627f',1,'Dcel::FaceT::FaceT()'],['../classDcel_1_1FaceT.html#a9111394950a9fb2f8b918423416c83bd',1,'Dcel::FaceT::FaceT(const EdgePtr &a_edge)'],['../classDcel_1_1FaceT.html#a0c318a29cae34ba4105235fd55d22b39',1,'Dcel::FaceT::FaceT(const Face &a_otherFace)']]], - ['flattentree',['flattenTree',['../classBVH_1_1NodeT.html#acb801f1e446a6472f5d330e85318bdb3',1,'BVH::NodeT::flattenTree() const noexcept'],['../classBVH_1_1NodeT.html#aa01d6673b9e48735594b01bdcbefc63f',1,'BVH::NodeT::flattenTree(std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, std::vector< std::shared_ptr< const P > > &a_sortedPrimitives, unsigned long &a_offset) const noexcept']]] -]; diff --git a/docs/doxygen/html/search/functions_6.html b/docs/doxygen/html/search/functions_6.html deleted file mode 100644 index c5061236..00000000 --- a/docs/doxygen/html/search/functions_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_6.js b/docs/doxygen/html/search/functions_6.js deleted file mode 100644 index ee47470a..00000000 --- a/docs/doxygen/html/search/functions_6.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['gathervertices',['gatherVertices',['../classDcel_1_1FaceT.html#aba1c0e341f18097112fd55465cc00eeb',1,'Dcel::FaceT']]], - ['getallvertexcoordinates',['getAllVertexCoordinates',['../classDcel_1_1FaceT.html#a17f38028d7bd3150feb22484e601f557',1,'Dcel::FaceT::getAllVertexCoordinates()'],['../classDcel_1_1MeshT.html#a597a38ed9f3e3a2a33f2d1211da322f3',1,'Dcel::MeshT::getAllVertexCoordinates()']]], - ['getarea',['getArea',['../classBoundingVolumes_1_1BoundingSphereT.html#a303fd50d1b8d27c7014c50ba0867a0b3',1,'BoundingVolumes::BoundingSphereT::getArea()'],['../classBoundingVolumes_1_1AABBT.html#ae2f3ba3dde664cccd7c46b0ef4f087d6',1,'BoundingVolumes::AABBT::getArea()'],['../classDcel_1_1FaceT.html#aeddb2fe440acd3dadc6160be390127fe',1,'Dcel::FaceT::getArea() noexcept'],['../classDcel_1_1FaceT.html#ab5352c13f01b1d2ec8fbd630d4c01083',1,'Dcel::FaceT::getArea() const noexcept']]], - ['getboundingvolume',['getBoundingVolume',['../classBVH_1_1NodeT.html#a02cba4dcb065ebfaeea7e4d251b89d04',1,'BVH::NodeT::getBoundingVolume()'],['../classBVH_1_1LinearNodeT.html#a152b12723c86f8fcb7522562cd97cd67',1,'BVH::LinearNodeT::getBoundingVolume()']]], - ['getcenter',['getCenter',['../classSphereSDF.html#a82922ae162a9b96279cc4d0d866b303d',1,'SphereSDF::getCenter() const noexcept'],['../classSphereSDF.html#a4f3a9220bfe2fc817131f655ce6f30cd',1,'SphereSDF::getCenter() noexcept'],['../classTorusSDF.html#a0973ae5f9e4a023ae15728d0a5063b4d',1,'TorusSDF::getCenter() const noexcept'],['../classTorusSDF.html#ad4a6d109ff640e2cb003901bf6ac1c85',1,'TorusSDF::getCenter() noexcept']]], - ['getcenter1',['getCenter1',['../classCylinderSDF.html#a7f6134d1ef1fe08ffaf43ece08c84fe0',1,'CylinderSDF']]], - ['getcenter2',['getCenter2',['../classCylinderSDF.html#aa4188d330f841f04a3f7dba6d1ef9c8f',1,'CylinderSDF']]], - ['getcentroid',['getCentroid',['../classBoundingVolumes_1_1BoundingSphereT.html#ac3adb87ea4da98d70375e5806e8dfdc5',1,'BoundingVolumes::BoundingSphereT::getCentroid() noexcept'],['../classBoundingVolumes_1_1BoundingSphereT.html#a62e38a048c7aacd79aec8dcc251e3a65',1,'BoundingVolumes::BoundingSphereT::getCentroid() const noexcept'],['../classBoundingVolumes_1_1AABBT.html#a7c98cb4cec1eb672755c9c469ca44990',1,'BoundingVolumes::AABBT::getCentroid()'],['../classDcel_1_1FaceT.html#a1b9c15538b2d7840a11b30f5e236c2a9',1,'Dcel::FaceT::getCentroid() noexcept'],['../classDcel_1_1FaceT.html#af2bf6614093074f450b2e0e5ea58682a',1,'Dcel::FaceT::getCentroid() const noexcept'],['../classDcel_1_1FaceT.html#a43e5b9aebe8736a42568ae0e6fbb6db3',1,'Dcel::FaceT::getCentroid(const int a_dir) noexcept'],['../classDcel_1_1FaceT.html#ac835d260a630e303babd7f87eb7d5a1a',1,'Dcel::FaceT::getCentroid(const int a_dir) const noexcept']]], - ['getchildoffsets',['getChildOffsets',['../classBVH_1_1LinearNodeT.html#af08feacbaa148425a896c196b0b6d1da',1,'BVH::LinearNodeT']]], - ['getchildren',['getChildren',['../classBVH_1_1NodeT.html#ac8df9e7b154186207263b8727e1084a8',1,'BVH::NodeT']]], - ['getdistance',['getDistance',['../classBoundingVolumes_1_1BoundingSphereT.html#a06ec858b7349e6a926ad476990c774cb',1,'BoundingVolumes::BoundingSphereT::getDistance()'],['../classBoundingVolumes_1_1AABBT.html#ad883975a0926c0755a978283137f378f',1,'BoundingVolumes::AABBT::getDistance()']]], - ['getdistancetoboundingvolume',['getDistanceToBoundingVolume',['../classBVH_1_1NodeT.html#a8da9f78078b0a579868d026bd61a2947',1,'BVH::NodeT::getDistanceToBoundingVolume()'],['../classBVH_1_1LinearNodeT.html#a2bf5b1c514a20754d527b17e1c664630',1,'BVH::LinearNodeT::getDistanceToBoundingVolume()']]], - ['getdistancetoprimitives',['getDistanceToPrimitives',['../classBVH_1_1NodeT.html#a61dc7040d57f0a69984548eb4804244b',1,'BVH::NodeT::getDistanceToPrimitives()'],['../classBVH_1_1LinearNodeT.html#a1a0a50ba8c1c0601f12ae02857246b1f',1,'BVH::LinearNodeT::getDistanceToPrimitives()']]], - ['getedges',['getEdges',['../classDcel_1_1MeshT.html#a3c6566eab929cc4108213959fa25777e',1,'Dcel::MeshT::getEdges() noexcept'],['../classDcel_1_1MeshT.html#a3440c0836148040bfd6cc679f047ec5b',1,'Dcel::MeshT::getEdges() const noexcept']]], - ['getface',['getFace',['../classDcel_1_1EdgeT.html#a522de398f834c68701e4a44f2c9ba972',1,'Dcel::EdgeT::getFace() noexcept'],['../classDcel_1_1EdgeT.html#a3966ae6b38b26c618cfb56bd5adb8b54',1,'Dcel::EdgeT::getFace() const noexcept']]], - ['getfaces',['getFaces',['../classDcel_1_1MeshT.html#a348cffec1fa223f131819abad1c89338',1,'Dcel::MeshT::getFaces() noexcept'],['../classDcel_1_1MeshT.html#afe1bd52d15af160f691bdd83305c84c7',1,'Dcel::MeshT::getFaces() const noexcept'],['../classDcel_1_1VertexT.html#a1d365de69778aa4bb35f80c936e95251',1,'Dcel::VertexT::getFaces() noexcept'],['../classDcel_1_1VertexT.html#aa73d20542e46c20afba1f14cd061f126',1,'Dcel::VertexT::getFaces() const noexcept']]], - ['gethalfedge',['getHalfEdge',['../classDcel_1_1FaceT.html#a121a02750336ee4050bfd5db8f9328b4',1,'Dcel::FaceT::getHalfEdge() noexcept'],['../classDcel_1_1FaceT.html#a1b273c8c0157f7ec9604424a2b073db3',1,'Dcel::FaceT::getHalfEdge() const noexcept']]], - ['gethighcorner',['getHighCorner',['../classBoxSDF.html#a10f3d6859f29566cca0bf2e89d1142c3',1,'BoxSDF::getHighCorner() const noexcept'],['../classBoxSDF.html#a624cf8fea66776ecce602039beb1059c',1,'BoxSDF::getHighCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#a2ecaeccecdb8882051516409e5749ef9',1,'BoundingVolumes::AABBT::getHighCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#aef8dcd08ea8726cdcd3d361d33c4d554',1,'BoundingVolumes::AABBT::getHighCorner() const noexcept']]], - ['gethighestcoordinate',['getHighestCoordinate',['../classDcel_1_1FaceT.html#ad712b8dec98d77e631e1c7a920424d1f',1,'Dcel::FaceT']]], - ['getlowcorner',['getLowCorner',['../classBoxSDF.html#a564b5f203d6bec78be94da4b9119748a',1,'BoxSDF::getLowCorner() const noexcept'],['../classBoxSDF.html#aa4ce24307fa921d36527ae4a8d6c0b36',1,'BoxSDF::getLowCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#a6368509e66a2b5691272f273fe96f670',1,'BoundingVolumes::AABBT::getLowCorner() noexcept'],['../classBoundingVolumes_1_1AABBT.html#a937cfc6cbbbd457f872370c1c4d5e81e',1,'BoundingVolumes::AABBT::getLowCorner() const noexcept']]], - ['getmajorradius',['getMajorRadius',['../classTorusSDF.html#acf871d02fb580a9c33d6c54517730036',1,'TorusSDF::getMajorRadius() const noexcept'],['../classTorusSDF.html#a81910ce83df61223ab3484c7de0747c7',1,'TorusSDF::getMajorRadius() noexcept']]], - ['getminorradius',['getMinorRadius',['../classTorusSDF.html#a3af383d80c8d11ab9d39fc872d661a42',1,'TorusSDF::getMinorRadius() const noexcept'],['../classTorusSDF.html#a0eff8ed5c429c6f80580c9660ac9cdfa',1,'TorusSDF::getMinorRadius() noexcept']]], - ['getnextedge',['getNextEdge',['../classDcel_1_1EdgeT.html#a1c865581d60a3e89e91d1d8db56fc2d1',1,'Dcel::EdgeT::getNextEdge() noexcept'],['../classDcel_1_1EdgeT.html#a6b50d3dd8ab3e2cda28819f6e4be9769',1,'Dcel::EdgeT::getNextEdge() const noexcept']]], - ['getnormal',['getNormal',['../classDcel_1_1EdgeT.html#a3caca2b8e0d73531566218a7febe24d8',1,'Dcel::EdgeT::getNormal() noexcept'],['../classDcel_1_1EdgeT.html#a60b8b2acf41484ff0c521310cece56a3',1,'Dcel::EdgeT::getNormal() const noexcept'],['../classDcel_1_1FaceT.html#a0e6079ca8d45b2e2090bd6202c7a679e',1,'Dcel::FaceT::getNormal() noexcept'],['../classDcel_1_1FaceT.html#adff3ebb9eba8d500e21fed65b32ea8fb',1,'Dcel::FaceT::getNormal() const noexcept'],['../classDcel_1_1VertexT.html#a11d1c90ccfa44b5ea121223bd86214c9',1,'Dcel::VertexT::getNormal() noexcept'],['../classDcel_1_1VertexT.html#a6d2d15dff96e192dff0254d40e1927b7',1,'Dcel::VertexT::getNormal() const noexcept']]], - ['getnumprimitives',['getNumPrimitives',['../classBVH_1_1LinearNodeT.html#a245e67b6824cadf1733c3c9176259106',1,'BVH::LinearNodeT']]], - ['getothervertex',['getOtherVertex',['../classDcel_1_1EdgeT.html#aaa6ae21b177a7661ba61ad2b63ed47f3',1,'Dcel::EdgeT::getOtherVertex() noexcept'],['../classDcel_1_1EdgeT.html#ac2b40be7e45425caaf85b13b50bd89a0',1,'Dcel::EdgeT::getOtherVertex() const noexcept']]], - ['getoutgoingedge',['getOutgoingEdge',['../classDcel_1_1VertexT.html#ae310f38b6e5b9bb4bae4633117a26708',1,'Dcel::VertexT::getOutgoingEdge() noexcept'],['../classDcel_1_1VertexT.html#ab726cf7028c0b9de7eaff211d9ca34aa',1,'Dcel::VertexT::getOutgoingEdge() const noexcept']]], - ['getoverlappingvolume',['getOverlappingVolume',['../classBoundingVolumes_1_1BoundingSphereT.html#a4581b87c7a3ccd3b58168bfdae9436cb',1,'BoundingVolumes::BoundingSphereT::getOverlappingVolume()'],['../classBoundingVolumes_1_1AABBT.html#ae65563ac6f3851f8fb05e0c98613fc0d',1,'BoundingVolumes::AABBT::getOverlappingVolume()'],['../namespaceBoundingVolumes.html#a4f159289c317e02beedb4b38136ad692',1,'BoundingVolumes::getOverlappingVolume(const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept'],['../namespaceBoundingVolumes.html#ae5716e39e88aaeec0c204f453cac2acd',1,'BoundingVolumes::getOverlappingVolume(const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept']]], - ['getpairedge',['getPairEdge',['../classDcel_1_1EdgeT.html#a1a076a12b7e269aecd77172b1d4c57e1',1,'Dcel::EdgeT::getPairEdge() noexcept'],['../classDcel_1_1EdgeT.html#a46f28f7da631e2d0f7f3139d1167b392',1,'Dcel::EdgeT::getPairEdge() const noexcept']]], - ['getposition',['getPosition',['../classDcel_1_1VertexT.html#af3ecf093a2fc7fd0f728d463ccacb8ce',1,'Dcel::VertexT::getPosition() noexcept'],['../classDcel_1_1VertexT.html#a7a4c3e499c6f7e529cc556eecf94f3fe',1,'Dcel::VertexT::getPosition() const noexcept']]], - ['getpreviousedge',['getPreviousEdge',['../classDcel_1_1EdgeT.html#ad97e2996c4559b8977d807a5627d5251',1,'Dcel::EdgeT::getPreviousEdge() noexcept'],['../classDcel_1_1EdgeT.html#ae4baac4bda30dfa3827ea87f2f72481f',1,'Dcel::EdgeT::getPreviousEdge() const noexcept']]], - ['getprimitives',['getPrimitives',['../classBVH_1_1NodeT.html#a2e0c1e030162a2dc049acb4debd4d9f2',1,'BVH::NodeT::getPrimitives() const noexcept'],['../classBVH_1_1NodeT.html#adce9d9c6bd4ab3d613bef232353774f3',1,'BVH::NodeT::getPrimitives() noexcept']]], - ['getprimitivesoffset',['getPrimitivesOffset',['../classBVH_1_1LinearNodeT.html#a8cfca65bd808adc8eb2793e7d7aabcd3',1,'BVH::LinearNodeT']]], - ['getradius',['getRadius',['../classSphereSDF.html#a2cdc1f42f3de4c0ca017571910fbe72c',1,'SphereSDF::getRadius() const noexcept'],['../classSphereSDF.html#a09245289037ae77adf204160c0d5b9cc',1,'SphereSDF::getRadius() noexcept'],['../classCylinderSDF.html#a545624c47a5a898b74059e95d44461b2',1,'CylinderSDF::getRadius()'],['../classBoundingVolumes_1_1BoundingSphereT.html#a8c4f10492e97aa460b1207f384e1c081',1,'BoundingVolumes::BoundingSphereT::getRadius() noexcept'],['../classBoundingVolumes_1_1BoundingSphereT.html#affac2a4ac0cefaada01c5532eb13f26a',1,'BoundingVolumes::BoundingSphereT::getRadius() const noexcept']]], - ['getsmallestcoordinate',['getSmallestCoordinate',['../classDcel_1_1FaceT.html#a8eb0b35ecb5de2601dc9f7ff0d2cac0d',1,'Dcel::FaceT']]], - ['getvertex',['getVertex',['../classDcel_1_1EdgeT.html#a44193130714264f57d80e7bfc8264662',1,'Dcel::EdgeT::getVertex() noexcept'],['../classDcel_1_1EdgeT.html#afa36dc535018588ba2238c5f42a9abd8',1,'Dcel::EdgeT::getVertex() const noexcept']]], - ['getvertices',['getVertices',['../classDcel_1_1MeshT.html#a0ccf0a5a707dbad79b3578a401449e9c',1,'Dcel::MeshT::getVertices() noexcept'],['../classDcel_1_1MeshT.html#a579860225cb9fc926fea4856563bef08',1,'Dcel::MeshT::getVertices() const noexcept']]], - ['getvolume',['getVolume',['../classBoundingVolumes_1_1BoundingSphereT.html#a44e0069495c19069fced07aab8e614c6',1,'BoundingVolumes::BoundingSphereT::getVolume()'],['../classBoundingVolumes_1_1AABBT.html#ac5b8f2caa8afe1177f3d2924fbc3f7a5',1,'BoundingVolumes::AABBT::getVolume()']]] -]; diff --git a/docs/doxygen/html/search/functions_7.html b/docs/doxygen/html/search/functions_7.html deleted file mode 100644 index 83a7b84b..00000000 --- a/docs/doxygen/html/search/functions_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_7.js b/docs/doxygen/html/search/functions_7.js deleted file mode 100644 index ee61ea68..00000000 --- a/docs/doxygen/html/search/functions_7.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['incrementwarning',['incrementWarning',['../classDcel_1_1MeshT.html#ae13801eefa60ad08ff1da0df1da34784',1,'Dcel::MeshT']]], - ['infinity',['infinity',['../classVec2T.html#a28b453ff4fd4ede74e401454b67f73d6',1,'Vec2T::infinity()'],['../classVec3T.html#ad88913a21fd56327b28092c2e39ebc3e',1,'Vec3T::infinity()']]], - ['insertchildren',['insertChildren',['../classBVH_1_1NodeT.html#a83c128d1045ccc23000a8b26f75b3172',1,'BVH::NodeT']]], - ['intersects',['intersects',['../classBoundingVolumes_1_1BoundingSphereT.html#a90baad0c400aac7645a7e8c1ab13096a',1,'BoundingVolumes::BoundingSphereT::intersects()'],['../classBoundingVolumes_1_1AABBT.html#a87d160a3e05082e34e37d8b4472bad7d',1,'BoundingVolumes::AABBT::intersects()'],['../namespaceBoundingVolumes.html#af35f33c5f319a466550d9ad1040beced',1,'BoundingVolumes::intersects(const BoundingSphereT< T > &a_u, const BoundingSphereT< T > &a_v) noexcept'],['../namespaceBoundingVolumes.html#a5c360ccd42017c01acbe1caf2cfd1efe',1,'BoundingVolumes::intersects(const AABBT< T > &a_u, const AABBT< T > &a_v) noexcept']]], - ['isleaf',['isLeaf',['../classBVH_1_1NodeT.html#a5c57552524601da9bf20e722e2433aa0',1,'BVH::NodeT::isLeaf()'],['../classBVH_1_1LinearNodeT.html#aba361834e3d013725a92ec4b45633584',1,'BVH::LinearNodeT::isLeaf()']]], - ['ispointinside',['isPointInside',['../classDcel_1_1Polygon2D.html#ade475a82be10cbacf382016e85316853',1,'Dcel::Polygon2D']]], - ['ispointinsideface',['isPointInsideFace',['../classDcel_1_1FaceT.html#a628d1734a63636a528fe2f7019bc4dd8',1,'Dcel::FaceT']]], - ['ispointinsidepolygoncrossingnumber',['isPointInsidePolygonCrossingNumber',['../classDcel_1_1Polygon2D.html#aa1edee7ad8913b35663792624e914aad',1,'Dcel::Polygon2D']]], - ['ispointinsidepolygonsubtend',['isPointInsidePolygonSubtend',['../classDcel_1_1Polygon2D.html#a8a6a32defe11ad15996e286aa76d4428',1,'Dcel::Polygon2D']]], - ['ispointinsidepolygonwindingnumber',['isPointInsidePolygonWindingNumber',['../classDcel_1_1Polygon2D.html#ad4d6b51a54f6a9c89812a5bcbc0e1902',1,'Dcel::Polygon2D']]] -]; diff --git a/docs/doxygen/html/search/functions_8.html b/docs/doxygen/html/search/functions_8.html deleted file mode 100644 index b55f0e65..00000000 --- a/docs/doxygen/html/search/functions_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_8.js b/docs/doxygen/html/search/functions_8.js deleted file mode 100644 index 8aa3bed5..00000000 --- a/docs/doxygen/html/search/functions_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['length',['length',['../classVec2T.html#ad7965b8d549a5f9d08cab43760dab56b',1,'Vec2T::length()'],['../classVec3T.html#a93c868b181e24a4f74702a8b8a36f815',1,'Vec3T::length()']]], - ['length2',['length2',['../classVec2T.html#a9beb3ae1b8b76926f8864686cb6a2ace',1,'Vec2T::length2()'],['../classVec3T.html#aaed89aee434cfa0abd86fe33bff49b4e',1,'Vec3T::length2()']]], - ['linearbvh',['LinearBVH',['../classBVH_1_1LinearBVH.html#af071dcad6741be1314c0b39512d2f142',1,'BVH::LinearBVH::LinearBVH()=delete'],['../classBVH_1_1LinearBVH.html#a34fcf759d0b39c9d83aca039cd0b18a8',1,'BVH::LinearBVH::LinearBVH(const std::vector< std::shared_ptr< const LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)'],['../classBVH_1_1LinearBVH.html#a413ba6da95c3839b90c4a3441aa5395b',1,'BVH::LinearBVH::LinearBVH(const std::vector< std::shared_ptr< LinearNodeT< T, P, BV, K > > > &a_linearNodes, const std::vector< std::shared_ptr< const P > > &a_primitives)']]], - ['linearnodet',['LinearNodeT',['../classBVH_1_1LinearNodeT.html#ae7dbdb102840eb271dadea2f25aa6f8b',1,'BVH::LinearNodeT']]] -]; diff --git a/docs/doxygen/html/search/functions_9.html b/docs/doxygen/html/search/functions_9.html deleted file mode 100644 index c73f07bb..00000000 --- a/docs/doxygen/html/search/functions_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_9.js b/docs/doxygen/html/search/functions_9.js deleted file mode 100644 index cdf59e60..00000000 --- a/docs/doxygen/html/search/functions_9.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['max',['max',['../classVec2T.html#a1211175344f9ee8bc0fd4ac2589799d8',1,'Vec2T::max()'],['../classVec3T.html#af06b99bd905435060149a61a13f61546',1,'Vec3T::max() noexcept'],['../classVec3T.html#ac126bbdaeff79e475327887bfa8aa62c',1,'Vec3T::max(const Vec3T< T > &u) noexcept'],['../EBGeometry__Vec_8hpp.html#a71f0bc32c9be501cf01a1b6c715dc0a9',1,'max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a71f0bc32c9be501cf01a1b6c715dc0a9',1,'max(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp']]], - ['maxdir',['maxDir',['../classVec3T.html#a292391c1f72ca66e100e7e70512ff9b1',1,'Vec3T']]], - ['mesht',['MeshT',['../classDcel_1_1MeshT.html#a4eae06529761d8aff54e945eb0a3ba91',1,'Dcel::MeshT::MeshT()'],['../classDcel_1_1MeshT.html#aa055e10c62778ba629b3f9c849338e03',1,'Dcel::MeshT::MeshT(const Mesh &a_otherMesh)=delete'],['../classDcel_1_1MeshT.html#a7468e3630893d64a71a7c2347496576b',1,'Dcel::MeshT::MeshT(std::vector< FacePtr > &a_faces, std::vector< EdgePtr > &a_edges, std::vector< VertexPtr > &a_vertices)']]], - ['min',['min',['../classVec2T.html#aca5161a674a3546a8c9d5543537548a3',1,'Vec2T::min()'],['../classVec3T.html#a4f27fdac2e6ac4feffe148bb8857f8bc',1,'Vec3T::min() noexcept'],['../classVec3T.html#ad0a0c9754ef8df1fa28abdaa01c246c4',1,'Vec3T::min(const Vec3T< T > &u) noexcept'],['../EBGeometry__Vec_8hpp.html#a291f01622695ab94c0092c3af0a1f3ca',1,'min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a291f01622695ab94c0092c3af0a1f3ca',1,'min(const Vec3T< T > &u, const Vec3T< T > &v) noexcept: EBGeometry_VecImplem.hpp']]], - ['mindir',['minDir',['../classVec3T.html#add4db9b06b01f85ce492742acae86545',1,'Vec3T']]] -]; diff --git a/docs/doxygen/html/search/functions_a.html b/docs/doxygen/html/search/functions_a.html deleted file mode 100644 index f10ad638..00000000 --- a/docs/doxygen/html/search/functions_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_a.js b/docs/doxygen/html/search/functions_a.js deleted file mode 100644 index ea32b860..00000000 --- a/docs/doxygen/html/search/functions_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['nodet',['NodeT',['../classBVH_1_1NodeT.html#a960d0972bec81cf782b36e57f87da1f1',1,'BVH::NodeT::NodeT()'],['../classBVH_1_1NodeT.html#a6da86ccc8e4a0c556cd67ca59af983dc',1,'BVH::NodeT::NodeT(const std::vector< std::shared_ptr< P > > &a_primitives)'],['../classBVH_1_1NodeT.html#a6312ce04f70c2e1a860ce380298909b6',1,'BVH::NodeT::NodeT(const std::vector< std::shared_ptr< const P > > &a_primitives)']]], - ['normalizenormalvector',['normalizeNormalVector',['../classDcel_1_1EdgeT.html#aae9ee7375ce72ddf5ef375fb18863e8f',1,'Dcel::EdgeT::normalizeNormalVector()'],['../classDcel_1_1FaceT.html#aae0f6ac54d41666fa4b6182c65e5e444',1,'Dcel::FaceT::normalizeNormalVector()'],['../classDcel_1_1VertexT.html#a5926f14833074dfa2acf28a3e5c36f46',1,'Dcel::VertexT::normalizeNormalVector()']]] -]; diff --git a/docs/doxygen/html/search/functions_b.html b/docs/doxygen/html/search/functions_b.html deleted file mode 100644 index 172ea1b3..00000000 --- a/docs/doxygen/html/search/functions_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_b.js b/docs/doxygen/html/search/functions_b.js deleted file mode 100644 index bcd81563..00000000 --- a/docs/doxygen/html/search/functions_b.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['ok',['ok',['../classDcel_1_1EdgeIteratorT.html#a92bfca2d072bbf54c7be751f8fc4c098',1,'Dcel::EdgeIteratorT']]], - ['one',['one',['../classVec2T.html#a9103ce94a3efa9e85cb732fb68af744e',1,'Vec2T::one()'],['../classVec3T.html#a82237dfeed4017e952c893817afc3827',1,'Vec3T::one()']]], - ['operator_28_29',['operator()',['../classDcel_1_1EdgeIteratorT.html#a56e7dcbaf6f74f6c05b1eb9105d203ad',1,'Dcel::EdgeIteratorT::operator()() noexcept'],['../classDcel_1_1EdgeIteratorT.html#a2e4afdda5a3eb033dc293fefc23edaa6',1,'Dcel::EdgeIteratorT::operator()() const noexcept']]], - ['operator_2a',['operator*',['../classVec2T.html#a1047f21e704d25c4bc5980cd13c00e1c',1,'Vec2T::operator*()'],['../classVec3T.html#aa4768276707889db34a716e9e476b9f1',1,'Vec3T::operator*(const T &s) const noexcept'],['../classVec3T.html#a579db6fb2bed30b3f024d1a017d7a124',1,'Vec3T::operator*(const Vec3T< T > &s) const noexcept'],['../EBGeometry__Vec_8hpp.html#a011c551978bb37db35ea3520fb23bd00',1,'operator*(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__Vec_8hpp.html#affba8fd8ad3fc6110fbba33be5ad6187',1,'operator*(const T &s, const Vec3T< T > &u) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a011c551978bb37db35ea3520fb23bd00',1,'operator*(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a3ed4fdd9b9d6b180e982733b4c7efc8e',1,'operator*(const T &s, const Vec3T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp']]], - ['operator_2a_3d',['operator*=',['../classVec2T.html#ad7525f66bf0c609e79e1d2590af6be0c',1,'Vec2T::operator*=()'],['../classVec3T.html#a0448e51b7f785b14df47092929cb73a3',1,'Vec3T::operator*=()']]], - ['operator_2b',['operator+',['../classVec2T.html#a0ea1e944e722dfdc3a37ebd7ef922eea',1,'Vec2T::operator+()'],['../classVec3T.html#af1ab895de89a1a3143f58d2ce5d78bc2',1,'Vec3T::operator+()']]], - ['operator_2b_2b',['operator++',['../classDcel_1_1EdgeIteratorT.html#ae8dc40da0743b61725062646144b8f32',1,'Dcel::EdgeIteratorT']]], - ['operator_2b_3d',['operator+=',['../classVec2T.html#a6f5fbfd88dc2eac09f17fb999c76e5b0',1,'Vec2T::operator+=()'],['../classVec3T.html#a7d06c56d8579d8b3695f43f62544f999',1,'Vec3T::operator+=()']]], - ['operator_2d',['operator-',['../classVec2T.html#a788b057579c3c92068e15595d7781734',1,'Vec2T::operator-(const Vec2T &a_other) const noexcept'],['../classVec2T.html#aa8176b9c1a1331f1b0358188cd04883f',1,'Vec2T::operator-() const noexcept'],['../classVec3T.html#ac00a70e55a93ecd8c60d29a129f8fbf3',1,'Vec3T::operator-(const Vec3T< T > &u) const noexcept'],['../classVec3T.html#a2d32936bb5a9ddc22152d301723bc3e0',1,'Vec3T::operator-() const noexcept']]], - ['operator_2d_3d',['operator-=',['../classVec2T.html#a6c98f1e7b2bb5479e3616fbda7124313',1,'Vec2T::operator-=()'],['../classVec3T.html#a8a580094450e167248f4ee089027fa40',1,'Vec3T::operator-=()']]], - ['operator_2f',['operator/',['../classVec2T.html#a3cc96a6930ed713df486d177490e1e5c',1,'Vec2T::operator/()'],['../classVec3T.html#acc5973c1c82e51c597b47ba39870f528',1,'Vec3T::operator/(const T &s) const noexcept'],['../classVec3T.html#a3c48111d27fb16cc3304e7aa2b4603fc',1,'Vec3T::operator/(const Vec3T< T > &v) const noexcept'],['../EBGeometry__Vec_8hpp.html#a519f71e021376fe40b7d2f6e451fba02',1,'operator/(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__Vec_8hpp.html#aeeeedd62e251ff33f2e37286e391a0f8',1,'operator/(const T &s, const Vec3T< T > &u) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a519f71e021376fe40b7d2f6e451fba02',1,'operator/(const T &s, const Vec2T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp'],['../EBGeometry__VecImplem_8hpp.html#a317d1a610a2d042d5b41f1fde72d8779',1,'operator/(const T &s, const Vec3T< T > &a_other) noexcept: EBGeometry_VecImplem.hpp']]], - ['operator_2f_3d',['operator/=',['../classVec2T.html#a84e4a2ee2d84fbb42c84d0638ff929f8',1,'Vec2T::operator/=()'],['../classVec3T.html#a9446e83162d3daee6133d12b354a3a41',1,'Vec3T::operator/=()']]], - ['operator_3c',['operator<',['../classVec3T.html#aba830919c5020bb060f39fe9df6b7ca1',1,'Vec3T']]], - ['operator_3c_3d',['operator<=',['../classVec3T.html#a266a34a83b9f23a391151be45a4e39f8',1,'Vec3T']]], - ['operator_3d',['operator=',['../classVec2T.html#ab44f1c41a9a73757430403ea47e1ff33',1,'Vec2T::operator=()'],['../classVec3T.html#a34681a81b55b4e7ae818e01b5f27a3e0',1,'Vec3T::operator=()']]], - ['operator_3d_3d',['operator==',['../classVec3T.html#a715546682c26647643148a80087c4ab4',1,'Vec3T']]], - ['operator_3e',['operator>',['../classVec3T.html#af99810068907e4935ac38bc397ba1102',1,'Vec3T']]], - ['operator_3e_3d',['operator>=',['../classVec3T.html#a3296f8319642088e08bd2d3e253fcd64',1,'Vec3T']]], - ['operator_5b_5d',['operator[]',['../classVec3T.html#a098a19968b6c7b0b76c2572e5236a71a',1,'Vec3T::operator[](int i) noexcept'],['../classVec3T.html#ad09224c5f7e142059d75772c0cbd1990',1,'Vec3T::operator[](int i) const noexcept']]] -]; diff --git a/docs/doxygen/html/search/functions_c.html b/docs/doxygen/html/search/functions_c.html deleted file mode 100644 index 99492ba8..00000000 --- a/docs/doxygen/html/search/functions_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_c.js b/docs/doxygen/html/search/functions_c.js deleted file mode 100644 index c3d43514..00000000 --- a/docs/doxygen/html/search/functions_c.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['polygon2d',['Polygon2D',['../classDcel_1_1Polygon2D.html#a241e98b67756178d5b8d028b6264a6c2',1,'Dcel::Polygon2D::Polygon2D()=delete'],['../classDcel_1_1Polygon2D.html#adcd7eb98f174260e21d0185deb44d628',1,'Dcel::Polygon2D::Polygon2D(const Vec3 &a_normal, const std::vector< Vec3 > &a_points)']]], - ['printwarnings',['printWarnings',['../classDcel_1_1MeshT.html#a7115bea1b9d776a5f9c82a1e4fe852a0',1,'Dcel::MeshT']]], - ['projectpointintofaceplane',['projectPointIntoFacePlane',['../classDcel_1_1FaceT.html#af4116b8f72e0dfb797f79cd4f27a71e8',1,'Dcel::FaceT']]], - ['projectpointtoedge',['projectPointToEdge',['../classDcel_1_1EdgeT.html#ab937dca20cefcae4083b3cf873d83265',1,'Dcel::EdgeT']]], - ['pruneordered',['pruneOrdered',['../classBVH_1_1NodeT.html#ac4a3be457d66d2673f717f203e60fc08',1,'BVH::NodeT']]], - ['prunestack',['pruneStack',['../classBVH_1_1NodeT.html#a6bd0a4dd5843f010dd579d59a289b4d8',1,'BVH::NodeT']]], - ['pruneunordered',['pruneUnordered',['../classBVH_1_1NodeT.html#ad252aa451ca983750dfa0c24344253b2',1,'BVH::NodeT']]] -]; diff --git a/docs/doxygen/html/search/functions_d.html b/docs/doxygen/html/search/functions_d.html deleted file mode 100644 index 5be9eccb..00000000 --- a/docs/doxygen/html/search/functions_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_d.js b/docs/doxygen/html/search/functions_d.js deleted file mode 100644 index ea7170cc..00000000 --- a/docs/doxygen/html/search/functions_d.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['readascii',['readASCII',['../classDcel_1_1Parser_1_1PLY.html#aaf13b770fe4d9cfc4e419af7418fc35c',1,'Dcel::Parser::PLY::readASCII(const std::string a_filename)'],['../classDcel_1_1Parser_1_1PLY.html#a280f083c1901248de1c69321783ad9d1',1,'Dcel::Parser::PLY::readASCII(Mesh &a_mesh, const std::string a_filename)']]], - ['readfacesascii',['readFacesASCII',['../classDcel_1_1Parser_1_1PLY.html#ae54284d1c7c18a584bd14678763a58e7',1,'Dcel::Parser::PLY']]], - ['readheaderascii',['readHeaderASCII',['../classDcel_1_1Parser_1_1PLY.html#aa8741e334f6c350e1269a42ee1022e57',1,'Dcel::Parser::PLY']]], - ['readverticesascii',['readVerticesASCII',['../classDcel_1_1Parser_1_1PLY.html#a755c28a17a836a05af31991a87212df0',1,'Dcel::Parser::PLY']]], - ['reconcile',['reconcile',['../classDcel_1_1EdgeT.html#ac4aaf294fd41c84ef2f7f54a8024e6dd',1,'Dcel::EdgeT::reconcile()'],['../classDcel_1_1FaceT.html#aaf3f8b92ca4393391ea213b0ecfe19bd',1,'Dcel::FaceT::reconcile()'],['../classDcel_1_1MeshT.html#a98d80b5f83b9d6ff55d0d0da34d0b422',1,'Dcel::MeshT::reconcile()']]], - ['reconcileedges',['reconcileEdges',['../classDcel_1_1MeshT.html#a33f6506c1daf9946d1f21117c0ab89d5',1,'Dcel::MeshT']]], - ['reconcilefaces',['reconcileFaces',['../classDcel_1_1MeshT.html#a5e31ae8b95c9ee725e205d8ae4fd35dc',1,'Dcel::MeshT']]], - ['reconcilepairedges',['reconcilePairEdges',['../classDcel_1_1Parser_1_1PLY.html#afaceb1664b12f30599fe68faba6ca725',1,'Dcel::Parser::PLY']]], - ['reconcilevertices',['reconcileVertices',['../classDcel_1_1MeshT.html#ad2b65aa214d51ecd438bc876e7255290',1,'Dcel::MeshT']]], - ['reset',['reset',['../classDcel_1_1EdgeIteratorT.html#ab1bc6f043869340ee1e1358e4289b8dd',1,'Dcel::EdgeIteratorT']]], - ['rotate',['rotate',['../classSignedDistanceFunction.html#ae8de697f4d0966290342bcf6383585ef',1,'SignedDistanceFunction']]], - ['rotateop',['RotateOp',['../classRotateOp.html#afac8d44cae4c9109c96d2c1ae47a1dc2',1,'RotateOp::RotateOp()'],['../classRotateOp.html#a018f0a465bfaf271958ac975eb24b5bb',1,'RotateOp::RotateOp(const T a_angle, const int a_axis) noexcept']]] -]; diff --git a/docs/doxygen/html/search/functions_e.html b/docs/doxygen/html/search/functions_e.html deleted file mode 100644 index e256cb63..00000000 --- a/docs/doxygen/html/search/functions_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_e.js b/docs/doxygen/html/search/functions_e.js deleted file mode 100644 index 64c56878..00000000 --- a/docs/doxygen/html/search/functions_e.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['sanitycheck',['sanityCheck',['../classDcel_1_1MeshT.html#a1814ba63c6e0d7a007ee78c24d6ea159',1,'Dcel::MeshT']]], - ['setboundingvolume',['setBoundingVolume',['../classBVH_1_1LinearNodeT.html#a03e3dd1c74bf9e66ed692130b49c2e0f',1,'BVH::LinearNodeT']]], - ['setchildoffset',['setChildOffset',['../classBVH_1_1LinearNodeT.html#a3a972ef5ea9abc6e2ead9f453e233e2f',1,'BVH::LinearNodeT']]], - ['setedge',['setEdge',['../classDcel_1_1VertexT.html#a4ac13c49c61857ea7d0990212b43ca41',1,'Dcel::VertexT']]], - ['setface',['setFace',['../classDcel_1_1EdgeT.html#adb65dd99901ed730354b17c59e46e1fb',1,'Dcel::EdgeT']]], - ['sethalfedge',['setHalfEdge',['../classDcel_1_1FaceT.html#a2680477d0a6c8b2187230170522fe3a5',1,'Dcel::FaceT']]], - ['setinsideoutsidealgorithm',['setInsideOutsideAlgorithm',['../classDcel_1_1FaceT.html#a12b6dc8412276137532a63c292e4b6fe',1,'Dcel::FaceT::setInsideOutsideAlgorithm()'],['../classDcel_1_1MeshT.html#a1e46a744a2526e451229e2f2e4830ca5',1,'Dcel::MeshT::setInsideOutsideAlgorithm()']]], - ['setnextedge',['setNextEdge',['../classDcel_1_1EdgeT.html#aeeda5324a62f1d8b6e50d788907526bf',1,'Dcel::EdgeT']]], - ['setnormal',['setNormal',['../classDcel_1_1VertexT.html#a3bffe6c4f0d0766cdd7a4bb3a6050cb4',1,'Dcel::VertexT']]], - ['setnumprimitives',['setNumPrimitives',['../classBVH_1_1LinearNodeT.html#a1a91e5f540da1b1bb85224db94cd53d8',1,'BVH::LinearNodeT']]], - ['setpairedge',['setPairEdge',['../classDcel_1_1EdgeT.html#ab9ef2366cf1d411444caf81d5159a3e1',1,'Dcel::EdgeT']]], - ['setposition',['setPosition',['../classDcel_1_1VertexT.html#a9c7d9a23275e5e3165eb8c6018b55a7e',1,'Dcel::VertexT']]], - ['setpreviousedge',['setPreviousEdge',['../classDcel_1_1EdgeT.html#af5aa7f27fe95ba4331259b4de927bb37',1,'Dcel::EdgeT']]], - ['setprimitives',['setPrimitives',['../classBVH_1_1NodeT.html#a2c9c3d3a83b3c1895c8f89b2bbd62e81',1,'BVH::NodeT']]], - ['setprimitivesoffset',['setPrimitivesOffset',['../classBVH_1_1LinearNodeT.html#ace68df1290bd44623c694e6b7ebdec6e',1,'BVH::LinearNodeT']]], - ['setsearchalgorithm',['setSearchAlgorithm',['../classDcel_1_1MeshT.html#abc7a2bd7632be06c0ad9cf49816d262f',1,'Dcel::MeshT']]], - ['setvertex',['setVertex',['../classDcel_1_1EdgeT.html#a2611a8e0ae581ab8822f677d6d69edbd',1,'Dcel::EdgeT']]], - ['signeddistance',['signedDistance',['../classSphereSDF.html#a9b0c5f0b1af2c4b62bee1c873e0158e8',1,'SphereSDF::signedDistance()'],['../classBoxSDF.html#a6e7a72790061423e5c9ea47d9e26736f',1,'BoxSDF::signedDistance()'],['../classTorusSDF.html#a23b4d455de2b7b9988ce81833ccd5302',1,'TorusSDF::signedDistance()'],['../classCylinderSDF.html#a082c08089b07402d55020ed8186cc992',1,'CylinderSDF::signedDistance()'],['../classBVH_1_1NodeT.html#a0fe074fbff56ac2d0a6ad113ed34d56b',1,'BVH::NodeT::signedDistance(const Vec3T< T > &a_point) const noexcept'],['../classBVH_1_1NodeT.html#a1f9067b43b1a6962854f4a2b43325858',1,'BVH::NodeT::signedDistance(const Vec3T< T > &a_point, const Prune a_pruning) const noexcept'],['../classBVH_1_1LinearBVH.html#a8fb0c0cb9e8f5161ed78953237eb3c39',1,'BVH::LinearBVH::signedDistance()'],['../classDcel_1_1EdgeT.html#adba2d72aed5f510997d06c2bc9e6e96c',1,'Dcel::EdgeT::signedDistance()'],['../classDcel_1_1FaceT.html#a8ac718b0c9af797d34efcda43f38b6c0',1,'Dcel::FaceT::signedDistance()'],['../classDcel_1_1MeshT.html#aa6f614aa0d93c3345c10150168347497',1,'Dcel::MeshT::signedDistance(const Vec3 &a_x0) const noexcept'],['../classDcel_1_1MeshT.html#a4fa40378fbd4c31cd50e77da70ef30fd',1,'Dcel::MeshT::signedDistance(const Vec3 &a_x0, SearchAlgorithm a_algorithm) const noexcept'],['../classDcel_1_1VertexT.html#afce7ba8e2bbf81b158b43af2576c4dda',1,'Dcel::VertexT::signedDistance()'],['../classSignedDistanceFunction.html#af5912280ca51dc21a2d6949a30ec7d21',1,'SignedDistanceFunction::signedDistance()'],['../classUnion.html#a08beffd354ca261e3d31bcb453951810',1,'Union::signedDistance()'],['../classUnionBVH.html#a9681fdc161e2e077a33caaddb78fb4ba',1,'UnionBVH::signedDistance()']]], - ['signeddistancefunction',['SignedDistanceFunction',['../classSignedDistanceFunction.html#abfeeff9b3901e03ec6b73317dc9a722e',1,'SignedDistanceFunction']]], - ['spheresdf',['SphereSDF',['../classSphereSDF.html#ad5f6d20f6ccd77ba91c00acd2aeea28f',1,'SphereSDF::SphereSDF()=delete'],['../classSphereSDF.html#a3e555062b1b20c1729a9f4ab6136add4',1,'SphereSDF::SphereSDF(const Vec3T< T > &a_center, const T &a_radius, const bool a_flipInside)'],['../classSphereSDF.html#a2c25f14a19fcb910cd4d48af7123185a',1,'SphereSDF::SphereSDF(const SphereSDF &a_other)']]] -]; diff --git a/docs/doxygen/html/search/functions_f.html b/docs/doxygen/html/search/functions_f.html deleted file mode 100644 index 424126cd..00000000 --- a/docs/doxygen/html/search/functions_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/functions_f.js b/docs/doxygen/html/search/functions_f.js deleted file mode 100644 index 56429675..00000000 --- a/docs/doxygen/html/search/functions_f.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['topdownsortandpartitionprimitives',['topDownSortAndPartitionPrimitives',['../classBVH_1_1NodeT.html#acae5a575fa8b236de984fdd41e04c038',1,'BVH::NodeT']]], - ['torussdf',['TorusSDF',['../classTorusSDF.html#a4591d7c3cdbbed45fdbaf414f0d096ee',1,'TorusSDF::TorusSDF()=delete'],['../classTorusSDF.html#acf22c1b59605e93750a3a002fd5bc23a',1,'TorusSDF::TorusSDF(const Vec3T< T > &a_center, const T &a_majorRadius, const T &a_minorRadius, const bool a_flipInside)']]], - ['transform',['transform',['../classTransformOp.html#a61c1920daa9f55fd2ea9095cbcfa18b8',1,'TransformOp::transform()'],['../classTranslateOp.html#a16941d9e52b02d39f9c92f6b23f61af6',1,'TranslateOp::transform()'],['../classRotateOp.html#aaffc25806ef6b9d7ea6651aa2bb9767c',1,'RotateOp::transform()']]], - ['transformop',['TransformOp',['../classTransformOp.html#ab904cbdd373ca07e08b254163331b3b4',1,'TransformOp']]], - ['transformpoint',['transformPoint',['../classSignedDistanceFunction.html#af186f98f9ea4ac96fccb4add4ebf196d',1,'SignedDistanceFunction']]], - ['translate',['translate',['../classSignedDistanceFunction.html#add71ebc2e7f3fb5e85766898413482e7',1,'SignedDistanceFunction']]], - ['translateop',['TranslateOp',['../classTranslateOp.html#ab20f5a272d6cd34bf98fc23523913fc9',1,'TranslateOp::TranslateOp()'],['../classTranslateOp.html#ac646a47f26119d8316533c91f3043864',1,'TranslateOp::TranslateOp(const Vec3T< T > &a_translation)']]] -]; diff --git a/docs/doxygen/html/search/mag_sel.png b/docs/doxygen/html/search/mag_sel.png deleted file mode 100644 index 81f6040a..00000000 Binary files a/docs/doxygen/html/search/mag_sel.png and /dev/null differ diff --git a/docs/doxygen/html/search/namespaces_0.html b/docs/doxygen/html/search/namespaces_0.html deleted file mode 100644 index 605ac452..00000000 --- a/docs/doxygen/html/search/namespaces_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/namespaces_0.js b/docs/doxygen/html/search/namespaces_0.js deleted file mode 100644 index c56c3376..00000000 --- a/docs/doxygen/html/search/namespaces_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['boundingvolumes',['BoundingVolumes',['../namespaceBoundingVolumes.html',1,'']]], - ['bvh',['BVH',['../namespaceBVH.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/namespaces_1.html b/docs/doxygen/html/search/namespaces_1.html deleted file mode 100644 index f093550a..00000000 --- a/docs/doxygen/html/search/namespaces_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/namespaces_1.js b/docs/doxygen/html/search/namespaces_1.js deleted file mode 100644 index 8756a4cf..00000000 --- a/docs/doxygen/html/search/namespaces_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['dcel',['Dcel',['../namespaceDcel.html',1,'']]], - ['parser',['Parser',['../namespaceDcel_1_1Parser.html',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/namespaces_2.html b/docs/doxygen/html/search/namespaces_2.html deleted file mode 100644 index 1a1cbe16..00000000 --- a/docs/doxygen/html/search/namespaces_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/namespaces_2.js b/docs/doxygen/html/search/namespaces_2.js deleted file mode 100644 index c2008210..00000000 --- a/docs/doxygen/html/search/namespaces_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ebgeometry',['EBGeometry',['../namespaceEBGeometry.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/nomatches.html b/docs/doxygen/html/search/nomatches.html deleted file mode 100644 index b1ded27e..00000000 --- a/docs/doxygen/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/docs/doxygen/html/search/pages_0.html b/docs/doxygen/html/search/pages_0.html deleted file mode 100644 index 4955b9e4..00000000 --- a/docs/doxygen/html/search/pages_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/pages_0.js b/docs/doxygen/html/search/pages_0.js deleted file mode 100644 index b34782fb..00000000 --- a/docs/doxygen/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ebgeometry',['EBGeometry',['../index.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/pages_1.html b/docs/doxygen/html/search/pages_1.html deleted file mode 100644 index aedb14ee..00000000 --- a/docs/doxygen/html/search/pages_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/pages_1.js b/docs/doxygen/html/search/pages_1.js deleted file mode 100644 index 441b2dec..00000000 --- a/docs/doxygen/html/search/pages_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['todo_20list',['Todo List',['../todo.html',1,'']]] -]; diff --git a/docs/doxygen/html/search/search.css b/docs/doxygen/html/search/search.css deleted file mode 100644 index 3cf9df94..00000000 --- a/docs/doxygen/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/docs/doxygen/html/search/search.js b/docs/doxygen/html/search/search.js deleted file mode 100644 index dedce3bf..00000000 --- a/docs/doxygen/html/search/search.js +++ /dev/null @@ -1,791 +0,0 @@ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_0.js b/docs/doxygen/html/search/typedefs_0.js deleted file mode 100644 index 43faf326..00000000 --- a/docs/doxygen/html/search/typedefs_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['buildernode',['BuilderNode',['../classUnionBVH.html#a9fd434576440274a81c0251962d7ff7e',1,'UnionBVH']]], - ['bvconstructor',['BVConstructor',['../classBVH_1_1NodeT.html#a2340f2466ed5b6eebab4bdc72004858e',1,'BVH::NodeT::BVConstructor()'],['../classUnionBVH.html#a09561e026cd6a7da1a7dbdbad5eea2c2',1,'UnionBVH::BVConstructor()']]], - ['bvconstructort',['BVConstructorT',['../namespaceBVH.html#a245702d7eff40cdaedb5dff68c25a88a',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/typedefs_1.html b/docs/doxygen/html/search/typedefs_1.html deleted file mode 100644 index b77c5338..00000000 --- a/docs/doxygen/html/search/typedefs_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_1.js b/docs/doxygen/html/search/typedefs_1.js deleted file mode 100644 index 30f75221..00000000 --- a/docs/doxygen/html/search/typedefs_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['edge',['Edge',['../classDcel_1_1EdgeT.html#a00184663a9d069d2c7a7e0a970f71fd5',1,'Dcel::EdgeT::Edge()'],['../classDcel_1_1FaceT.html#a32a6b328d61bd2739fd840b892833c41',1,'Dcel::FaceT::Edge()'],['../classDcel_1_1EdgeIteratorT.html#ab65ac3b39da5eeb9e3e795f62647ac0b',1,'Dcel::EdgeIteratorT::Edge()'],['../classDcel_1_1MeshT.html#a94f5c42e6f80fd948ebbc294d948ffab',1,'Dcel::MeshT::Edge()'],['../classDcel_1_1Parser_1_1PLY.html#af3741c96a8a8434780665641912ff1d4',1,'Dcel::Parser::PLY::Edge()'],['../classDcel_1_1VertexT.html#abe1079747424916a164ec68b46333fc3',1,'Dcel::VertexT::Edge()']]], - ['edgeiterator',['EdgeIterator',['../classDcel_1_1EdgeT.html#ad55f43bd1061c5ab99c80005861d5bcf',1,'Dcel::EdgeT::EdgeIterator()'],['../classDcel_1_1FaceT.html#afcd6f529cb59cd3dc358d6da52de54a1',1,'Dcel::FaceT::EdgeIterator()'],['../classDcel_1_1Parser_1_1PLY.html#aa0a9888ee0a1539928e6c1ffdda299a8',1,'Dcel::Parser::PLY::EdgeIterator()'],['../classDcel_1_1VertexT.html#abf182ec635351e107cd474df25b6ba73',1,'Dcel::VertexT::EdgeIterator()']]], - ['edgeptr',['EdgePtr',['../classDcel_1_1EdgeT.html#af525f4228d820f6b8b23fc02d937e4c8',1,'Dcel::EdgeT::EdgePtr()'],['../classDcel_1_1FaceT.html#a0f3448c4cf108341e48029b8040c7cec',1,'Dcel::FaceT::EdgePtr()'],['../classDcel_1_1EdgeIteratorT.html#a75d19cf89d4ac007483aa8124482513b',1,'Dcel::EdgeIteratorT::EdgePtr()'],['../classDcel_1_1MeshT.html#ab2b035530536a8bc56e40aab455f24e3',1,'Dcel::MeshT::EdgePtr()'],['../classDcel_1_1VertexT.html#a7c049a24ac43b9750578e4f4ed543831',1,'Dcel::VertexT::EdgePtr()']]] -]; diff --git a/docs/doxygen/html/search/typedefs_2.html b/docs/doxygen/html/search/typedefs_2.html deleted file mode 100644 index 076311dc..00000000 --- a/docs/doxygen/html/search/typedefs_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_2.js b/docs/doxygen/html/search/typedefs_2.js deleted file mode 100644 index eb069ddf..00000000 --- a/docs/doxygen/html/search/typedefs_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['face',['Face',['../classDcel_1_1EdgeT.html#a46456b8f418abc6f09154e8e0d398e37',1,'Dcel::EdgeT::Face()'],['../classDcel_1_1FaceT.html#a01d61241adc3c536c364084740b8c6da',1,'Dcel::FaceT::Face()'],['../classDcel_1_1EdgeIteratorT.html#a59cc24c2a7a6a12c5c60bc04b0ac7497',1,'Dcel::EdgeIteratorT::Face()'],['../classDcel_1_1MeshT.html#ac1fcce96c65811660619af9eb32589f9',1,'Dcel::MeshT::Face()'],['../classDcel_1_1Parser_1_1PLY.html#ac67854dee5613f4e877e8caddb4580f3',1,'Dcel::Parser::PLY::Face()'],['../classDcel_1_1VertexT.html#a455510a8591a4e0f235b2049deb96e08',1,'Dcel::VertexT::Face()']]], - ['faceptr',['FacePtr',['../classDcel_1_1EdgeT.html#a97dd9849ea4a21223095f852e48e36e8',1,'Dcel::EdgeT::FacePtr()'],['../classDcel_1_1FaceT.html#a4c7f99f7e30983c04a9d0b2f7ca40736',1,'Dcel::FaceT::FacePtr()'],['../classDcel_1_1EdgeIteratorT.html#a99deb9b82e268cf8fd1f7c0b94fea339',1,'Dcel::EdgeIteratorT::FacePtr()'],['../classDcel_1_1MeshT.html#a6c71642a9e6b36f9d6ab6027035625f0',1,'Dcel::MeshT::FacePtr()'],['../classDcel_1_1VertexT.html#a5acb4c66c49319683c71f52e56ad8e8a',1,'Dcel::VertexT::FacePtr()']]] -]; diff --git a/docs/doxygen/html/search/typedefs_3.html b/docs/doxygen/html/search/typedefs_3.html deleted file mode 100644 index a4a727ff..00000000 --- a/docs/doxygen/html/search/typedefs_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_3.js b/docs/doxygen/html/search/typedefs_3.js deleted file mode 100644 index 9c24102c..00000000 --- a/docs/doxygen/html/search/typedefs_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['linearnode',['LinearNode',['../classBVH_1_1LinearBVH.html#ad8c5e4f84138090dbd408a075dc91896',1,'BVH::LinearBVH::LinearNode()'],['../classUnionBVH.html#a25cac5a9dc5396299f06399434ebe212',1,'UnionBVH::LinearNode()']]] -]; diff --git a/docs/doxygen/html/search/typedefs_4.html b/docs/doxygen/html/search/typedefs_4.html deleted file mode 100644 index be033cd1..00000000 --- a/docs/doxygen/html/search/typedefs_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_4.js b/docs/doxygen/html/search/typedefs_4.js deleted file mode 100644 index 3f5329e2..00000000 --- a/docs/doxygen/html/search/typedefs_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mesh',['Mesh',['../classDcel_1_1MeshT.html#abe9db973f4510ccb36e20ecfa9223926',1,'Dcel::MeshT::Mesh()'],['../classDcel_1_1Parser_1_1PLY.html#a047f135a59b43a0fb84f3629a790bba4',1,'Dcel::Parser::PLY::Mesh()']]] -]; diff --git a/docs/doxygen/html/search/typedefs_5.html b/docs/doxygen/html/search/typedefs_5.html deleted file mode 100644 index e10c325b..00000000 --- a/docs/doxygen/html/search/typedefs_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_5.js b/docs/doxygen/html/search/typedefs_5.js deleted file mode 100644 index 8c9e82ca..00000000 --- a/docs/doxygen/html/search/typedefs_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['node',['Node',['../classBVH_1_1NodeT.html#ac52d9b56f082002c7f8be91062c40ff8',1,'BVH::NodeT']]], - ['nodeptr',['NodePtr',['../classBVH_1_1NodeT.html#a008f5c2c53adb1f5730d8478b48529b1',1,'BVH::NodeT']]] -]; diff --git a/docs/doxygen/html/search/typedefs_6.html b/docs/doxygen/html/search/typedefs_6.html deleted file mode 100644 index 4e206e87..00000000 --- a/docs/doxygen/html/search/typedefs_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_6.js b/docs/doxygen/html/search/typedefs_6.js deleted file mode 100644 index 40c8fbdb..00000000 --- a/docs/doxygen/html/search/typedefs_6.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['partitioner',['Partitioner',['../classBVH_1_1NodeT.html#a3bb028655b8b961fa35109af1c14f281',1,'BVH::NodeT']]], - ['partitionert',['PartitionerT',['../namespaceBVH.html#a7c33d54da9893d506709b2ca96b76f55',1,'BVH']]], - ['primitivelist',['PrimitiveList',['../classBVH_1_1NodeT.html#a19cce6e7fbe85eccb4a3718dd69f49b7',1,'BVH::NodeT::PrimitiveList()'],['../classBVH_1_1LinearBVH.html#a94ee5da1670e2ef85eeabf7cf6a2da92',1,'BVH::LinearBVH::PrimitiveList()'],['../namespaceDcel.html#a69f60bf0111d66715bf4f7a8e22645e6',1,'Dcel::PrimitiveList()']]], - ['primitivelistt',['PrimitiveListT',['../namespaceBVH.html#aa1e753bda451b85cd5b948722a2ad7c7',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/typedefs_7.html b/docs/doxygen/html/search/typedefs_7.html deleted file mode 100644 index cc182ee6..00000000 --- a/docs/doxygen/html/search/typedefs_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_7.js b/docs/doxygen/html/search/typedefs_7.js deleted file mode 100644 index c986dfc1..00000000 --- a/docs/doxygen/html/search/typedefs_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['sdf',['SDF',['../classUnion.html#a9e9d1d95ae54fa471c6f29e778239021',1,'Union::SDF()'],['../classUnionBVH.html#a5d1d64d7cabf1000fc1a804d06e103cc',1,'UnionBVH::SDF()']]], - ['sdflist',['SDFList',['../classUnionBVH.html#ac23ace50239fbe00130df2a7e42af995',1,'UnionBVH']]], - ['stopfunction',['StopFunction',['../classBVH_1_1NodeT.html#acbe56195affc439febe8aca84db308e3',1,'BVH::NodeT']]], - ['stopfunctiont',['StopFunctionT',['../namespaceBVH.html#afef1c5979c34a11d23b756cc09654bf9',1,'BVH']]] -]; diff --git a/docs/doxygen/html/search/typedefs_8.html b/docs/doxygen/html/search/typedefs_8.html deleted file mode 100644 index 9379676b..00000000 --- a/docs/doxygen/html/search/typedefs_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/typedefs_8.js b/docs/doxygen/html/search/typedefs_8.js deleted file mode 100644 index 5de6aa48..00000000 --- a/docs/doxygen/html/search/typedefs_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['vec2',['Vec2',['../classDcel_1_1Polygon2D.html#ab70ec33cb6418fa0204f0d951dfd01fb',1,'Dcel::Polygon2D']]], - ['vec3',['Vec3',['../classBoundingVolumes_1_1BoundingSphereT.html#ad89ed315255abcde216e9ca1de3068ab',1,'BoundingVolumes::BoundingSphereT::Vec3()'],['../classBoundingVolumes_1_1AABBT.html#aa968c6b21a7f02e1cbfc03d26c7e67b4',1,'BoundingVolumes::AABBT::Vec3()'],['../classBVH_1_1NodeT.html#a6fbb4308c5c55ee170c5f992df7ae1d0',1,'BVH::NodeT::Vec3()'],['../classBVH_1_1LinearNodeT.html#a073e87d51d44b4cc243c8f90690247a6',1,'BVH::LinearNodeT::Vec3()'],['../classBVH_1_1LinearBVH.html#a13b0083e8b7ff1a5e170d39d69e6a15a',1,'BVH::LinearBVH::Vec3()'],['../classDcel_1_1EdgeT.html#a93b8679cea557c419af44385ca6d356a',1,'Dcel::EdgeT::Vec3()'],['../classDcel_1_1FaceT.html#ade9c182834ec6f18a0e17b8140308db2',1,'Dcel::FaceT::Vec3()'],['../classDcel_1_1MeshT.html#a646c5d8f66b3079bca35fe4186493627',1,'Dcel::MeshT::Vec3()'],['../classDcel_1_1Polygon2D.html#a46e9686210f09464e8f5ad13300717b9',1,'Dcel::Polygon2D::Vec3()'],['../classDcel_1_1VertexT.html#a6e073dc7426756edef5594816be6e7c7',1,'Dcel::VertexT::Vec3()']]], - ['vertex',['Vertex',['../classDcel_1_1EdgeT.html#a2409bc47d421bbea1c091fb6b15da271',1,'Dcel::EdgeT::Vertex()'],['../classDcel_1_1FaceT.html#acf33f51e5402ed6bf811521b138121b9',1,'Dcel::FaceT::Vertex()'],['../classDcel_1_1EdgeIteratorT.html#a4ca07f27da7faf50db5dbd1f20bbcafb',1,'Dcel::EdgeIteratorT::Vertex()'],['../classDcel_1_1MeshT.html#a58b357c4ad94f4a4b813ed7ebf01cd05',1,'Dcel::MeshT::Vertex()'],['../classDcel_1_1Parser_1_1PLY.html#acbecc13804a702a6bf2687d9bf5d7989',1,'Dcel::Parser::PLY::Vertex()'],['../classDcel_1_1VertexT.html#a2c8a221a9f03e9bafa891bd0759b4f8f',1,'Dcel::VertexT::Vertex()']]], - ['vertexptr',['VertexPtr',['../classDcel_1_1EdgeT.html#ab4ba57cfc6b2f90da43096eea87bb284',1,'Dcel::EdgeT::VertexPtr()'],['../classDcel_1_1FaceT.html#a9c22745bf7351c3bfba27d5816a50deb',1,'Dcel::FaceT::VertexPtr()'],['../classDcel_1_1EdgeIteratorT.html#ac6f7324622a089d17c5b66eb0be679f0',1,'Dcel::EdgeIteratorT::VertexPtr()'],['../classDcel_1_1MeshT.html#a1e0abeadcb51e679b0dd9a36e2ee08c7',1,'Dcel::MeshT::VertexPtr()'],['../classDcel_1_1VertexT.html#aa7d02695a42762b98a66c559e6d3d849',1,'Dcel::VertexT::VertexPtr()']]] -]; diff --git a/docs/doxygen/html/search/variables_0.html b/docs/doxygen/html/search/variables_0.html deleted file mode 100644 index 74ce8072..00000000 --- a/docs/doxygen/html/search/variables_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/variables_0.js b/docs/doxygen/html/search/variables_0.js deleted file mode 100644 index 5ecb89ac..00000000 --- a/docs/doxygen/html/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['defaultbvconstructor',['defaultBVConstructor',['../namespaceDcel.html#a628449c42ce3f2784ca018f2a3c88a11',1,'Dcel']]], - ['defaultstopfunction',['defaultStopFunction',['../namespaceDcel.html#a45e9f2554a8d9ea01164cd51f787f989',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/variables_1.html b/docs/doxygen/html/search/variables_1.html deleted file mode 100644 index 84237b6e..00000000 --- a/docs/doxygen/html/search/variables_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/variables_1.js b/docs/doxygen/html/search/variables_1.js deleted file mode 100644 index 5ac3aa04..00000000 --- a/docs/doxygen/html/search/variables_1.js +++ /dev/null @@ -1,52 +0,0 @@ -var searchData= -[ - ['m_5falgorithm',['m_algorithm',['../classDcel_1_1MeshT.html#aaa5bdf8df02aa8bcff84203467f86fbe',1,'Dcel::MeshT']]], - ['m_5farea',['m_area',['../classDcel_1_1FaceT.html#a572c463c60afb896c8cec667c964631f',1,'Dcel::FaceT']]], - ['m_5faxis',['m_axis',['../classCylinderSDF.html#a034a7baec832c8a19fd2cd33ec1358eb',1,'CylinderSDF::m_axis()'],['../classRotateOp.html#ae0f4b6879b2b86506b4a528d7e627255',1,'RotateOp::m_axis()']]], - ['m_5fboundingvolume',['m_boundingVolume',['../classBVH_1_1NodeT.html#a7f8720f2ab03ee9e81de114c479cb2e5',1,'BVH::NodeT::m_boundingVolume()'],['../classBVH_1_1LinearNodeT.html#acef96b811ea69cd649fda35da082b361',1,'BVH::LinearNodeT::m_boundingVolume()']]], - ['m_5fcenter',['m_center',['../classSphereSDF.html#ab3caacb26a72b3ada01f09a248f5cb83',1,'SphereSDF::m_center()'],['../classTorusSDF.html#aa097ba79346768486083bf5269b20821',1,'TorusSDF::m_center()'],['../classCylinderSDF.html#a38e901843de5889a3c3eee35bc2a534c',1,'CylinderSDF::m_center()'],['../classBoundingVolumes_1_1BoundingSphereT.html#ad65d5be68c4028651d959dc8b88fe944',1,'BoundingVolumes::BoundingSphereT::m_center()']]], - ['m_5fcenter1',['m_center1',['../classCylinderSDF.html#ac69f666234c9625306153be47295cdbc',1,'CylinderSDF']]], - ['m_5fcenter2',['m_center2',['../classCylinderSDF.html#a02b8aea5350ad933ed53abea6cb58103',1,'CylinderSDF']]], - ['m_5fcentroid',['m_centroid',['../classDcel_1_1FaceT.html#a9a85e2c47be9ac4bbfe8620bc0773d6d',1,'Dcel::FaceT']]], - ['m_5fchildoffsets',['m_childOffsets',['../classBVH_1_1LinearNodeT.html#a2a160d04d0bea69de7eb949fd9d56dda',1,'BVH::LinearNodeT']]], - ['m_5fchildren',['m_children',['../classBVH_1_1NodeT.html#afaf556d6faa78c2cc2b27c82feb0145c',1,'BVH::NodeT']]], - ['m_5fcosangle',['m_cosAngle',['../classRotateOp.html#a8eed86f336946618f1964056405b9ac4',1,'RotateOp']]], - ['m_5fcuredge',['m_curEdge',['../classDcel_1_1EdgeIteratorT.html#afcebe87fbd158d212d7ba0a6b01efa8c',1,'Dcel::EdgeIteratorT']]], - ['m_5fdistancefunctions',['m_distanceFunctions',['../classUnion.html#a5d2f543272ab5fe25f6f5945ad1ef27f',1,'Union::m_distanceFunctions()'],['../classUnionBVH.html#a026a103a13d0b04bedb6dabd50e4da69',1,'UnionBVH::m_distanceFunctions()']]], - ['m_5fedges',['m_edges',['../classDcel_1_1FaceT.html#a9228b5f27e1aa5c9eea36a7c27462e6c',1,'Dcel::FaceT::m_edges()'],['../classDcel_1_1MeshT.html#a3325cb09037fa32255aa1a8a5536e473',1,'Dcel::MeshT::m_edges()']]], - ['m_5fface',['m_face',['../classDcel_1_1EdgeT.html#a47aaa6dbeeb6a56f1c7b6d73b2119761',1,'Dcel::EdgeT']]], - ['m_5ffaces',['m_faces',['../classDcel_1_1MeshT.html#a17e08b2ee4b5b7b1dc3df974e792ca5f',1,'Dcel::MeshT::m_faces()'],['../classDcel_1_1VertexT.html#ad0a8f9c1015b62c891ad2d877d6b8802',1,'Dcel::VertexT::m_faces()']]], - ['m_5fflipinside',['m_flipInside',['../classSphereSDF.html#a9a32a668648c166b41c5d1c3981c9579',1,'SphereSDF::m_flipInside()'],['../classBoxSDF.html#aac14b4352ba92c067f70884a99c934bf',1,'BoxSDF::m_flipInside()'],['../classTorusSDF.html#a41d7b8bbbf97d96d49432dcb1036573a',1,'TorusSDF::m_flipInside()'],['../classCylinderSDF.html#a1c57a3a6464820197347bcdc5977f7ba',1,'CylinderSDF::m_flipInside()']]], - ['m_5fflipsign',['m_flipSign',['../classUnion.html#a53b9705419030572836a540e7fa3752f',1,'Union::m_flipSign()'],['../classUnionBVH.html#a0782d93bd0a7bff7580a99e6fef285c7',1,'UnionBVH::m_flipSign()']]], - ['m_5ffullloop',['m_fullLoop',['../classDcel_1_1EdgeIteratorT.html#a39560da0f4479c53ed27c38bdfab7c21',1,'Dcel::EdgeIteratorT']]], - ['m_5fhalfedge',['m_halfEdge',['../classDcel_1_1FaceT.html#afe66c3d93bb0ea04d9a0d263b2927bd3',1,'Dcel::FaceT']]], - ['m_5fhicorner',['m_hiCorner',['../classBoxSDF.html#a96181447700a9106e937fa2ff73499b1',1,'BoxSDF::m_hiCorner()'],['../classBoundingVolumes_1_1AABBT.html#a35f9498191e406b3f48f7454bfdf0cf7',1,'BoundingVolumes::AABBT::m_hiCorner()']]], - ['m_5finvlen2',['m_invLen2',['../classDcel_1_1EdgeT.html#a3689615754e3bdafb12109d5b82183a7',1,'Dcel::EdgeT']]], - ['m_5fisgood',['m_isGood',['../classUnionBVH.html#a2c3a008bd61f225a83c959f2280b9649',1,'UnionBVH']]], - ['m_5fitermode',['m_iterMode',['../classDcel_1_1EdgeIteratorT.html#aa0c8a35a18d668927dd966ddd9620ce5',1,'Dcel::EdgeIteratorT']]], - ['m_5flength',['m_length',['../classCylinderSDF.html#a715c9888a921083d827bad94b4660626',1,'CylinderSDF']]], - ['m_5flinearnodes',['m_linearNodes',['../classBVH_1_1LinearBVH.html#ac11af18884c0568f3067ef12c7f53e39',1,'BVH::LinearBVH']]], - ['m_5flocorner',['m_loCorner',['../classBoxSDF.html#a7286bfb7a6669127b4902b1b2e9a2c80',1,'BoxSDF::m_loCorner()'],['../classBoundingVolumes_1_1AABBT.html#a5cbd0ee374c62951aa58644bc09f70cf',1,'BoundingVolumes::AABBT::m_loCorner()']]], - ['m_5fmajorradius',['m_majorRadius',['../classTorusSDF.html#a21d443b0a0f8af98856cdc7bce0363ba',1,'TorusSDF']]], - ['m_5fminorradius',['m_minorRadius',['../classTorusSDF.html#afedc4aacff95c95b97d1d540dddd2e99',1,'TorusSDF']]], - ['m_5fnextedge',['m_nextEdge',['../classDcel_1_1EdgeT.html#a26de8e8184c0a6656a2cee2af1bc0230',1,'Dcel::EdgeT']]], - ['m_5fnormal',['m_normal',['../classDcel_1_1EdgeT.html#af44c33f8b5b0a3d45cd4a83e6fde4db5',1,'Dcel::EdgeT::m_normal()'],['../classDcel_1_1FaceT.html#a886ee24ddf3dae99b836b39183a412ba',1,'Dcel::FaceT::m_normal()'],['../classDcel_1_1VertexT.html#a509216af6d1d2ca84d1d774b4a6c7659',1,'Dcel::VertexT::m_normal()']]], - ['m_5fnumprimitives',['m_numPrimitives',['../classBVH_1_1LinearNodeT.html#a59a4aff1eeac58606f4854e334e10a17',1,'BVH::LinearNodeT']]], - ['m_5foutgoingedge',['m_outgoingEdge',['../classDcel_1_1VertexT.html#ab02281ef4c214c2ea5567dae97864846',1,'Dcel::VertexT']]], - ['m_5fpairedge',['m_pairEdge',['../classDcel_1_1EdgeT.html#a5c3bc15e1360b931231cac396493f5b6',1,'Dcel::EdgeT']]], - ['m_5fpoly2',['m_poly2',['../classDcel_1_1FaceT.html#a77edb4eca91bcd6fb47ce3574c11b840',1,'Dcel::FaceT']]], - ['m_5fpoly2algorithm',['m_poly2Algorithm',['../classDcel_1_1FaceT.html#acc53b6246f9d5d57777789aad6084d14',1,'Dcel::FaceT']]], - ['m_5fposition',['m_position',['../classDcel_1_1VertexT.html#a1980e54dcfd5cefdebac129580028015',1,'Dcel::VertexT']]], - ['m_5fpreviousedge',['m_previousEdge',['../classDcel_1_1EdgeT.html#a77d21fbad704f8aa84aeddeaff1532fd',1,'Dcel::EdgeT']]], - ['m_5fprimitives',['m_primitives',['../classBVH_1_1NodeT.html#a3c45be2075d8cdfd0dc0a9e73373b64d',1,'BVH::NodeT::m_primitives()'],['../classBVH_1_1LinearBVH.html#aa4f627615c40d7230139ec1744384322',1,'BVH::LinearBVH::m_primitives()']]], - ['m_5fprimitivesoffset',['m_primitivesOffset',['../classBVH_1_1LinearNodeT.html#a05efc0076443c7131187adfadaad81ea',1,'BVH::LinearNodeT']]], - ['m_5fradius',['m_radius',['../classSphereSDF.html#ac4b0f786ea2b53530512ce3fa4e7bdbd',1,'SphereSDF::m_radius()'],['../classCylinderSDF.html#ad5ff6ceb3b872fcea0534f89d73f0268',1,'CylinderSDF::m_radius()'],['../classBoundingVolumes_1_1BoundingSphereT.html#adb424c867ed93cf5fdb62afe07a96a05',1,'BoundingVolumes::BoundingSphereT::m_radius()']]], - ['m_5frootnode',['m_rootNode',['../classUnionBVH.html#ad59be4f96e0f020c28f4677dcb94a004',1,'UnionBVH']]], - ['m_5fsinangle',['m_sinAngle',['../classRotateOp.html#ab0f3316357239d07fb1da64b7298d53f',1,'RotateOp']]], - ['m_5fstartedge',['m_startEdge',['../classDcel_1_1EdgeIteratorT.html#a39c525d750868014457cdf06a40455bd',1,'Dcel::EdgeIteratorT']]], - ['m_5ftransformops',['m_transformOps',['../classSignedDistanceFunction.html#af61e5e2ece6add9d2bcf8e5aa8cf2844',1,'SignedDistanceFunction']]], - ['m_5ftranslation',['m_translation',['../classTranslateOp.html#a35f16c6a9cf4c03edffa19d86e73d27a',1,'TranslateOp']]], - ['m_5fvertex',['m_vertex',['../classDcel_1_1EdgeT.html#a30813ecada33723cc466e0cd1d24abd4',1,'Dcel::EdgeT']]], - ['m_5fvertices',['m_vertices',['../classDcel_1_1MeshT.html#a4263fd9ebba22b96e12ee9f046eca089',1,'Dcel::MeshT']]], - ['m_5fx2x1',['m_x2x1',['../classDcel_1_1EdgeT.html#af70e7b85effe62dd804638984b15695a',1,'Dcel::EdgeT']]] -]; diff --git a/docs/doxygen/html/search/variables_2.html b/docs/doxygen/html/search/variables_2.html deleted file mode 100644 index 5c9de1aa..00000000 --- a/docs/doxygen/html/search/variables_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/variables_2.js b/docs/doxygen/html/search/variables_2.js deleted file mode 100644 index 8c50efb5..00000000 --- a/docs/doxygen/html/search/variables_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['primitivesperleafnode',['primitivesPerLeafNode',['../namespaceDcel.html#a4db11eb50441e7c4e6c3ae796a202024',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/variables_3.html b/docs/doxygen/html/search/variables_3.html deleted file mode 100644 index f95e34c6..00000000 --- a/docs/doxygen/html/search/variables_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/variables_3.js b/docs/doxygen/html/search/variables_3.js deleted file mode 100644 index 736a24b3..00000000 --- a/docs/doxygen/html/search/variables_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['spatialsplitbinarypartitioner',['spatialSplitBinaryPartitioner',['../namespaceDcel.html#a08217ffcd4cfc6f58a3b0b3f780fc611',1,'Dcel']]], - ['spatialsplitpartitioner',['spatialSplitPartitioner',['../namespaceDcel.html#ab4f869248e23d47bb01ad06c76288fef',1,'Dcel']]] -]; diff --git a/docs/doxygen/html/search/variables_4.html b/docs/doxygen/html/search/variables_4.html deleted file mode 100644 index d7db285e..00000000 --- a/docs/doxygen/html/search/variables_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/variables_4.js b/docs/doxygen/html/search/variables_4.js deleted file mode 100644 index a27555a4..00000000 --- a/docs/doxygen/html/search/variables_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x',['X',['../classVec3T.html#a0643a9f9a68edf5d4656f2e613c9624f',1,'Vec3T::X()'],['../classVec2T.html#a66ea295b52114b22de1f76cce1aa7f51',1,'Vec2T::x()']]] -]; diff --git a/docs/doxygen/html/search/variables_5.html b/docs/doxygen/html/search/variables_5.html deleted file mode 100644 index 7bbceeb0..00000000 --- a/docs/doxygen/html/search/variables_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/doxygen/html/search/variables_5.js b/docs/doxygen/html/search/variables_5.js deleted file mode 100644 index c7b08612..00000000 --- a/docs/doxygen/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['y',['y',['../classVec2T.html#a71ce5251d618a6dbd4e0e7a0f867b6cf',1,'Vec2T']]] -]; diff --git a/docs/doxygen/html/splitbar.png b/docs/doxygen/html/splitbar.png deleted file mode 100644 index fe895f2c..00000000 Binary files a/docs/doxygen/html/splitbar.png and /dev/null differ diff --git a/docs/doxygen/html/sync_off.png b/docs/doxygen/html/sync_off.png deleted file mode 100644 index 3b443fc6..00000000 Binary files a/docs/doxygen/html/sync_off.png and /dev/null differ diff --git a/docs/doxygen/html/sync_on.png b/docs/doxygen/html/sync_on.png deleted file mode 100644 index e08320fb..00000000 Binary files a/docs/doxygen/html/sync_on.png and /dev/null differ diff --git a/docs/doxygen/html/tab_a.png b/docs/doxygen/html/tab_a.png deleted file mode 100644 index 3b725c41..00000000 Binary files a/docs/doxygen/html/tab_a.png and /dev/null differ diff --git a/docs/doxygen/html/tab_b.png b/docs/doxygen/html/tab_b.png deleted file mode 100644 index e2b4a863..00000000 Binary files a/docs/doxygen/html/tab_b.png and /dev/null differ diff --git a/docs/doxygen/html/tab_h.png b/docs/doxygen/html/tab_h.png deleted file mode 100644 index fd5cb705..00000000 Binary files a/docs/doxygen/html/tab_h.png and /dev/null differ diff --git a/docs/doxygen/html/tab_s.png b/docs/doxygen/html/tab_s.png deleted file mode 100644 index ab478c95..00000000 Binary files a/docs/doxygen/html/tab_s.png and /dev/null differ diff --git a/docs/doxygen/html/tabs.css b/docs/doxygen/html/tabs.css deleted file mode 100644 index bbde11ed..00000000 --- a/docs/doxygen/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/docs/doxygen/html/todo.html b/docs/doxygen/html/todo.html deleted file mode 100644 index b445e123..00000000 --- a/docs/doxygen/html/todo.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -EBGeometry: Todo List - - - - - - - - - -
-
- - - - - - -
-
EBGeometry -  1.0 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Todo List
-
-
-
-
Class BVH::LinearNodeT< T, P, BV, K >
-
There's a minor optimization that can be made to the memory alignment, which is as follows: For a leaf node we never really need the m_childOffsets array, and for a regular node we never really need the m_primitivesOffset member. Moreover, m_childOffsets could be made into a K-1 sized array because we happen to know that the linearized hierarchy will store the first child node immediately after the regular node. We could shave off 16 bytes of storage, which would mean that a double-precision binary tree only takes up one word of CPU memory.
-
File EBGeometry_DcelEdgeImplem.hpp
-
Include m_face in constructors
-
-
- - - - diff --git a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp.tex b/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp.tex deleted file mode 100644 index e36bc8cc..00000000 --- a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp.tex +++ /dev/null @@ -1,44 +0,0 @@ -\hypertarget{EBGeometry__AnalyticDistanceFunctions_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.hpp File Reference} -\label{EBGeometry__AnalyticDistanceFunctions_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp}} - - -Declaration of various analytic distance functions. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__AnalyticDistanceFunctions_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=245pt]{EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classSphereSDF}{Sphere\+S\+D\+F$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Signed distance field for sphere. \end{DoxyCompactList}\item -class \hyperlink{classBoxSDF}{Box\+S\+D\+F$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Signed distance field for an axis-\/aligned box. \end{DoxyCompactList}\item -class \hyperlink{classTorusSDF}{Torus\+S\+D\+F$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Signed distance field for a torus. \end{DoxyCompactList}\item -class \hyperlink{classCylinderSDF}{Cylinder\+S\+D\+F$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Signed distance field for a cylinder. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of various analytic distance functions. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.md5 deleted file mode 100644 index a2c810cf..00000000 --- a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -bf6106d9605692f53ae8ba3a94ac270a \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.pdf deleted file mode 100644 index 87605d44..00000000 Binary files a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.md5 deleted file mode 100644 index 52066f7f..00000000 --- a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d70f9b7a3f936b212cce5305fbff8ea8 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.pdf deleted file mode 100644 index 36736f68..00000000 Binary files a/docs/doxygen/latex/EBGeometry__AnalyticDistanceFunctions_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp.tex deleted file mode 100644 index 5c21b878..00000000 --- a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp.tex +++ /dev/null @@ -1,38 +0,0 @@ -\hypertarget{EBGeometry__BVHImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.hpp File Reference} -\label{EBGeometry__BVHImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}. - - -{\ttfamily \#include $<$stack$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__BVHImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=315pt]{EBGeometry__BVHImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceBVH}{B\+VH} -\begin{DoxyCompactList}\small\item\em Namespace for various bounding volume heirarchy (\hyperlink{namespaceBVH}{B\+VH}) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 82ff324e..00000000 --- a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6d0d1aaea32b4e8032c9812ef4ed2014 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__dep__incl.pdf deleted file mode 100644 index e8263cb6..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__incl.md5 deleted file mode 100644 index 8a35f616..00000000 --- a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a495b8b48079631d62e5b99b336f3e65 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__incl.pdf deleted file mode 100644 index 4108e186..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BVHImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BVH_8hpp.tex b/docs/doxygen/latex/EBGeometry__BVH_8hpp.tex deleted file mode 100644 index b7670ea7..00000000 --- a/docs/doxygen/latex/EBGeometry__BVH_8hpp.tex +++ /dev/null @@ -1,76 +0,0 @@ -\hypertarget{EBGeometry__BVH_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+B\+VH.hpp File Reference} -\label{EBGeometry__BVH_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}} - - -Declaration of a bounding volume hierarchy (\hyperlink{namespaceBVH}{B\+VH}) class. - - -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include $<$functional$>$}\newline -{\ttfamily \#include $<$queue$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__BVH_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__BVH_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+Node\+T$<$ T, P, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Forward declare the \hyperlink{namespaceBVH}{B\+VH} node since it is needed for the polymorphic lambdas. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+Node\+T$<$ T, P, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Forward declare linear node class. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1LinearBVH}{B\+V\+H\+::\+Linear\+B\+V\+H$<$ T, P, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Forward declare linear \hyperlink{namespaceBVH}{B\+VH} class. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+Node\+T$<$ T, P, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Forward declare the \hyperlink{namespaceBVH}{B\+VH} node since it is needed for the polymorphic lambdas. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+Node\+T$<$ T, P, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Forward declare linear node class. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1LinearBVH}{B\+V\+H\+::\+Linear\+B\+V\+H$<$ T, P, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Forward declare linear \hyperlink{namespaceBVH}{B\+VH} class. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceBVH}{B\+VH} -\begin{DoxyCompactList}\small\item\em Namespace for various bounding volume heirarchy (\hyperlink{namespaceBVH}{B\+VH}) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Typedefs} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class P $>$ }\\using \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{B\+V\+H\+::\+Primitive\+ListT} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , class P , class BV , int K$>$ }\\using \hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{B\+V\+H\+::\+Stop\+FunctionT} = std\+::function$<$ bool(const NodeT$<$ T, P, BV, K $>$ \&a\+\_\+node)$>$ -\begin{DoxyCompactList}\small\item\em Stop function for deciding when a \hyperlink{namespaceBVH}{B\+VH} node can\textquotesingle{}t be divided into sub-\/volumes. \end{DoxyCompactList}\item -{\footnotesize template$<$class P , int K$>$ }\\using \hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT} = std\+::function$<$ std\+::array$<$ Primitive\+ListT$<$ P $>$, K $>$(const Primitive\+ListT$<$ P $>$ \&a\+\_\+primitives)$>$ -\begin{DoxyCompactList}\small\item\em Polymorphic partitioner for splitting a list of primitives into K new lists of primitives. \end{DoxyCompactList}\item -{\footnotesize template$<$class P , class BV $>$ }\\using \hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+H\+::\+B\+V\+ConstructorT} = std\+::function$<$ BV(const std\+::shared\+\_\+ptr$<$ const P $>$ \&a\+\_\+primitive)$>$ -\begin{DoxyCompactList}\small\item\em Constructor method for creating bounding volumes from a list of primitives. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Enumerations} -\begin{DoxyCompactItemize} -\item -enum \hyperlink{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}{B\+V\+H\+::\+Prune} \{ {\bfseries Stack}, -{\bfseries Ordered}, -{\bfseries Unordered} - \}\begin{DoxyCompactList}\small\item\em Typename for identifying algorithms various algorithms during tree traversel. \end{DoxyCompactList} -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a bounding volume hierarchy (\hyperlink{namespaceBVH}{B\+VH}) class. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__BVH_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__BVH_8hpp__dep__incl.md5 deleted file mode 100644 index 5d5505fd..00000000 --- a/docs/doxygen/latex/EBGeometry__BVH_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -dde50f3527e2c22a4f628c7075324431 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BVH_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__BVH_8hpp__dep__incl.pdf deleted file mode 100644 index 40073773..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BVH_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BVH_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__BVH_8hpp__incl.md5 deleted file mode 100644 index 5dab8013..00000000 --- a/docs/doxygen/latex/EBGeometry__BVH_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9809fb4d3b83a81eb15ce707206af2d1 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BVH_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__BVH_8hpp__incl.pdf deleted file mode 100644 index c1243ec1..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BVH_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp.tex deleted file mode 100644 index 19162baa..00000000 --- a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp.tex +++ /dev/null @@ -1,49 +0,0 @@ -\hypertarget{EBGeometry__BoundingVolumesImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.hpp File Reference} -\label{EBGeometry__BoundingVolumesImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}. - - -{\ttfamily \#include $<$iostream$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__BoundingVolumesImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=232pt]{EBGeometry__BoundingVolumesImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceBoundingVolumes}{Bounding\+Volumes} -\begin{DoxyCompactList}\small\item\em Namespace for encapsulating various bounding volumes for usage with B\+V\+Hs. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class T $>$ }\\bool \hyperlink{namespaceBoundingVolumes_af35f33c5f319a466550d9ad1040beced}{Bounding\+Volumes\+::intersects} (const Bounding\+SphereT$<$ T $>$ \&a\+\_\+u, const Bounding\+SphereT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Intersection method for testing if two bounding spheres overlap. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\bool \hyperlink{namespaceBoundingVolumes_a5c360ccd42017c01acbe1caf2cfd1efe}{Bounding\+Volumes\+::intersects} (const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+u, const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Intersection method for testing if two bounding boxes overlap. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\T \hyperlink{namespaceBoundingVolumes_a4f159289c317e02beedb4b38136ad692}{Bounding\+Volumes\+::get\+Overlapping\+Volume} (const Bounding\+SphereT$<$ T $>$ \&a\+\_\+u, const Bounding\+SphereT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between two bounding spheres. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\T \hyperlink{namespaceBoundingVolumes_ae5716e39e88aaeec0c204f453cac2acd}{Bounding\+Volumes\+::get\+Overlapping\+Volume} (const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+u, const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between two bounding boxes. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.md5 deleted file mode 100644 index ae98a7b0..00000000 --- a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ba90c1a142ad4aeaa9aa522950e374ec \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.pdf deleted file mode 100644 index d39f67ee..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__incl.md5 deleted file mode 100644 index 2eb54a91..00000000 --- a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -10fbb3a94eb7823722b3ea42772f64e1 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__incl.pdf deleted file mode 100644 index 28fccf14..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BoundingVolumesImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp.tex b/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp.tex deleted file mode 100644 index b8ad0162..00000000 --- a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp.tex +++ /dev/null @@ -1,57 +0,0 @@ -\hypertarget{EBGeometry__BoundingVolumes_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Bounding\+Volumes.hpp File Reference} -\label{EBGeometry__BoundingVolumes_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}} - - -Declaration of a various bounding volumes used for bounding volume hierarchy. - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__BoundingVolumes_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=342pt]{EBGeometry__BoundingVolumes_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which encloses a set of points using a bounding sphere. \end{DoxyCompactList}\item -class \hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Axis-\/aligned bounding box as bounding volume. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceBoundingVolumes}{Bounding\+Volumes} -\begin{DoxyCompactList}\small\item\em Namespace for encapsulating various bounding volumes for usage with B\+V\+Hs. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class T $>$ }\\bool \hyperlink{namespaceBoundingVolumes_af35f33c5f319a466550d9ad1040beced}{Bounding\+Volumes\+::intersects} (const Bounding\+SphereT$<$ T $>$ \&a\+\_\+u, const Bounding\+SphereT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Intersection method for testing if two bounding spheres overlap. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\bool \hyperlink{namespaceBoundingVolumes_a5c360ccd42017c01acbe1caf2cfd1efe}{Bounding\+Volumes\+::intersects} (const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+u, const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Intersection method for testing if two bounding boxes overlap. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\T \hyperlink{namespaceBoundingVolumes_a4f159289c317e02beedb4b38136ad692}{Bounding\+Volumes\+::get\+Overlapping\+Volume} (const Bounding\+SphereT$<$ T $>$ \&a\+\_\+u, const Bounding\+SphereT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between two bounding spheres. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\T \hyperlink{namespaceBoundingVolumes_ae5716e39e88aaeec0c204f453cac2acd}{Bounding\+Volumes\+::get\+Overlapping\+Volume} (const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+u, const A\+A\+B\+BT$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between two bounding boxes. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a various bounding volumes used for bounding volume hierarchy. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__dep__incl.md5 deleted file mode 100644 index 5b18434c..00000000 --- a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -38a9f0dd7d2740ce515ecadc5cc208be \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__dep__incl.pdf deleted file mode 100644 index aeb28aef..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__incl.md5 deleted file mode 100644 index ed7a6095..00000000 --- a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c27cec54281f5d340204a42fd7d8678e \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__incl.pdf deleted file mode 100644 index 3a2324fd..00000000 Binary files a/docs/doxygen/latex/EBGeometry__BoundingVolumes_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp.tex deleted file mode 100644 index ed87aa27..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp.tex +++ /dev/null @@ -1,58 +0,0 @@ -\hypertarget{EBGeometry__DcelBVH_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+B\+VH.hpp File Reference} -\label{EBGeometry__DcelBVH_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+B\+V\+H.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+B\+V\+H.\+hpp}} - - -File which contains partitioners and lambdas for enclosing dcel\+\_\+face in bounding volume heirarchies. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+B\+V\+H.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelBVH_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=252pt]{EBGeometry__DcelBVH_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Typedefs} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{namespaceDcel_a69f60bf0111d66715bf4f7a8e22645e6}\label{namespaceDcel_a69f60bf0111d66715bf4f7a8e22645e6}} -{\footnotesize template$<$class T $>$ }\\using \hyperlink{namespaceDcel_a69f60bf0111d66715bf4f7a8e22645e6}{Dcel\+::\+Primitive\+List} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$ $>$ $>$ -\begin{DoxyCompactList}\small\item\em Alias for which primitives are used in the \hyperlink{namespaceBVH}{B\+VH}. For D\+C\+EL meshes the primitive is a polygon face. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Variables} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}\label{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}} -constexpr int \hyperlink{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}{Dcel\+::primitives\+Per\+Leaf\+Node} = 1 -\begin{DoxyCompactList}\small\item\em This is the lowest number of a primitives that a \hyperlink{namespaceBVH}{B\+VH} node is allowed to enclose. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , class BV $>$ }\\\hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+H\+::\+B\+V\+ConstructorT}$<$ FaceT$<$ T $>$, BV $>$ \hyperlink{namespaceDcel_a628449c42ce3f2784ca018f2a3c88a11}{Dcel\+::default\+B\+V\+Constructor} -\begin{DoxyCompactList}\small\item\em Bounding volume constructor for a D\+C\+EL face. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , class BV , int K$>$ }\\\hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{B\+V\+H\+::\+Stop\+FunctionT}$<$ T, FaceT$<$ T $>$, BV, K $>$ \hyperlink{namespaceDcel_a45e9f2554a8d9ea01164cd51f787f989}{Dcel\+::default\+Stop\+Function} -\begin{DoxyCompactList}\small\item\em Default stop function. This function terminates the division process if a \hyperlink{namespaceBVH}{B\+VH} node has only one primitive. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , int K$>$ }\\\hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT}$<$ FaceT$<$ T $>$, K $>$ \hyperlink{namespaceDcel_ab4f869248e23d47bb01ad06c76288fef}{Dcel\+::spatial\+Split\+Partitioner} -\begin{DoxyCompactList}\small\item\em Default partitioner function for subdividing into K sub-\/volumes. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , int K$>$ }\\\hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT}$<$ FaceT$<$ T $>$, K $>$ \hyperlink{namespaceDcel_a08217ffcd4cfc6f58a3b0b3f780fc611}{Dcel\+::spatial\+Split\+Binary\+Partitioner} -\begin{DoxyCompactList}\small\item\em Binary partitioner based on spatial splits. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -File which contains partitioners and lambdas for enclosing dcel\+\_\+face in bounding volume heirarchies. - -This file contains various useful \char`\"{}default\char`\"{} routines for determining how a D\+C\+EL mesh should be partitioned in a bounding volume hierarchy. This includes the required functions for 1) Constructing bounding volumes (default\+B\+V\+Constructor). 2) Stopping the sub-\/division process (default\+Stop\+Function) 3) Partitioning one bounding volume into subvolumes. These are the functions a) default\+Partition\+Function(...). This partitions the primitives into two half-\/spaces based on where the primitive centroids are located. b) partition\+Minimum\+Overlap(...). This splist the primitive list down the middle (ignoring centroids and element size) and selects the splitting direction where the sub-\/bounding volumes have the smallest overlap. 3) partition\+S\+AH(...). This implements the common \char`\"{}surface area heuristic\char`\"{} rule for constructing bounding volumes. \begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__dep__incl.md5 deleted file mode 100644 index 564a17ba..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d6a10168ccc9005b0a3f40c5779ac4e0 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__dep__incl.pdf deleted file mode 100644 index e6a4cf30..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__incl.md5 deleted file mode 100644 index 1cdef1ae..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1cdcb9b5f51bca3bfc63719e9bc22115 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__incl.pdf deleted file mode 100644 index 7704dc55..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelBVH_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp.tex deleted file mode 100644 index 301800f1..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp.tex +++ /dev/null @@ -1,42 +0,0 @@ -\hypertarget{EBGeometry__DcelEdgeImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.hpp File Reference} -\label{EBGeometry__DcelEdgeImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelEdgeImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelEdgeImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} -\begin{DoxyRefDesc}{Todo} -\item[\hyperlink{todo__todo000002}{Todo}]Include m\+\_\+face in constructors \end{DoxyRefDesc} diff --git a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.md5 deleted file mode 100644 index fb94f77d..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -42ae70f9b8fbcea4afabecf2e57b27e1 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.pdf deleted file mode 100644 index ed7db5f9..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__incl.md5 deleted file mode 100644 index e8a66a68..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f73c093edbf6522c5961899bdfc8f547 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__incl.pdf deleted file mode 100644 index cf86ccfb..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelEdgeImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp.tex deleted file mode 100644 index 7b4adfd2..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp.tex +++ /dev/null @@ -1,54 +0,0 @@ -\hypertarget{EBGeometry__DcelEdge_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Edge.hpp File Reference} -\label{EBGeometry__DcelEdge_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}} - - -Declaration of a half-\/edge class for use in D\+C\+EL descriptions of polygon tesselations. - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelEdge_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelEdge_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which can iterate through edges and vertices around a D\+C\+EL polygon face. \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a half-\/edge class for use in D\+C\+EL descriptions of polygon tesselations. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__dep__incl.md5 deleted file mode 100644 index ef434bb1..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -675c3183f508026b1ac33270e10b6935 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__dep__incl.pdf deleted file mode 100644 index 77e37a5b..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__incl.md5 deleted file mode 100644 index 0f10df29..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6c44ecb9f75958702ff48a171ae9acf9 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__incl.pdf deleted file mode 100644 index e7f57d06..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelEdge_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp.tex deleted file mode 100644 index 9b8bdb6f..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp.tex +++ /dev/null @@ -1,38 +0,0 @@ -\hypertarget{EBGeometry__DcelFaceImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.hpp File Reference} -\label{EBGeometry__DcelFaceImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelFaceImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelFaceImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 29401c08..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -969549b2baac5cf53a939cf889c237b3 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__dep__incl.pdf deleted file mode 100644 index ffd5af19..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__incl.md5 deleted file mode 100644 index 33ca98b0..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -dae834d55e2fbe956f347c904aa99c28 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__incl.pdf deleted file mode 100644 index 7b097bc7..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelFaceImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelFace_8hpp.tex deleted file mode 100644 index b35bd780..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp.tex +++ /dev/null @@ -1,56 +0,0 @@ -\hypertarget{EBGeometry__DcelFace_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Face.hpp File Reference} -\label{EBGeometry__DcelFace_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp}} - - -Declaration of a polygon face class for use in D\+C\+EL descriptions of polygon tesselations. - - -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelFace_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelFace_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which can iterate through edges and vertices around a D\+C\+EL polygon face. \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a polygon face class for use in D\+C\+EL descriptions of polygon tesselations. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__dep__incl.md5 deleted file mode 100644 index 461be9a5..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7eaed8be46b2012bc797f59b6581bd84 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__dep__incl.pdf deleted file mode 100644 index 21586bee..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__incl.md5 deleted file mode 100644 index 2e0591d0..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b6a1d88b56a349bdedef61ba386043f3 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__incl.pdf deleted file mode 100644 index 9cdba403..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelFace_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp.tex deleted file mode 100644 index e1d96837..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp.tex +++ /dev/null @@ -1,40 +0,0 @@ -\hypertarget{EBGeometry__DcelIteratorImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.hpp File Reference} -\label{EBGeometry__DcelIteratorImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelIteratorImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelIteratorImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 34e261ac..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a3f1e36a984201a9e080a6fc15a43a1d \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.pdf deleted file mode 100644 index 7f609b4f..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__incl.md5 deleted file mode 100644 index 2f5da67a..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4947ce512049e6df95210b3be958c146 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__incl.pdf deleted file mode 100644 index 56cf475e..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelIteratorImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp.tex deleted file mode 100644 index aa741740..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp.tex +++ /dev/null @@ -1,49 +0,0 @@ -\hypertarget{EBGeometry__DcelIterator_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Iterator.hpp File Reference} -\label{EBGeometry__DcelIterator_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp}} - - -Declaration of iterators for D\+C\+EL surface Tesselations. - - -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelIterator_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelIterator_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which can iterate through edges and vertices around a D\+C\+EL polygon face. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of iterators for D\+C\+EL surface Tesselations. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__dep__incl.md5 deleted file mode 100644 index 2f08d7b2..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ed3fab6100f57d4110dd3f62a422ff1c \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__dep__incl.pdf deleted file mode 100644 index 6c3480b9..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__incl.md5 deleted file mode 100644 index 8196b442..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -18ddcf95a98bfc43af641dc2c35d8577 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__incl.pdf deleted file mode 100644 index 0cae9f41..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelIterator_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp.tex deleted file mode 100644 index fad8b5c9..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp.tex +++ /dev/null @@ -1,41 +0,0 @@ -\hypertarget{EBGeometry__DcelMeshImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.hpp File Reference} -\label{EBGeometry__DcelMeshImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelMeshImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelMeshImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 59c859b8..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -cc536b11bcd5b670b7f0bc4742a6d29c \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__dep__incl.pdf deleted file mode 100644 index 968f3aef..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__incl.md5 deleted file mode 100644 index 10bbd672..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -df03638ea4090176faccce621045c254 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__incl.pdf deleted file mode 100644 index b52ba64f..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelMeshImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp.tex deleted file mode 100644 index 665104aa..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp.tex +++ /dev/null @@ -1,55 +0,0 @@ -\hypertarget{EBGeometry__DcelMesh_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Mesh.hpp File Reference} -\label{EBGeometry__DcelMesh_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp}} - - -Declaration of a mesh class which stores a D\+C\+EL mesh (with signed distance functions) - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include $<$functional$>$}\newline -{\ttfamily \#include $<$map$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelMesh_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelMesh_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2\+D$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class for embedding a D\+C\+EL polygon face into 2D. \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+Mesh\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Mesh class which stores a full D\+C\+EL mesh (with signed distance functions) \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a mesh class which stores a D\+C\+EL mesh (with signed distance functions) - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__dep__incl.md5 deleted file mode 100644 index caa42605..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -00ab2c2a5ef9e9e076d2f78e316c5176 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__dep__incl.pdf deleted file mode 100644 index 1ad3c38e..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__incl.md5 deleted file mode 100644 index 09ea63dc..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -97fea37f160902130550c9cdc994e4c1 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__incl.pdf deleted file mode 100644 index 631cabf2..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelMesh_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp.tex deleted file mode 100644 index b9fe5dde..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp.tex +++ /dev/null @@ -1,46 +0,0 @@ -\hypertarget{EBGeometry__DcelParserImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.hpp File Reference} -\label{EBGeometry__DcelParserImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp}. - - -{\ttfamily \#include $<$iostream$>$}\newline -{\ttfamily \#include $<$fstream$>$}\newline -{\ttfamily \#include $<$iterator$>$}\newline -{\ttfamily \#include $<$sstream$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelParserImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=259pt]{EBGeometry__DcelParserImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__dep__incl.md5 deleted file mode 100644 index ae8d39e9..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -877a8c49bee38c1c291ca243ec80d5a6 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__dep__incl.pdf deleted file mode 100644 index 051a2ae8..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__incl.md5 deleted file mode 100644 index ead6d92d..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -27131b6445161ed42c50a53daa3c11c1 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__incl.pdf deleted file mode 100644 index b8b1b258..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelParserImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelParser_8hpp.tex deleted file mode 100644 index 3e00c9a2..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp.tex +++ /dev/null @@ -1,51 +0,0 @@ -\hypertarget{EBGeometry__DcelParser_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Parser.hpp File Reference} -\label{EBGeometry__DcelParser_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp}} - - -Declaration of utilities for passing data into D\+C\+EL structures. - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include $<$map$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelParser_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelParser_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+L\+Y$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class for generation a Dcel\+::\+Mesh\+T$<$\+T$>$ from the Stanford \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} file format. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\item - \hyperlink{namespaceDcel_1_1Parser}{Dcel\+::\+Parser} -\begin{DoxyCompactList}\small\item\em Namespace which encapsulates possible file parsers for building D\+C\+EL meshes. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of utilities for passing data into D\+C\+EL structures. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__dep__incl.md5 deleted file mode 100644 index 3fb8e8c9..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6bcf610bea58714e447ead3cac23a71d \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__dep__incl.pdf deleted file mode 100644 index 197eeb4b..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__incl.md5 deleted file mode 100644 index 305618c0..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0b571d75ccae11c61e7856f5f770c040 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__incl.pdf deleted file mode 100644 index 5e10afc8..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelParser_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp.tex deleted file mode 100644 index cd9a8df4..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp.tex +++ /dev/null @@ -1,38 +0,0 @@ -\hypertarget{EBGeometry__DcelPolygon2DImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.hpp File Reference} -\label{EBGeometry__DcelPolygon2DImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp}} - - -Implementation of Dcel\+Polygon.\+hpp. - - -{\ttfamily \#include $<$iostream$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelPolygon2DImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of Dcel\+Polygon.\+hpp. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 2f92f44a..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f588670d661d99d246c9832f331e7383 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.pdf deleted file mode 100644 index be27843e..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__incl.md5 deleted file mode 100644 index 449e5bc3..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ff35fd32d7fd32e1288444f466a95673 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__incl.pdf deleted file mode 100644 index 2d9dd254..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelPolygon2DImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp.tex deleted file mode 100644 index b766812d..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp.tex +++ /dev/null @@ -1,45 +0,0 @@ -\hypertarget{EBGeometry__DcelPolygon2D_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Polygon2D.hpp File Reference} -\label{EBGeometry__DcelPolygon2D_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp}} - - -Declaration of a two-\/dimensional polygon class for embedding 3D polygon faces. - - -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelPolygon2D_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelPolygon2D_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2\+D$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class for embedding a D\+C\+EL polygon face into 2D. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a two-\/dimensional polygon class for embedding 3D polygon faces. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__dep__incl.md5 deleted file mode 100644 index 251235dc..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8f91aba7425ee049802a864707947b44 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__dep__incl.pdf deleted file mode 100644 index 3b896bcd..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__incl.md5 deleted file mode 100644 index f0c149fd..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -033736c751c75daaa7ec39c558dd04f3 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__incl.pdf deleted file mode 100644 index 557491a2..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelPolygon2D_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp.tex deleted file mode 100644 index 7df897a8..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp.tex +++ /dev/null @@ -1,40 +0,0 @@ -\hypertarget{EBGeometry__DcelVertexImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.hpp File Reference} -\label{EBGeometry__DcelVertexImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelVertexImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelVertexImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 44967ec2..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b5a4a4964814ee7a96beead74b2b5850 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__dep__incl.pdf deleted file mode 100644 index 3badbb75..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__incl.md5 deleted file mode 100644 index 22d34856..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d733e7169e6af7cb6b877c2a386c6bb2 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__incl.pdf deleted file mode 100644 index b2d7cf21..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelVertexImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp.tex b/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp.tex deleted file mode 100644 index 3e8bf56b..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp.tex +++ /dev/null @@ -1,55 +0,0 @@ -\hypertarget{EBGeometry__DcelVertex_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Vertex.hpp File Reference} -\label{EBGeometry__DcelVertex_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp}} - - -Declaration of a vertex class for use in D\+C\+EL descriptions of polygon tesselations. - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelVertex_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__DcelVertex_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which can iterate through edges and vertices around a D\+C\+EL polygon face. \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a vertex class for use in D\+C\+EL descriptions of polygon tesselations. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__dep__incl.md5 deleted file mode 100644 index b9221ca6..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -151ec7a1c4ac3d8d7764fb8a9498140b \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__dep__incl.pdf deleted file mode 100644 index 21f0652c..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__incl.md5 deleted file mode 100644 index f3f50b52..00000000 --- a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f88d2d08848d8eb9d52e169929d8d49f \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__incl.pdf deleted file mode 100644 index b2aaaebe..00000000 Binary files a/docs/doxygen/latex/EBGeometry__DcelVertex_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__Dcel_8hpp.tex b/docs/doxygen/latex/EBGeometry__Dcel_8hpp.tex deleted file mode 100644 index 7adf5df2..00000000 --- a/docs/doxygen/latex/EBGeometry__Dcel_8hpp.tex +++ /dev/null @@ -1,36 +0,0 @@ -\hypertarget{EBGeometry__Dcel_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Dcel.hpp File Reference} -\label{EBGeometry__Dcel_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Dcel.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Dcel.\+hpp}} - - -Namespace documentation. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Dcel.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__Dcel_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__Dcel_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel}{Dcel} -\begin{DoxyCompactList}\small\item\em Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Namespace documentation. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__Dcel_8hpp__dep__incl.md5 deleted file mode 100644 index df7b2866..00000000 --- a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -39877f1b9e6f8b3855c605ee3137f3e8 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__Dcel_8hpp__dep__incl.pdf deleted file mode 100644 index c9e518a0..00000000 Binary files a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__Dcel_8hpp__incl.md5 deleted file mode 100644 index ab1fad2d..00000000 --- a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ddb699a6cc7b64f2144653ea9970a49c \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__Dcel_8hpp__incl.pdf deleted file mode 100644 index b1c9b310..00000000 Binary files a/docs/doxygen/latex/EBGeometry__Dcel_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp.tex b/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp.tex deleted file mode 100644 index 2883b4b1..00000000 --- a/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp.tex +++ /dev/null @@ -1,22 +0,0 @@ -\hypertarget{EBGeometry__NamespaceFooter_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Namespace\+Footer.hpp File Reference} -\label{EBGeometry__NamespaceFooter_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp}} - - -Name space footer. - - -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__NamespaceFooter_8hpp__dep__incl} -\end{center} -\end{figure} - - -\subsection{Detailed Description} -Name space footer. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp__dep__incl.md5 deleted file mode 100644 index 85cc69b8..00000000 --- a/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1156af2c1d0595a5841099e8c9c006c2 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp__dep__incl.pdf deleted file mode 100644 index 8cd4b47a..00000000 Binary files a/docs/doxygen/latex/EBGeometry__NamespaceFooter_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp.tex b/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp.tex deleted file mode 100644 index a8a2078a..00000000 --- a/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp.tex +++ /dev/null @@ -1,22 +0,0 @@ -\hypertarget{EBGeometry__NamespaceHeader_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Namespace\+Header.hpp File Reference} -\label{EBGeometry__NamespaceHeader_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp}} - - -Name space header. - - -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__NamespaceHeader_8hpp__dep__incl} -\end{center} -\end{figure} - - -\subsection{Detailed Description} -Name space header. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp__dep__incl.md5 deleted file mode 100644 index 348f6fcd..00000000 --- a/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8f13c72c8489f63d60aa783cca4a7f26 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp__dep__incl.pdf deleted file mode 100644 index f81b223c..00000000 Binary files a/docs/doxygen/latex/EBGeometry__NamespaceHeader_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp.tex deleted file mode 100644 index 554b6283..00000000 --- a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp.tex +++ /dev/null @@ -1,32 +0,0 @@ -\hypertarget{EBGeometry__SignedDistanceFunctionImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.hpp File Reference} -\label{EBGeometry__SignedDistanceFunctionImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__SignedDistanceFunctionImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl} -\end{center} -\end{figure} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.md5 deleted file mode 100644 index a769520b..00000000 --- a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0e029e55a2ea9921092e33778b4e612b \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.pdf deleted file mode 100644 index beb90414..00000000 Binary files a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.md5 deleted file mode 100644 index 61ee3190..00000000 --- a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -dbc9311f9c1cd983487e0f22ae1a2b1f \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.pdf deleted file mode 100644 index 52bb244f..00000000 Binary files a/docs/doxygen/latex/EBGeometry__SignedDistanceFunctionImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp.tex b/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp.tex deleted file mode 100644 index 0ddbfdeb..00000000 --- a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp.tex +++ /dev/null @@ -1,40 +0,0 @@ -\hypertarget{EBGeometry__SignedDistanceFunction_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.hpp File Reference} -\label{EBGeometry__SignedDistanceFunction_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp}} - - -Abstract base class for representing a signed distance function. - - -{\ttfamily \#include $<$memory$>$}\newline -{\ttfamily \#include $<$deque$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__SignedDistanceFunction_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__SignedDistanceFunction_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Abstract representation of a signed distance function. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Abstract base class for representing a signed distance function. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.md5 deleted file mode 100644 index abfdfd51..00000000 --- a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -30ab7cd400874142ca84b93e892c6d53 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.pdf deleted file mode 100644 index 3dabec74..00000000 Binary files a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__incl.md5 deleted file mode 100644 index bc3d0eb7..00000000 --- a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f340bddcd0edd8beffd9dd9c0d2ff256 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__incl.pdf deleted file mode 100644 index 380f9bc2..00000000 Binary files a/docs/doxygen/latex/EBGeometry__SignedDistanceFunction_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp.tex deleted file mode 100644 index 190f9993..00000000 --- a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp.tex +++ /dev/null @@ -1,32 +0,0 @@ -\hypertarget{EBGeometry__TransformOpsImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.hpp File Reference} -\label{EBGeometry__TransformOpsImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__TransformOpsImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__TransformOpsImplem_8hpp__dep__incl} -\end{center} -\end{figure} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 22c7fe61..00000000 --- a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c031451a861d56ec63d1cd4fdab5d745 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__dep__incl.pdf deleted file mode 100644 index b26ef397..00000000 Binary files a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__incl.md5 deleted file mode 100644 index d5ab182e..00000000 --- a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a2dfbc1fd3dcfa3e948534387d438b9c \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__incl.pdf deleted file mode 100644 index fd15daaf..00000000 Binary files a/docs/doxygen/latex/EBGeometry__TransformOpsImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp.tex b/docs/doxygen/latex/EBGeometry__TransformOps_8hpp.tex deleted file mode 100644 index d2168311..00000000 --- a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp.tex +++ /dev/null @@ -1,42 +0,0 @@ -\hypertarget{EBGeometry__TransformOps_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Transform\+Ops.hpp File Reference} -\label{EBGeometry__TransformOps_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}} - - -Declaration of transformation operators for signed distance fields. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__TransformOps_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__TransformOps_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classTransformOp}{Transform\+Op$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Base class for transformation operators. \end{DoxyCompactList}\item -class \hyperlink{classTranslateOp}{Translate\+Op$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Translation operator. Can translate an input point. \end{DoxyCompactList}\item -class \hyperlink{classRotateOp}{Rotate\+Op$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Rotation operator. Can scale an input point. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of transformation operators for signed distance fields. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__dep__incl.md5 deleted file mode 100644 index e6f9b63b..00000000 --- a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fddbde84c13d66ba2787de197522e550 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__dep__incl.pdf deleted file mode 100644 index 9e301563..00000000 Binary files a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__incl.md5 deleted file mode 100644 index 72e8dbf2..00000000 --- a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6b51f6dc6d7657b47902ece665c579c5 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__incl.pdf deleted file mode 100644 index bfb74e6d..00000000 Binary files a/docs/doxygen/latex/EBGeometry__TransformOps_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp.tex deleted file mode 100644 index 8b88a7be..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp.tex +++ /dev/null @@ -1,32 +0,0 @@ -\hypertarget{EBGeometry__UnionBVHImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.hpp File Reference} -\label{EBGeometry__UnionBVHImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__UnionBVHImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=289pt]{EBGeometry__UnionBVHImplem_8hpp__dep__incl} -\end{center} -\end{figure} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 628391f7..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -15b24289b87b5c35b51fdac8be144c06 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__dep__incl.pdf deleted file mode 100644 index 0237c22d..00000000 Binary files a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__incl.md5 deleted file mode 100644 index 27408a26..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8a19441b17e7a450f28b26b8fb39fad7 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__incl.pdf deleted file mode 100644 index 9e08cc62..00000000 Binary files a/docs/doxygen/latex/EBGeometry__UnionBVHImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp.tex b/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp.tex deleted file mode 100644 index 467eee22..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp.tex +++ /dev/null @@ -1,39 +0,0 @@ -\hypertarget{EBGeometry__UnionBVH_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Union\+B\+VH.hpp File Reference} -\label{EBGeometry__UnionBVH_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp}} - - -Declaration of a union operator for creating multi-\/object scenes. - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__UnionBVH_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__UnionBVH_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classUnionBVH}{Union\+B\+V\+H$<$ T, B\+V, K $>$} -\begin{DoxyCompactList}\small\item\em Distance function union using B\+V\+Hs. Computes the signed distance to the closest object of N non-\/overlapping objects. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a union operator for creating multi-\/object scenes. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__dep__incl.md5 deleted file mode 100644 index 7b2a62cb..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9b3ca11360dfcfc10eb96577fcc253cd \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__dep__incl.pdf deleted file mode 100644 index 847a8547..00000000 Binary files a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__incl.md5 deleted file mode 100644 index a7913d90..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3f4a82848de9ed660752d84a3496de35 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__incl.pdf deleted file mode 100644 index b75855e5..00000000 Binary files a/docs/doxygen/latex/EBGeometry__UnionBVH_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp.tex deleted file mode 100644 index 69acef14..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp.tex +++ /dev/null @@ -1,32 +0,0 @@ -\hypertarget{EBGeometry__UnionImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Union\+Implem.hpp File Reference} -\label{EBGeometry__UnionImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp}. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Union.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__UnionImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=268pt]{EBGeometry__UnionImplem_8hpp__dep__incl} -\end{center} -\end{figure} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 595e0293..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5d026cb94036af9272bfea0687abd3a3 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__dep__incl.pdf deleted file mode 100644 index 12456739..00000000 Binary files a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__incl.md5 deleted file mode 100644 index faba067e..00000000 --- a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a06516b18fe81a5ae70876a3d45467f2 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__incl.pdf deleted file mode 100644 index 74a8ba38..00000000 Binary files a/docs/doxygen/latex/EBGeometry__UnionImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__Union_8hpp.tex b/docs/doxygen/latex/EBGeometry__Union_8hpp.tex deleted file mode 100644 index e9110ee1..00000000 --- a/docs/doxygen/latex/EBGeometry__Union_8hpp.tex +++ /dev/null @@ -1,39 +0,0 @@ -\hypertarget{EBGeometry__Union_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Union.hpp File Reference} -\label{EBGeometry__Union_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Union.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Union.\+hpp}} - - -Declaration of a union operator for creating multi-\/object scenes. - - -{\ttfamily \#include $<$vector$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Union.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__Union_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__Union_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classUnion}{Union$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Distance function union. Computes the signed distance to the closest object of N non-\/overlapping objects. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of a union operator for creating multi-\/object scenes. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} diff --git a/docs/doxygen/latex/EBGeometry__Union_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__Union_8hpp__dep__incl.md5 deleted file mode 100644 index 01917a04..00000000 --- a/docs/doxygen/latex/EBGeometry__Union_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -afa9741876bd09f91eba594cc0899816 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__Union_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__Union_8hpp__dep__incl.pdf deleted file mode 100644 index a0ce1c44..00000000 Binary files a/docs/doxygen/latex/EBGeometry__Union_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__Union_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__Union_8hpp__incl.md5 deleted file mode 100644 index 7aaa3e62..00000000 --- a/docs/doxygen/latex/EBGeometry__Union_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c9837aaced9c0a8a43e77c6038997d16 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__Union_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__Union_8hpp__incl.pdf deleted file mode 100644 index f953a622..00000000 Binary files a/docs/doxygen/latex/EBGeometry__Union_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp.tex b/docs/doxygen/latex/EBGeometry__VecImplem_8hpp.tex deleted file mode 100644 index 134b2740..00000000 --- a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp.tex +++ /dev/null @@ -1,178 +0,0 @@ -\hypertarget{EBGeometry__VecImplem_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Vec\+Implem.hpp File Reference} -\label{EBGeometry__VecImplem_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} - - -Implementation of \hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp}. - - -{\ttfamily \#include $<$math.\+h$>$}\newline -{\ttfamily \#include $<$algorithm$>$}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__VecImplem_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__VecImplem_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{EBGeometry__VecImplem_8hpp_a011c551978bb37db35ea3520fb23bd00}{operator$\ast$} (const T \&s, const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator in the form s$\ast$\+Vec2T. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{EBGeometry__VecImplem_8hpp_a519f71e021376fe40b7d2f6e451fba02}{operator/} (const T \&s, const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Division operator in the form s$\ast$\+Vec2T. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__VecImplem_8hpp_a3ed4fdd9b9d6b180e982733b4c7efc8e}{operator$\ast$} (const T \&s, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__VecImplem_8hpp_a317d1a610a2d042d5b41f1fde72d8779}{operator/} (const T \&s, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Division operator. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__VecImplem_8hpp_a291f01622695ab94c0092c3af0a1f3ca}{min} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&v) noexcept -\begin{DoxyCompactList}\small\item\em Minimum fucntion. Returns new vector with component-\/wise minimums. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__VecImplem_8hpp_a71f0bc32c9be501cf01a1b6c715dc0a9}{max} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&v) noexcept -\begin{DoxyCompactList}\small\item\em Minimum fucntion. Returns new vector with component-\/wise minimums. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Implementation of \hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp}. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} - - -\subsection{Function Documentation} -\mbox{\Hypertarget{EBGeometry__VecImplem_8hpp_a71f0bc32c9be501cf01a1b6c715dc0a9}\label{EBGeometry__VecImplem_8hpp_a71f0bc32c9be501cf01a1b6c715dc0a9}} -\index{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}!max@{max}} -\index{max@{max}!E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} -\subsubsection{\texorpdfstring{max()}{max()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ max (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Minimum fucntion. Returns new vector with component-\/wise minimums. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\mbox{\tt in} & {\em v} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = std\+::max(u.\+X\mbox{[}0\mbox{]}, v.\+X\mbox{[}0\mbox{]}) and so on -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__VecImplem_8hpp_a291f01622695ab94c0092c3af0a1f3ca}\label{EBGeometry__VecImplem_8hpp_a291f01622695ab94c0092c3af0a1f3ca}} -\index{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}!min@{min}} -\index{min@{min}!E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} -\subsubsection{\texorpdfstring{min()}{min()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ min (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Minimum fucntion. Returns new vector with component-\/wise minimums. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\mbox{\tt in} & {\em v} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = std\+::min(u.\+X\mbox{[}0\mbox{]}, v.\+X\mbox{[}0\mbox{]}) and so on -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__VecImplem_8hpp_a011c551978bb37db35ea3520fb23bd00}\label{EBGeometry__VecImplem_8hpp_a011c551978bb37db35ea3520fb23bd00}} -\index{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$T$>$ operator$\ast$ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator in the form s$\ast$\+Vec2T. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Multiplication factor \\ -\hline -\mbox{\tt in} & {\em a\+\_\+other} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with components x = s$\ast$a\+\_\+other.x (and same for y) -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__VecImplem_8hpp_a3ed4fdd9b9d6b180e982733b4c7efc8e}\label{EBGeometry__VecImplem_8hpp_a3ed4fdd9b9d6b180e982733b4c7efc8e}} -\index{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ operator$\ast$ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Multiplication scalar \\ -\hline -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = s$\ast$X\mbox{[}0\mbox{]} and so on. -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__VecImplem_8hpp_a519f71e021376fe40b7d2f6e451fba02}\label{EBGeometry__VecImplem_8hpp_a519f71e021376fe40b7d2f6e451fba02}} -\index{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}!operator/@{operator/}} -\index{operator/@{operator/}!E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$T$>$ operator/ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator in the form s$\ast$\+Vec2T. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Division factor \\ -\hline -\mbox{\tt in} & {\em a\+\_\+other} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with components x = (1/s)$\ast$a\+\_\+other.x (and same for y) -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__VecImplem_8hpp_a317d1a610a2d042d5b41f1fde72d8779}\label{EBGeometry__VecImplem_8hpp_a317d1a610a2d042d5b41f1fde72d8779}} -\index{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}!operator/@{operator/}} -\index{operator/@{operator/}!E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp@{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ operator/ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Division scalar \\ -\hline -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = X\mbox{[}0\mbox{]}/s and so on. -\end{DoxyReturn} diff --git a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__dep__incl.md5 deleted file mode 100644 index 50979128..00000000 --- a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6dbdef812065257dae63885346bb03c2 \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__dep__incl.pdf deleted file mode 100644 index be75ca6c..00000000 Binary files a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__incl.md5 deleted file mode 100644 index a2af2341..00000000 --- a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9f0f475feb53411da31a3255b4a5364c \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__incl.pdf deleted file mode 100644 index 4b17e532..00000000 Binary files a/docs/doxygen/latex/EBGeometry__VecImplem_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__Vec_8hpp.tex b/docs/doxygen/latex/EBGeometry__Vec_8hpp.tex deleted file mode 100644 index ad1bf9f2..00000000 --- a/docs/doxygen/latex/EBGeometry__Vec_8hpp.tex +++ /dev/null @@ -1,183 +0,0 @@ -\hypertarget{EBGeometry__Vec_8hpp}{}\section{Source/\+E\+B\+Geometry\+\_\+\+Vec.hpp File Reference} -\label{EBGeometry__Vec_8hpp}\index{Source/\+E\+B\+Geometry\+\_\+\+Vec.\+hpp@{Source/\+E\+B\+Geometry\+\_\+\+Vec.\+hpp}} - - -Declaration of 2D and 3D point/vector classes with templated precision. Used with D\+C\+EL tools. - - -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp\char`\"{}}\newline -{\ttfamily \#include \char`\"{}E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp\char`\"{}}\newline -Include dependency graph for E\+B\+Geometry\+\_\+\+Vec.\+hpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__Vec_8hpp__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{EBGeometry__Vec_8hpp__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classVec2T}{Vec2\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Two-\/dimensional vector class with arithmetic operators. \end{DoxyCompactList}\item -class \hyperlink{classVec3T}{Vec3\+T$<$ T $>$} -\begin{DoxyCompactList}\small\item\em Three-\/dimensional vector class with arithmetic operators. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{EBGeometry__Vec_8hpp_a011c551978bb37db35ea3520fb23bd00}{operator$\ast$} (const T \&s, const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator in the form s$\ast$\+Vec2T. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{EBGeometry__Vec_8hpp_a519f71e021376fe40b7d2f6e451fba02}{operator/} (const T \&s, const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Division operator in the form s$\ast$\+Vec2T. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__Vec_8hpp_affba8fd8ad3fc6110fbba33be5ad6187}{operator$\ast$} (const T \&s, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__Vec_8hpp_aeeeedd62e251ff33f2e37286e391a0f8}{operator/} (const T \&s, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Division operator. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__Vec_8hpp_a291f01622695ab94c0092c3af0a1f3ca}{min} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&v) noexcept -\begin{DoxyCompactList}\small\item\em Minimum fucntion. Returns new vector with component-\/wise minimums. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{EBGeometry__Vec_8hpp_a71f0bc32c9be501cf01a1b6c715dc0a9}{max} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&v) noexcept -\begin{DoxyCompactList}\small\item\em Minimum fucntion. Returns new vector with component-\/wise minimums. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Declaration of 2D and 3D point/vector classes with templated precision. Used with D\+C\+EL tools. - -\begin{DoxyAuthor}{Author} -Robert Marskar -\end{DoxyAuthor} - - -\subsection{Function Documentation} -\mbox{\Hypertarget{EBGeometry__Vec_8hpp_a71f0bc32c9be501cf01a1b6c715dc0a9}\label{EBGeometry__Vec_8hpp_a71f0bc32c9be501cf01a1b6c715dc0a9}} -\index{E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}!max@{max}} -\index{max@{max}!E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}} -\subsubsection{\texorpdfstring{max()}{max()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ max (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Minimum fucntion. Returns new vector with component-\/wise minimums. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\mbox{\tt in} & {\em v} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = std\+::max(u.\+X\mbox{[}0\mbox{]}, v.\+X\mbox{[}0\mbox{]}) and so on -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__Vec_8hpp_a291f01622695ab94c0092c3af0a1f3ca}\label{EBGeometry__Vec_8hpp_a291f01622695ab94c0092c3af0a1f3ca}} -\index{E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}!min@{min}} -\index{min@{min}!E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}} -\subsubsection{\texorpdfstring{min()}{min()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ min (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Minimum fucntion. Returns new vector with component-\/wise minimums. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\mbox{\tt in} & {\em v} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = std\+::min(u.\+X\mbox{[}0\mbox{]}, v.\+X\mbox{[}0\mbox{]}) and so on -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__Vec_8hpp_a011c551978bb37db35ea3520fb23bd00}\label{EBGeometry__Vec_8hpp_a011c551978bb37db35ea3520fb23bd00}} -\index{E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$T$>$ operator$\ast$ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator in the form s$\ast$\+Vec2T. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Multiplication factor \\ -\hline -\mbox{\tt in} & {\em a\+\_\+other} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with components x = s$\ast$a\+\_\+other.x (and same for y) -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__Vec_8hpp_affba8fd8ad3fc6110fbba33be5ad6187}\label{EBGeometry__Vec_8hpp_affba8fd8ad3fc6110fbba33be5ad6187}} -\index{E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ operator$\ast$ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Multiplication scalar \\ -\hline -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = s$\ast$X\mbox{[}0\mbox{]} and so on. -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__Vec_8hpp_a519f71e021376fe40b7d2f6e451fba02}\label{EBGeometry__Vec_8hpp_a519f71e021376fe40b7d2f6e451fba02}} -\index{E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}!operator/@{operator/}} -\index{operator/@{operator/}!E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$T$>$ operator/ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator in the form s$\ast$\+Vec2T. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Division factor \\ -\hline -\mbox{\tt in} & {\em a\+\_\+other} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with components x = (1/s)$\ast$a\+\_\+other.x (and same for y) -\end{DoxyReturn} -\mbox{\Hypertarget{EBGeometry__Vec_8hpp_aeeeedd62e251ff33f2e37286e391a0f8}\label{EBGeometry__Vec_8hpp_aeeeedd62e251ff33f2e37286e391a0f8}} -\index{E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}!operator/@{operator/}} -\index{operator/@{operator/}!E\+B\+Geometry\+\_\+\+Vec.\+hpp@{E\+B\+Geometry\+\_\+\+Vec.\+hpp}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ operator/ (\begin{DoxyParamCaption}\item[{const T \&}]{s, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Division scalar \\ -\hline -\mbox{\tt in} & {\em u} & Vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns new vector with components X\mbox{[}0\mbox{]} = X\mbox{[}0\mbox{]}/s and so on. -\end{DoxyReturn} diff --git a/docs/doxygen/latex/EBGeometry__Vec_8hpp__dep__incl.md5 b/docs/doxygen/latex/EBGeometry__Vec_8hpp__dep__incl.md5 deleted file mode 100644 index c4b09f72..00000000 --- a/docs/doxygen/latex/EBGeometry__Vec_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0c325a9fb708ea525b5ad977930df4aa \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__Vec_8hpp__dep__incl.pdf b/docs/doxygen/latex/EBGeometry__Vec_8hpp__dep__incl.pdf deleted file mode 100644 index 608b641f..00000000 Binary files a/docs/doxygen/latex/EBGeometry__Vec_8hpp__dep__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/EBGeometry__Vec_8hpp__incl.md5 b/docs/doxygen/latex/EBGeometry__Vec_8hpp__incl.md5 deleted file mode 100644 index 66793e3b..00000000 --- a/docs/doxygen/latex/EBGeometry__Vec_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7adbd98b0903fe8693e41ba437369e7c \ No newline at end of file diff --git a/docs/doxygen/latex/EBGeometry__Vec_8hpp__incl.pdf b/docs/doxygen/latex/EBGeometry__Vec_8hpp__incl.pdf deleted file mode 100644 index 2d47f6e5..00000000 Binary files a/docs/doxygen/latex/EBGeometry__Vec_8hpp__incl.pdf and /dev/null differ diff --git a/docs/doxygen/latex/Makefile b/docs/doxygen/latex/Makefile deleted file mode 100644 index 8cc3866f..00000000 --- a/docs/doxygen/latex/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -all: refman.pdf - -pdf: refman.pdf - -refman.pdf: clean refman.tex - pdflatex refman - makeindex refman.idx - pdflatex refman - latex_count=8 ; \ - while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - pdflatex refman ;\ - latex_count=`expr $$latex_count - 1` ;\ - done - makeindex refman.idx - pdflatex refman - - -clean: - rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/docs/doxygen/latex/annotated.tex b/docs/doxygen/latex/annotated.tex deleted file mode 100644 index aa7c2b1f..00000000 --- a/docs/doxygen/latex/annotated.tex +++ /dev/null @@ -1,27 +0,0 @@ -\section{Class List} -Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{\hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$} \\*Axis-\/aligned bounding box as bounding volume }{\pageref{classBoundingVolumes_1_1AABBT}}{} -\item\contentsline{section}{\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$} \\*Class which encloses a set of points using a bounding sphere }{\pageref{classBoundingVolumes_1_1BoundingSphereT}}{} -\item\contentsline{section}{\hyperlink{classBoxSDF}{Box\+S\+D\+F$<$ T $>$} \\*Signed distance field for an axis-\/aligned box }{\pageref{classBoxSDF}}{} -\item\contentsline{section}{\hyperlink{classCylinderSDF}{Cylinder\+S\+D\+F$<$ T $>$} \\*Signed distance field for a cylinder }{\pageref{classCylinderSDF}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$} \\*Class which can iterate through edges and vertices around a D\+C\+EL polygon face }{\pageref{classDcel_1_1EdgeIteratorT}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+Edge\+T$<$ T $>$} \\*Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL) }{\pageref{classDcel_1_1EdgeT}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1FaceT}{Dcel\+::\+Face\+T$<$ T $>$} \\*Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL) }{\pageref{classDcel_1_1FaceT}}{} -\item\contentsline{section}{\hyperlink{classBVH_1_1LinearBVH}{B\+V\+H\+::\+Linear\+B\+V\+H$<$ T, P, B\+V, K $>$} \\*Forward declare linear \hyperlink{namespaceBVH}{B\+VH} class }{\pageref{classBVH_1_1LinearBVH}}{} -\item\contentsline{section}{\hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+Node\+T$<$ T, P, B\+V, K $>$} \\*Forward declare linear node class }{\pageref{classBVH_1_1LinearNodeT}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1MeshT}{Dcel\+::\+Mesh\+T$<$ T $>$} \\*Mesh class which stores a full D\+C\+EL mesh (with signed distance functions) }{\pageref{classDcel_1_1MeshT}}{} -\item\contentsline{section}{\hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+Node\+T$<$ T, P, B\+V, K $>$} \\*Forward declare the \hyperlink{namespaceBVH}{B\+VH} node since it is needed for the polymorphic lambdas }{\pageref{classBVH_1_1NodeT}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+L\+Y$<$ T $>$} \\*Class for generation a Dcel\+::\+Mesh\+T$<$\+T$>$ from the Stanford \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} file format }{\pageref{classDcel_1_1Parser_1_1PLY}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2\+D$<$ T $>$} \\*Class for embedding a D\+C\+EL polygon face into 2D }{\pageref{classDcel_1_1Polygon2D}}{} -\item\contentsline{section}{\hyperlink{classRotateOp}{Rotate\+Op$<$ T $>$} \\*Rotation operator. Can scale an input point }{\pageref{classRotateOp}}{} -\item\contentsline{section}{\hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function$<$ T $>$} \\*Abstract representation of a signed distance function }{\pageref{classSignedDistanceFunction}}{} -\item\contentsline{section}{\hyperlink{classSphereSDF}{Sphere\+S\+D\+F$<$ T $>$} \\*Signed distance field for sphere }{\pageref{classSphereSDF}}{} -\item\contentsline{section}{\hyperlink{classTorusSDF}{Torus\+S\+D\+F$<$ T $>$} \\*Signed distance field for a torus }{\pageref{classTorusSDF}}{} -\item\contentsline{section}{\hyperlink{classTransformOp}{Transform\+Op$<$ T $>$} \\*Base class for transformation operators }{\pageref{classTransformOp}}{} -\item\contentsline{section}{\hyperlink{classTranslateOp}{Translate\+Op$<$ T $>$} \\*Translation operator. Can translate an input point }{\pageref{classTranslateOp}}{} -\item\contentsline{section}{\hyperlink{classUnion}{Union$<$ T $>$} \\*Distance function union. Computes the signed distance to the closest object of N non-\/overlapping objects }{\pageref{classUnion}}{} -\item\contentsline{section}{\hyperlink{classUnionBVH}{Union\+B\+V\+H$<$ T, B\+V, K $>$} \\*Distance function union using B\+V\+Hs. Computes the signed distance to the closest object of N non-\/overlapping objects }{\pageref{classUnionBVH}}{} -\item\contentsline{section}{\hyperlink{classVec2T}{Vec2\+T$<$ T $>$} \\*Two-\/dimensional vector class with arithmetic operators }{\pageref{classVec2T}}{} -\item\contentsline{section}{\hyperlink{classVec3T}{Vec3\+T$<$ T $>$} \\*Three-\/dimensional vector class with arithmetic operators }{\pageref{classVec3T}}{} -\item\contentsline{section}{\hyperlink{classDcel_1_1VertexT}{Dcel\+::\+Vertex\+T$<$ T $>$} \\*Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL) }{\pageref{classDcel_1_1VertexT}}{} -\end{DoxyCompactList} diff --git a/docs/doxygen/latex/classBVH_1_1LinearBVH.tex b/docs/doxygen/latex/classBVH_1_1LinearBVH.tex deleted file mode 100644 index 065c0d75..00000000 --- a/docs/doxygen/latex/classBVH_1_1LinearBVH.tex +++ /dev/null @@ -1,121 +0,0 @@ -\hypertarget{classBVH_1_1LinearBVH}{}\section{B\+VH\+:\+:Linear\+B\+VH$<$ T, P, BV, K $>$ Class Template Reference} -\label{classBVH_1_1LinearBVH}\index{B\+V\+H\+::\+Linear\+B\+V\+H$<$ T, P, B\+V, K $>$@{B\+V\+H\+::\+Linear\+B\+V\+H$<$ T, P, B\+V, K $>$}} - - -Forward declare linear \hyperlink{namespaceBVH}{B\+VH} class. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_a13b0083e8b7ff1a5e170d39d69e6a15a}\label{classBVH_1_1LinearBVH_a13b0083e8b7ff1a5e170d39d69e6a15a}} -using \hyperlink{classBVH_1_1LinearBVH_a13b0083e8b7ff1a5e170d39d69e6a15a}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_ad8c5e4f84138090dbd408a075dc91896}\label{classBVH_1_1LinearBVH_ad8c5e4f84138090dbd408a075dc91896}} -using \hyperlink{classBVH_1_1LinearBVH_ad8c5e4f84138090dbd408a075dc91896}{Linear\+Node} = \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_a94ee5da1670e2ef85eeabf7cf6a2da92}\label{classBVH_1_1LinearBVH_a94ee5da1670e2ef85eeabf7cf6a2da92}} -using \hyperlink{classBVH_1_1LinearBVH_a94ee5da1670e2ef85eeabf7cf6a2da92}{Primitive\+List} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ -\begin{DoxyCompactList}\small\item\em List of primitives. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_af071dcad6741be1314c0b39512d2f142}\label{classBVH_1_1LinearBVH_af071dcad6741be1314c0b39512d2f142}} -\hyperlink{classBVH_1_1LinearBVH_af071dcad6741be1314c0b39512d2f142}{Linear\+B\+VH} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed. Use the full constructor please. \end{DoxyCompactList}\item -\hyperlink{classBVH_1_1LinearBVH_a34fcf759d0b39c9d83aca039cd0b18a8}{Linear\+B\+VH} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \&a\+\_\+linear\+Nodes, const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&a\+\_\+primitives) -\begin{DoxyCompactList}\small\item\em Full constructor. Associates the nodes and primitives. \end{DoxyCompactList}\item -\hyperlink{classBVH_1_1LinearBVH_a413ba6da95c3839b90c4a3441aa5395b}{Linear\+B\+VH} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \&a\+\_\+linear\+Nodes, const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&a\+\_\+primitives) -\begin{DoxyCompactList}\small\item\em Full constructor. Associates the nodes and primitives. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_a39a98014b81061b35604422cfab5c9b7}\label{classBVH_1_1LinearBVH_a39a98014b81061b35604422cfab5c9b7}} -virtual \hyperlink{classBVH_1_1LinearBVH_a39a98014b81061b35604422cfab5c9b7}{$\sim$\+Linear\+B\+VH} () -\begin{DoxyCompactList}\small\item\em Destructor. Does nothing. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1LinearBVH_a8fb0c0cb9e8f5161ed78953237eb3c39}{signed\+Distance} (const \hyperlink{classBVH_1_1LinearBVH_a13b0083e8b7ff1a5e170d39d69e6a15a}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Function which computes the signed distance. This calls the other version. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_ac11af18884c0568f3067ef12c7f53e39}\label{classBVH_1_1LinearBVH_ac11af18884c0568f3067ef12c7f53e39}} -std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \hyperlink{classBVH_1_1LinearBVH_ac11af18884c0568f3067ef12c7f53e39}{m\+\_\+linear\+Nodes} -\begin{DoxyCompactList}\small\item\em List of linearly stored nodes. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearBVH_aa4f627615c40d7230139ec1744384322}\label{classBVH_1_1LinearBVH_aa4f627615c40d7230139ec1744384322}} -std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \hyperlink{classBVH_1_1LinearBVH_aa4f627615c40d7230139ec1744384322}{m\+\_\+primitives} -\begin{DoxyCompactList}\small\item\em Global list of primitives. Note that this is A\+LL primitives, sorted so that \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT} can interface into it. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T, class P, class BV, int K$>$\newline -class B\+V\+H\+::\+Linear\+B\+V\+H$<$ T, P, B\+V, K $>$} - -Forward declare linear \hyperlink{namespaceBVH}{B\+VH} class. - -Linear root node for \hyperlink{namespaceBVH}{B\+VH} hierarchy. - -T is the precision used in the \hyperlink{namespaceBVH}{B\+VH} computations, P is the enclosing primitive and BV is the bounding volume used in the \hyperlink{namespaceBVH}{B\+VH}. K is the tree degree. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classBVH_1_1LinearBVH_a34fcf759d0b39c9d83aca039cd0b18a8}\label{classBVH_1_1LinearBVH_a34fcf759d0b39c9d83aca039cd0b18a8}} -\index{B\+V\+H\+::\+Linear\+B\+VH@{B\+V\+H\+::\+Linear\+B\+VH}!Linear\+B\+VH@{Linear\+B\+VH}} -\index{Linear\+B\+VH@{Linear\+B\+VH}!B\+V\+H\+::\+Linear\+B\+VH@{B\+V\+H\+::\+Linear\+B\+VH}} -\subsubsection{\texorpdfstring{Linear\+B\+V\+H()}{LinearBVH()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -\hyperlink{classBVH_1_1LinearBVH}{B\+V\+H\+::\+Linear\+B\+VH}$<$ T, P, BV, K $>$\+::\hyperlink{classBVH_1_1LinearBVH}{Linear\+B\+VH} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \&}]{a\+\_\+linear\+Nodes, }\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&}]{a\+\_\+primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. Associates the nodes and primitives. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+linear\+Nodes} & Linearized \hyperlink{namespaceBVH}{B\+VH} nodes. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+primitives} & Primitives. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1LinearBVH_a413ba6da95c3839b90c4a3441aa5395b}\label{classBVH_1_1LinearBVH_a413ba6da95c3839b90c4a3441aa5395b}} -\index{B\+V\+H\+::\+Linear\+B\+VH@{B\+V\+H\+::\+Linear\+B\+VH}!Linear\+B\+VH@{Linear\+B\+VH}} -\index{Linear\+B\+VH@{Linear\+B\+VH}!B\+V\+H\+::\+Linear\+B\+VH@{B\+V\+H\+::\+Linear\+B\+VH}} -\subsubsection{\texorpdfstring{Linear\+B\+V\+H()}{LinearBVH()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -\hyperlink{classBVH_1_1LinearBVH}{B\+V\+H\+::\+Linear\+B\+VH}$<$ T, P, BV, K $>$\+::\hyperlink{classBVH_1_1LinearBVH}{Linear\+B\+VH} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \&}]{a\+\_\+linear\+Nodes, }\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&}]{a\+\_\+primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. Associates the nodes and primitives. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+linear\+Nodes} & Linearized \hyperlink{namespaceBVH}{B\+VH} nodes. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+primitives} & Primitives. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classBVH_1_1LinearBVH_a8fb0c0cb9e8f5161ed78953237eb3c39}\label{classBVH_1_1LinearBVH_a8fb0c0cb9e8f5161ed78953237eb3c39}} -\index{B\+V\+H\+::\+Linear\+B\+VH@{B\+V\+H\+::\+Linear\+B\+VH}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!B\+V\+H\+::\+Linear\+B\+VH@{B\+V\+H\+::\+Linear\+B\+VH}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1LinearBVH}{B\+V\+H\+::\+Linear\+B\+VH}$<$ T, P, BV, K $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1LinearBVH_a13b0083e8b7ff1a5e170d39d69e6a15a}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Function which computes the signed distance. This calls the other version. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point in space \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}\item -Source/\hyperlink{EBGeometry__BVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classBVH_1_1LinearNodeT.tex b/docs/doxygen/latex/classBVH_1_1LinearNodeT.tex deleted file mode 100644 index 6596736e..00000000 --- a/docs/doxygen/latex/classBVH_1_1LinearNodeT.tex +++ /dev/null @@ -1,228 +0,0 @@ -\hypertarget{classBVH_1_1LinearNodeT}{}\section{B\+VH\+:\+:Linear\+NodeT$<$ T, P, BV, K $>$ Class Template Reference} -\label{classBVH_1_1LinearNodeT}\index{B\+V\+H\+::\+Linear\+Node\+T$<$ T, P, B\+V, K $>$@{B\+V\+H\+::\+Linear\+Node\+T$<$ T, P, B\+V, K $>$}} - - -Forward declare linear node class. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}\label{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}} -using \hyperlink{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_ae7dbdb102840eb271dadea2f25aa6f8b}\label{classBVH_1_1LinearNodeT_ae7dbdb102840eb271dadea2f25aa6f8b}} -\hyperlink{classBVH_1_1LinearNodeT_ae7dbdb102840eb271dadea2f25aa6f8b}{Linear\+NodeT} () -\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a4b5dd392397794113ad3b5bb2ed5003a}\label{classBVH_1_1LinearNodeT_a4b5dd392397794113ad3b5bb2ed5003a}} -virtual \hyperlink{classBVH_1_1LinearNodeT_a4b5dd392397794113ad3b5bb2ed5003a}{$\sim$\+Linear\+NodeT} () -\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1LinearNodeT_a03e3dd1c74bf9e66ed692130b49c2e0f}{set\+Bounding\+Volume} (const BV \&a\+\_\+bounding\+Volume) noexcept -\begin{DoxyCompactList}\small\item\em Set the bounding volume. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_ace68df1290bd44623c694e6b7ebdec6e}\label{classBVH_1_1LinearNodeT_ace68df1290bd44623c694e6b7ebdec6e}} -void \hyperlink{classBVH_1_1LinearNodeT_ace68df1290bd44623c694e6b7ebdec6e}{set\+Primitives\+Offset} (const unsigned long a\+\_\+primitives\+Offset) noexcept -\begin{DoxyCompactList}\small\item\em Set the offset into the primitives array. \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1LinearNodeT_a1a91e5f540da1b1bb85224db94cd53d8}{set\+Num\+Primitives} (const int a\+\_\+num\+Primitives) noexcept -\begin{DoxyCompactList}\small\item\em Set number of primitives. \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1LinearNodeT_a3a972ef5ea9abc6e2ead9f453e233e2f}{set\+Child\+Offset} (const unsigned long a\+\_\+child\+Offset, const int a\+\_\+which\+Child) noexcept -\begin{DoxyCompactList}\small\item\em Set the child offsets. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a152b12723c86f8fcb7522562cd97cd67}\label{classBVH_1_1LinearNodeT_a152b12723c86f8fcb7522562cd97cd67}} -const BV \& \hyperlink{classBVH_1_1LinearNodeT_a152b12723c86f8fcb7522562cd97cd67}{get\+Bounding\+Volume} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the node bounding volume. return m\+\_\+bounding\+Volume. \end{DoxyCompactList}\item -const unsigned long \& \hyperlink{classBVH_1_1LinearNodeT_a8cfca65bd808adc8eb2793e7d7aabcd3}{get\+Primitives\+Offset} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the primitives offset. \end{DoxyCompactList}\item -const unsigned long \& \hyperlink{classBVH_1_1LinearNodeT_a245e67b6824cadf1733c3c9176259106}{get\+Num\+Primitives} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the number of primitives. \end{DoxyCompactList}\item -const std\+::array$<$ unsigned long, K $>$ \& \hyperlink{classBVH_1_1LinearNodeT_af08feacbaa148425a896c196b0b6d1da}{get\+Child\+Offsets} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the child offsets. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_aba361834e3d013725a92ec4b45633584}\label{classBVH_1_1LinearNodeT_aba361834e3d013725a92ec4b45633584}} -bool \hyperlink{classBVH_1_1LinearNodeT_aba361834e3d013725a92ec4b45633584}{is\+Leaf} () const noexcept -\begin{DoxyCompactList}\small\item\em Is leaf or not. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1LinearNodeT_a2bf5b1c514a20754d527b17e1c664630}{get\+Distance\+To\+Bounding\+Volume} (const \hyperlink{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Get the distance from a 3D point to the bounding volume. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1LinearNodeT_a1a0a50ba8c1c0601f12ae02857246b1f}{get\+Distance\+To\+Primitives} (const \hyperlink{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}{Vec3} \&a\+\_\+point, const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&a\+\_\+primitives) const noexcept -\begin{DoxyCompactList}\small\item\em Compute signed distance to primitives. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_acef96b811ea69cd649fda35da082b361}\label{classBVH_1_1LinearNodeT_acef96b811ea69cd649fda35da082b361}} -BV \hyperlink{classBVH_1_1LinearNodeT_acef96b811ea69cd649fda35da082b361}{m\+\_\+bounding\+Volume} -\begin{DoxyCompactList}\small\item\em Bounding volume. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a05efc0076443c7131187adfadaad81ea}\label{classBVH_1_1LinearNodeT_a05efc0076443c7131187adfadaad81ea}} -unsigned long \hyperlink{classBVH_1_1LinearNodeT_a05efc0076443c7131187adfadaad81ea}{m\+\_\+primitives\+Offset} -\begin{DoxyCompactList}\small\item\em Offset into primitives array. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a59a4aff1eeac58606f4854e334e10a17}\label{classBVH_1_1LinearNodeT_a59a4aff1eeac58606f4854e334e10a17}} -int \hyperlink{classBVH_1_1LinearNodeT_a59a4aff1eeac58606f4854e334e10a17}{m\+\_\+num\+Primitives} -\begin{DoxyCompactList}\small\item\em Number of primitives. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a2a160d04d0bea69de7eb949fd9d56dda}\label{classBVH_1_1LinearNodeT_a2a160d04d0bea69de7eb949fd9d56dda}} -std\+::array$<$ unsigned long, K $>$ \hyperlink{classBVH_1_1LinearNodeT_a2a160d04d0bea69de7eb949fd9d56dda}{m\+\_\+child\+Offsets} -\begin{DoxyCompactList}\small\item\em Offset to child nodes. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T, class P, class BV, int K$>$\newline -class B\+V\+H\+::\+Linear\+Node\+T$<$ T, P, B\+V, K $>$} - -Forward declare linear node class. - -Node type for linearized (flattened) \hyperlink{namespaceBVH}{B\+VH}. This will be constructed from the other (conventional) \hyperlink{namespaceBVH}{B\+VH} type. - -T is the precision used in the \hyperlink{namespaceBVH}{B\+VH} computations, P is the enclosing primitive and BV is the bounding volume used in the \hyperlink{namespaceBVH}{B\+VH}. K is the tree degree. - -T is the precision for Vec3, P is the primitive type you want to enclose, BV is the bounding volume you use for it. - -\begin{DoxyNote}{Note} -P M\+U\+ST supply function signed\+Distance(...) BV must supply a function get\+Distance (had this been C++20, we would have use concepts to enforce this). Note that Linear\+Node is the result of a flattened \hyperlink{namespaceBVH}{B\+VH} hierarchy where nodes are stored with depth-\/first ordering for improved cache-\/location in the downward traversal. - -This class exists so that we can fit the nodes with a smaller memory footprint. The standard \hyperlink{namespaceBVH}{B\+VH} node (\hyperlink{classBVH_1_1NodeT}{NodeT}) is very useful when building the tree but less useful when traversing it since it stores references to the primitives in the node itself. It will span multiple cache lines. This node exists so that we can fit all the \hyperlink{namespaceBVH}{B\+VH} info onto fewer cache lines. The number of cache lines will depend on the tree degree, precision, and bounding volume that is chosen. -\end{DoxyNote} -\begin{DoxyRefDesc}{Todo} -\item[\hyperlink{todo__todo000001}{Todo}]There\textquotesingle{}s a minor optimization that can be made to the memory alignment, which is as follows\+: For a leaf node we never really need the m\+\_\+child\+Offsets array, and for a regular node we never really need the m\+\_\+primitives\+Offset member. Moreover, m\+\_\+child\+Offsets could be made into a K-\/1 sized array because we happen to know that the linearized hierarchy will store the first child node immediately after the regular node. We could shave off 16 bytes of storage, which would mean that a double-\/precision binary tree only takes up one word of C\+PU memory. \end{DoxyRefDesc} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_af08feacbaa148425a896c196b0b6d1da}\label{classBVH_1_1LinearNodeT_af08feacbaa148425a896c196b0b6d1da}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!get\+Child\+Offsets@{get\+Child\+Offsets}} -\index{get\+Child\+Offsets@{get\+Child\+Offsets}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{get\+Child\+Offsets()}{getChildOffsets()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -const std\+::array$<$ unsigned long, K $>$ \& \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::get\+Child\+Offsets (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the child offsets. - -\begin{DoxyReturn}{Returns} -Returns m\+\_\+child\+Offsets -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a2bf5b1c514a20754d527b17e1c664630}\label{classBVH_1_1LinearNodeT_a2bf5b1c514a20754d527b17e1c664630}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!get\+Distance\+To\+Bounding\+Volume@{get\+Distance\+To\+Bounding\+Volume}} -\index{get\+Distance\+To\+Bounding\+Volume@{get\+Distance\+To\+Bounding\+Volume}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{get\+Distance\+To\+Bounding\+Volume()}{getDistanceToBoundingVolume()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::get\+Distance\+To\+Bounding\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the distance from a 3D point to the bounding volume. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns distance to bounding volume. A zero distance implies that the input point is inside the bounding volume. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a1a0a50ba8c1c0601f12ae02857246b1f}\label{classBVH_1_1LinearNodeT_a1a0a50ba8c1c0601f12ae02857246b1f}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!get\+Distance\+To\+Primitives@{get\+Distance\+To\+Primitives}} -\index{get\+Distance\+To\+Primitives@{get\+Distance\+To\+Primitives}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{get\+Distance\+To\+Primitives()}{getDistanceToPrimitives()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::get\+Distance\+To\+Primitives (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1LinearNodeT_a073e87d51d44b4cc243c8f90690247a6}{Vec3} \&}]{a\+\_\+point, }\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&}]{a\+\_\+primitives }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute signed distance to primitives. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & Point \\ -\hline -\mbox{\tt in} & {\em a\+\_\+primitives} & List of primitives \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -Only call if this is a leaf node. -\end{DoxyNote} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a245e67b6824cadf1733c3c9176259106}\label{classBVH_1_1LinearNodeT_a245e67b6824cadf1733c3c9176259106}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!get\+Num\+Primitives@{get\+Num\+Primitives}} -\index{get\+Num\+Primitives@{get\+Num\+Primitives}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{get\+Num\+Primitives()}{getNumPrimitives()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -const unsigned long \& \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::get\+Num\+Primitives (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the number of primitives. - -\begin{DoxyReturn}{Returns} -Returns m\+\_\+num\+Primitives -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a8cfca65bd808adc8eb2793e7d7aabcd3}\label{classBVH_1_1LinearNodeT_a8cfca65bd808adc8eb2793e7d7aabcd3}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!get\+Primitives\+Offset@{get\+Primitives\+Offset}} -\index{get\+Primitives\+Offset@{get\+Primitives\+Offset}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{get\+Primitives\+Offset()}{getPrimitivesOffset()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -const unsigned long \& \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::get\+Primitives\+Offset (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the primitives offset. - -\begin{DoxyReturn}{Returns} -Returns m\+\_\+primitives\+Offset -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a03e3dd1c74bf9e66ed692130b49c2e0f}\label{classBVH_1_1LinearNodeT_a03e3dd1c74bf9e66ed692130b49c2e0f}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!set\+Bounding\+Volume@{set\+Bounding\+Volume}} -\index{set\+Bounding\+Volume@{set\+Bounding\+Volume}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{set\+Bounding\+Volume()}{setBoundingVolume()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::set\+Bounding\+Volume (\begin{DoxyParamCaption}\item[{const BV \&}]{a\+\_\+bounding\+Volume }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the bounding volume. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+bounding\+Volume} & Bounding volume for this node. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a3a972ef5ea9abc6e2ead9f453e233e2f}\label{classBVH_1_1LinearNodeT_a3a972ef5ea9abc6e2ead9f453e233e2f}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!set\+Child\+Offset@{set\+Child\+Offset}} -\index{set\+Child\+Offset@{set\+Child\+Offset}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{set\+Child\+Offset()}{setChildOffset()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::set\+Child\+Offset (\begin{DoxyParamCaption}\item[{const unsigned long}]{a\+\_\+child\+Offset, }\item[{const int}]{a\+\_\+which\+Child }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the child offsets. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+child\+Offset} & Offset in node array. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+which\+Child} & Child index in m\+\_\+children\+Offsets. Must be \mbox{[}0,K-\/1\mbox{]} \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1LinearNodeT_a1a91e5f540da1b1bb85224db94cd53d8}\label{classBVH_1_1LinearNodeT_a1a91e5f540da1b1bb85224db94cd53d8}} -\index{B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}!set\+Num\+Primitives@{set\+Num\+Primitives}} -\index{set\+Num\+Primitives@{set\+Num\+Primitives}!B\+V\+H\+::\+Linear\+NodeT@{B\+V\+H\+::\+Linear\+NodeT}} -\subsubsection{\texorpdfstring{set\+Num\+Primitives()}{setNumPrimitives()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1LinearNodeT}{B\+V\+H\+::\+Linear\+NodeT}$<$ T, P, BV, K $>$\+::set\+Num\+Primitives (\begin{DoxyParamCaption}\item[{const int}]{a\+\_\+num\+Primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set number of primitives. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+num\+Primitives} & Number of primitives. \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}\item -Source/\hyperlink{EBGeometry__BVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classBVH_1_1NodeT.tex b/docs/doxygen/latex/classBVH_1_1NodeT.tex deleted file mode 100644 index 95a70f99..00000000 --- a/docs/doxygen/latex/classBVH_1_1NodeT.tex +++ /dev/null @@ -1,431 +0,0 @@ -\hypertarget{classBVH_1_1NodeT}{}\section{B\+VH\+:\+:NodeT$<$ T, P, BV, K $>$ Class Template Reference} -\label{classBVH_1_1NodeT}\index{B\+V\+H\+::\+Node\+T$<$ T, P, B\+V, K $>$@{B\+V\+H\+::\+Node\+T$<$ T, P, B\+V, K $>$}} - - -Forward declare the \hyperlink{namespaceBVH}{B\+VH} node since it is needed for the polymorphic lambdas. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}\label{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}} -using \hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List} = \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$ P $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. This is a std\+::vector$<$std\+::shared\+\_\+ptr$<$const P$>$ $>$. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}\label{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}} -using \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_ac52d9b56f082002c7f8be91062c40ff8}\label{classBVH_1_1NodeT_ac52d9b56f082002c7f8be91062c40ff8}} -using \hyperlink{classBVH_1_1NodeT_ac52d9b56f082002c7f8be91062c40ff8}{Node} = \hyperlink{classBVH_1_1NodeT}{NodeT}$<$ T, P, BV, K $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a008f5c2c53adb1f5730d8478b48529b1}\label{classBVH_1_1NodeT_a008f5c2c53adb1f5730d8478b48529b1}} -using \hyperlink{classBVH_1_1NodeT_a008f5c2c53adb1f5730d8478b48529b1}{Node\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1NodeT_ac52d9b56f082002c7f8be91062c40ff8}{Node} $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_acbe56195affc439febe8aca84db308e3}\label{classBVH_1_1NodeT_acbe56195affc439febe8aca84db308e3}} -using \hyperlink{classBVH_1_1NodeT_acbe56195affc439febe8aca84db308e3}{Stop\+Function} = \hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{Stop\+FunctionT}$<$ T, P, BV, K $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a3bb028655b8b961fa35109af1c14f281}\label{classBVH_1_1NodeT_a3bb028655b8b961fa35109af1c14f281}} -using \hyperlink{classBVH_1_1NodeT_a3bb028655b8b961fa35109af1c14f281}{Partitioner} = \hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{PartitionerT}$<$ P, K $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a2340f2466ed5b6eebab4bdc72004858e}\label{classBVH_1_1NodeT_a2340f2466ed5b6eebab4bdc72004858e}} -using \hyperlink{classBVH_1_1NodeT_a2340f2466ed5b6eebab4bdc72004858e}{B\+V\+Constructor} = \hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+ConstructorT}$<$ P, BV $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a960d0972bec81cf782b36e57f87da1f1}\label{classBVH_1_1NodeT_a960d0972bec81cf782b36e57f87da1f1}} -\hyperlink{classBVH_1_1NodeT_a960d0972bec81cf782b36e57f87da1f1}{NodeT} () -\begin{DoxyCompactList}\small\item\em Default constructor which sets a regular node. \end{DoxyCompactList}\item -\hyperlink{classBVH_1_1NodeT_a6da86ccc8e4a0c556cd67ca59af983dc}{NodeT} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ P $>$ $>$ \&a\+\_\+primitives) -\begin{DoxyCompactList}\small\item\em Construct node from a set of primitives. \end{DoxyCompactList}\item -\hyperlink{classBVH_1_1NodeT_a6312ce04f70c2e1a860ce380298909b6}{NodeT} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&a\+\_\+primitives) -\begin{DoxyCompactList}\small\item\em Construct node from a set of primitives. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a5bc328f2381b6babe37496758ea4b583}\label{classBVH_1_1NodeT_a5bc328f2381b6babe37496758ea4b583}} -virtual \hyperlink{classBVH_1_1NodeT_a5bc328f2381b6babe37496758ea4b583}{$\sim$\+NodeT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1NodeT_acae5a575fa8b236de984fdd41e04c038}{top\+Down\+Sort\+And\+Partition\+Primitives} (const \hyperlink{classBVH_1_1NodeT_a2340f2466ed5b6eebab4bdc72004858e}{B\+V\+Constructor} \&a\+\_\+bv\+Constructor, const \hyperlink{classBVH_1_1NodeT_a3bb028655b8b961fa35109af1c14f281}{Partitioner} \&a\+\_\+partitioner, const \hyperlink{classBVH_1_1NodeT_acbe56195affc439febe8aca84db308e3}{Stop\+Function} \&a\+\_\+stop\+Crit) noexcept -\begin{DoxyCompactList}\small\item\em Function for using top-\/down construction of the bounding volume hierarchy. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a5c57552524601da9bf20e722e2433aa0}\label{classBVH_1_1NodeT_a5c57552524601da9bf20e722e2433aa0}} -bool \hyperlink{classBVH_1_1NodeT_a5c57552524601da9bf20e722e2433aa0}{is\+Leaf} () const noexcept -\begin{DoxyCompactList}\small\item\em Get node type. \end{DoxyCompactList}\item -const \hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List} \& \hyperlink{classBVH_1_1NodeT_a2e0c1e030162a2dc049acb4debd4d9f2}{get\+Primitives} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the primitives stored in this node. \end{DoxyCompactList}\item -const BV \& \hyperlink{classBVH_1_1NodeT_a02cba4dcb065ebfaeea7e4d251b89d04}{get\+Bounding\+Volume} () const noexcept -\begin{DoxyCompactList}\small\item\em Get bounding volume. \end{DoxyCompactList}\item -const std\+::array$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1NodeT}{NodeT}$<$ T, P, BV, K $>$ $>$, K $>$ \& \hyperlink{classBVH_1_1NodeT_ac8df9e7b154186207263b8727e1084a8}{get\+Children} () const noexcept -\begin{DoxyCompactList}\small\item\em Return this node\textquotesingle{}s children. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1NodeT_a0fe074fbff56ac2d0a6ad113ed34d56b}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Function which computes the signed distance. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1NodeT_a1f9067b43b1a6962854f4a2b43325858}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point, const \hyperlink{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}{Prune} a\+\_\+pruning) const noexcept -\begin{DoxyCompactList}\small\item\em Function which computes the signed distance. This version allows the user to manually select a traversal algorithm. \end{DoxyCompactList}\item -std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1LinearBVH}{Linear\+B\+VH}$<$ T, P, BV, K $>$ $>$ \hyperlink{classBVH_1_1NodeT_acb801f1e446a6472f5d330e85318bdb3}{flatten\+Tree} () const noexcept -\begin{DoxyCompactList}\small\item\em Flatten everything beneath this node into a depth-\/first sorted \hyperlink{namespaceBVH}{B\+VH} hierarchy. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -void \hyperlink{classBVH_1_1NodeT_a83c128d1045ccc23000a8b26f75b3172}{insert\+Children} (const std\+::array$<$ \hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List}, K $>$ \&a\+\_\+primitives) noexcept -\begin{DoxyCompactList}\small\item\em Insert nodes with primitives. \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1NodeT_a2c9c3d3a83b3c1895c8f89b2bbd62e81}{set\+Primitives} (const \hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List} \&a\+\_\+primitives) noexcept -\begin{DoxyCompactList}\small\item\em Set primitives in this node. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1NodeT_a8da9f78078b0a579868d026bd61a2947}{get\+Distance\+To\+Bounding\+Volume} (const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Get the distance from a 3D point to the bounding volume. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1NodeT_a61dc7040d57f0a69984548eb4804244b}{get\+Distance\+To\+Primitives} (const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the shortest distance to the primitives in this node. \end{DoxyCompactList}\item -\hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List} \& \hyperlink{classBVH_1_1NodeT_adce9d9c6bd4ab3d613bef232353774f3}{get\+Primitives} () noexcept -\begin{DoxyCompactList}\small\item\em Get the list of primitives in this node. \end{DoxyCompactList}\item -T \hyperlink{classBVH_1_1NodeT_a6bd0a4dd5843f010dd579d59a289b4d8}{prune\+Stack} (const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Iterative ordered pruning along the \hyperlink{namespaceBVH}{B\+VH} tree. \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1NodeT_ac4a3be457d66d2673f717f203e60fc08}{prune\+Ordered} (T \&a\+\_\+closest, const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Recursively ordered pruning along the \hyperlink{namespaceBVH}{B\+VH} tree. \end{DoxyCompactList}\item -void \hyperlink{classBVH_1_1NodeT_ad252aa451ca983750dfa0c24344253b2}{prune\+Unordered} (T \&a\+\_\+closest, const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Recursive unordered pruning along the \hyperlink{namespaceBVH}{B\+VH} tree. \end{DoxyCompactList}\item -unsigned long \hyperlink{classBVH_1_1NodeT_aa01d6673b9e48735594b01bdcbefc63f}{flatten\+Tree} (std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \&a\+\_\+linear\+Nodes, std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&a\+\_\+sorted\+Primitives, unsigned long \&a\+\_\+offset) const noexcept -\begin{DoxyCompactList}\small\item\em Flatten tree method. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a7f8720f2ab03ee9e81de114c479cb2e5}\label{classBVH_1_1NodeT_a7f8720f2ab03ee9e81de114c479cb2e5}} -BV \hyperlink{classBVH_1_1NodeT_a7f8720f2ab03ee9e81de114c479cb2e5}{m\+\_\+bounding\+Volume} -\begin{DoxyCompactList}\small\item\em Bounding volume object. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_a3c45be2075d8cdfd0dc0a9e73373b64d}\label{classBVH_1_1NodeT_a3c45be2075d8cdfd0dc0a9e73373b64d}} -std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \hyperlink{classBVH_1_1NodeT_a3c45be2075d8cdfd0dc0a9e73373b64d}{m\+\_\+primitives} -\begin{DoxyCompactList}\small\item\em Primitives list. This will be empty for regular nodes. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBVH_1_1NodeT_afaf556d6faa78c2cc2b27c82feb0145c}\label{classBVH_1_1NodeT_afaf556d6faa78c2cc2b27c82feb0145c}} -std\+::array$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1NodeT}{NodeT}$<$ T, P, BV, K $>$ $>$, K $>$ \hyperlink{classBVH_1_1NodeT_afaf556d6faa78c2cc2b27c82feb0145c}{m\+\_\+children} -\begin{DoxyCompactList}\small\item\em Children nodes. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T, class P, class BV, int K$>$\newline -class B\+V\+H\+::\+Node\+T$<$ T, P, B\+V, K $>$} - -Forward declare the \hyperlink{namespaceBVH}{B\+VH} node since it is needed for the polymorphic lambdas. - -Class which encapsulates a node in a bounding volume hierarchy. - -T is the precision used in the \hyperlink{namespaceBVH}{B\+VH} computations, P is the enclosing primitive and BV is the bounding volume used in the \hyperlink{namespaceBVH}{B\+VH}. K is the tree degree. - -T is the precision, P is the primitive type you want to enclose, BV is the bounding volume type used at the nodes. The parameter K (which must be $>$ 1) is the tree degree. K=2 is a binary tree, K=3 is a tertiary tree and so on. \begin{DoxyNote}{Note} -Template constraints are as following\+: -\end{DoxyNote} -P M\+U\+ST supply function signed\+Distance(...) . BV M\+U\+ST supply a function get\+Distance - -Had this been C++20, we would have use concepts to enforce this. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classBVH_1_1NodeT_a6da86ccc8e4a0c556cd67ca59af983dc}\label{classBVH_1_1NodeT_a6da86ccc8e4a0c556cd67ca59af983dc}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!NodeT@{NodeT}} -\index{NodeT@{NodeT}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{Node\+T()}{NodeT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -\hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::\hyperlink{classBVH_1_1NodeT}{NodeT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ P $>$ $>$ \&}]{a\+\_\+primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Construct node from a set of primitives. - -This node becomes a leaf node which contains the input primitives. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & Input primitives. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1NodeT_a6312ce04f70c2e1a860ce380298909b6}\label{classBVH_1_1NodeT_a6312ce04f70c2e1a860ce380298909b6}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!NodeT@{NodeT}} -\index{NodeT@{NodeT}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{Node\+T()}{NodeT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -\hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::\hyperlink{classBVH_1_1NodeT}{NodeT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&}]{a\+\_\+primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Construct node from a set of primitives. - -This node becomes a leaf node which contains the input primitives. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & Input primitives. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classBVH_1_1NodeT_acb801f1e446a6472f5d330e85318bdb3}\label{classBVH_1_1NodeT_acb801f1e446a6472f5d330e85318bdb3}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!flatten\+Tree@{flatten\+Tree}} -\index{flatten\+Tree@{flatten\+Tree}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{flatten\+Tree()}{flattenTree()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1LinearBVH}{Linear\+B\+VH}$<$ T, P, BV, K $>$ $>$ \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::flatten\+Tree (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Flatten everything beneath this node into a depth-\/first sorted \hyperlink{namespaceBVH}{B\+VH} hierarchy. - -This will compute the flattening of the standard \hyperlink{namespaceBVH}{B\+VH} tree and return a pointer to the linear corresponding to the current node. \mbox{\Hypertarget{classBVH_1_1NodeT_aa01d6673b9e48735594b01bdcbefc63f}\label{classBVH_1_1NodeT_aa01d6673b9e48735594b01bdcbefc63f}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!flatten\+Tree@{flatten\+Tree}} -\index{flatten\+Tree@{flatten\+Tree}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{flatten\+Tree()}{flattenTree()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -unsigned long \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::flatten\+Tree (\begin{DoxyParamCaption}\item[{std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT}$<$ T, P, BV, K $>$ $>$ $>$ \&}]{a\+\_\+linear\+Nodes, }\item[{std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ \&}]{a\+\_\+sorted\+Primitives, }\item[{unsigned long \&}]{a\+\_\+offset }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Flatten tree method. - -This function will flatten everything beneath the current node and linearize all the nodes and primitives beneath it to a\+\_\+linear\+Nodes and a\+\_\+sorted\+Primitives. This function is called recursively. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in,out} & {\em a\+\_\+linear\+Nodes} & \hyperlink{namespaceBVH}{B\+VH} nodes, linearized onto a vector. \\ -\hline -\mbox{\tt in,out} & {\em a\+\_\+sorted\+Primitives} & Sorted primitives (in leaf node order). \\ -\hline -\mbox{\tt in,out} & {\em a\+\_\+offset} & Supporting integer for figuring out where in the tree we are. \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -When called from the root node, a\+\_\+linear\+Nodes and a\+\_\+sorted\+Primitives should be empty and a\+\_\+offset=0\+UL. -\end{DoxyNote} -\mbox{\Hypertarget{classBVH_1_1NodeT_a02cba4dcb065ebfaeea7e4d251b89d04}\label{classBVH_1_1NodeT_a02cba4dcb065ebfaeea7e4d251b89d04}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!get\+Bounding\+Volume@{get\+Bounding\+Volume}} -\index{get\+Bounding\+Volume@{get\+Bounding\+Volume}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{get\+Bounding\+Volume()}{getBoundingVolume()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -const BV \& \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::get\+Bounding\+Volume (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get bounding volume. - -\begin{DoxyReturn}{Returns} -m\+\_\+bv -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_ac8df9e7b154186207263b8727e1084a8}\label{classBVH_1_1NodeT_ac8df9e7b154186207263b8727e1084a8}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!get\+Children@{get\+Children}} -\index{get\+Children@{get\+Children}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{get\+Children()}{getChildren()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -const std\+::array$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classBVH_1_1NodeT}{NodeT}$<$ T, P, BV, K $>$ $>$, K $>$ \& \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::get\+Children (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return this node\textquotesingle{}s children. - -\begin{DoxyReturn}{Returns} -m\+\_\+children. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_a8da9f78078b0a579868d026bd61a2947}\label{classBVH_1_1NodeT_a8da9f78078b0a579868d026bd61a2947}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!get\+Distance\+To\+Bounding\+Volume@{get\+Distance\+To\+Bounding\+Volume}} -\index{get\+Distance\+To\+Bounding\+Volume@{get\+Distance\+To\+Bounding\+Volume}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{get\+Distance\+To\+Bounding\+Volume()}{getDistanceToBoundingVolume()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::get\+Distance\+To\+Bounding\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Get the distance from a 3D point to the bounding volume. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns distance to bounding volume. A zero distance implies that the input point is inside the bounding volume. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_a61dc7040d57f0a69984548eb4804244b}\label{classBVH_1_1NodeT_a61dc7040d57f0a69984548eb4804244b}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!get\+Distance\+To\+Primitives@{get\+Distance\+To\+Primitives}} -\index{get\+Distance\+To\+Primitives@{get\+Distance\+To\+Primitives}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{get\+Distance\+To\+Primitives()}{getDistanceToPrimitives()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::get\+Distance\+To\+Primitives (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Compute the shortest distance to the primitives in this node. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the signed distance to the primitives. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_a2e0c1e030162a2dc049acb4debd4d9f2}\label{classBVH_1_1NodeT_a2e0c1e030162a2dc049acb4debd4d9f2}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!get\+Primitives@{get\+Primitives}} -\index{get\+Primitives@{get\+Primitives}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{get\+Primitives()}{getPrimitives()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -const \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$ P $>$ \& \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::get\+Primitives (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the primitives stored in this node. - -\begin{DoxyReturn}{Returns} -m\+\_\+primitives. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_adce9d9c6bd4ab3d613bef232353774f3}\label{classBVH_1_1NodeT_adce9d9c6bd4ab3d613bef232353774f3}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!get\+Primitives@{get\+Primitives}} -\index{get\+Primitives@{get\+Primitives}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{get\+Primitives()}{getPrimitives()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -\hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$ P $>$ \& \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::get\+Primitives (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Get the list of primitives in this node. - -\begin{DoxyReturn}{Returns} -Primitives list -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_a83c128d1045ccc23000a8b26f75b3172}\label{classBVH_1_1NodeT_a83c128d1045ccc23000a8b26f75b3172}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!insert\+Children@{insert\+Children}} -\index{insert\+Children@{insert\+Children}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{insert\+Children()}{insertChildren()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::insert\+Children (\begin{DoxyParamCaption}\item[{const std\+::array$<$ \hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List}, K $>$ \&}]{a\+\_\+primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Insert nodes with primitives. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & Primitives for children. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1NodeT_ac4a3be457d66d2673f717f203e60fc08}\label{classBVH_1_1NodeT_ac4a3be457d66d2673f717f203e60fc08}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!prune\+Ordered@{prune\+Ordered}} -\index{prune\+Ordered@{prune\+Ordered}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{prune\+Ordered()}{pruneOrdered()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::prune\+Ordered (\begin{DoxyParamCaption}\item[{T \&}]{a\+\_\+closest, }\item[{const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Recursively ordered pruning along the \hyperlink{namespaceBVH}{B\+VH} tree. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in,out} & {\em a\+\_\+closest} & Shortest distance to primitives so far. \\ -\hline -\mbox{\tt in,out} & {\em a\+\_\+point} & Input 3D point \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1NodeT_a6bd0a4dd5843f010dd579d59a289b4d8}\label{classBVH_1_1NodeT_a6bd0a4dd5843f010dd579d59a289b4d8}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!prune\+Stack@{prune\+Stack}} -\index{prune\+Stack@{prune\+Stack}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{prune\+Stack()}{pruneStack()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::prune\+Stack (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Iterative ordered pruning along the \hyperlink{namespaceBVH}{B\+VH} tree. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in,out} & {\em a\+\_\+point} & Input 3D point \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1NodeT_ad252aa451ca983750dfa0c24344253b2}\label{classBVH_1_1NodeT_ad252aa451ca983750dfa0c24344253b2}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!prune\+Unordered@{prune\+Unordered}} -\index{prune\+Unordered@{prune\+Unordered}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{prune\+Unordered()}{pruneUnordered()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::prune\+Unordered (\begin{DoxyParamCaption}\item[{T \&}]{a\+\_\+closest, }\item[{const \hyperlink{classBVH_1_1NodeT_a6fbb4308c5c55ee170c5f992df7ae1d0}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Recursive unordered pruning along the \hyperlink{namespaceBVH}{B\+VH} tree. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in,out} & {\em a\+\_\+closest} & Shortest distance to primitives so far. \\ -\hline -\mbox{\tt in,out} & {\em a\+\_\+point} & Input 3D point \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1NodeT_a2c9c3d3a83b3c1895c8f89b2bbd62e81}\label{classBVH_1_1NodeT_a2c9c3d3a83b3c1895c8f89b2bbd62e81}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!set\+Primitives@{set\+Primitives}} -\index{set\+Primitives@{set\+Primitives}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{set\+Primitives()}{setPrimitives()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::set\+Primitives (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1NodeT_a19cce6e7fbe85eccb4a3718dd69f49b7}{Primitive\+List} \&}]{a\+\_\+primitives }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Set primitives in this node. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & Primitives \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBVH_1_1NodeT_a0fe074fbff56ac2d0a6ad113ed34d56b}\label{classBVH_1_1NodeT_a0fe074fbff56ac2d0a6ad113ed34d56b}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Function which computes the signed distance. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point in space \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Signed distance to the input point. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_a1f9067b43b1a6962854f4a2b43325858}\label{classBVH_1_1NodeT_a1f9067b43b1a6962854f4a2b43325858}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -T \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point, }\item[{const \hyperlink{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}{Prune}}]{a\+\_\+pruning }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Function which computes the signed distance. This version allows the user to manually select a traversal algorithm. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point in space \\ -\hline -\mbox{\tt in} & {\em a\+\_\+pruning} & Pruning algorithm \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Signed distance to the input point. -\end{DoxyReturn} -\mbox{\Hypertarget{classBVH_1_1NodeT_acae5a575fa8b236de984fdd41e04c038}\label{classBVH_1_1NodeT_acae5a575fa8b236de984fdd41e04c038}} -\index{B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}!top\+Down\+Sort\+And\+Partition\+Primitives@{top\+Down\+Sort\+And\+Partition\+Primitives}} -\index{top\+Down\+Sort\+And\+Partition\+Primitives@{top\+Down\+Sort\+And\+Partition\+Primitives}!B\+V\+H\+::\+NodeT@{B\+V\+H\+::\+NodeT}} -\subsubsection{\texorpdfstring{top\+Down\+Sort\+And\+Partition\+Primitives()}{topDownSortAndPartitionPrimitives()}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -void \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$ T, P, BV, K $>$\+::top\+Down\+Sort\+And\+Partition\+Primitives (\begin{DoxyParamCaption}\item[{const \hyperlink{classBVH_1_1NodeT_a2340f2466ed5b6eebab4bdc72004858e}{B\+V\+Constructor} \&}]{a\+\_\+bv\+Constructor, }\item[{const \hyperlink{classBVH_1_1NodeT_a3bb028655b8b961fa35109af1c14f281}{Partitioner} \&}]{a\+\_\+partitioner, }\item[{const \hyperlink{classBVH_1_1NodeT_acbe56195affc439febe8aca84db308e3}{Stop\+Function} \&}]{a\+\_\+stop\+Crit }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Function for using top-\/down construction of the bounding volume hierarchy. - -The rules for terminating the hierarchy construction, how to partition sets of primitives, and how to enclose them by bounding volumes are given in the input arguments (a\+\_\+stop\+Func, a\+\_\+part\+Func, a\+\_\+bv\+Func) -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+bv\+Constructor} & Polymorphic function which builds a bounding volume from a set of primitives. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+partitioner} & Partitioning function. This is a polymorphic function which divides a set of primitives into two lists. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+stop\+Crit} & Termination function which tells us when to stop the recursion. \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}\item -Source/\hyperlink{EBGeometry__BVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classBoundingVolumes_1_1AABBT.tex b/docs/doxygen/latex/classBoundingVolumes_1_1AABBT.tex deleted file mode 100644 index d237c829..00000000 --- a/docs/doxygen/latex/classBoundingVolumes_1_1AABBT.tex +++ /dev/null @@ -1,239 +0,0 @@ -\hypertarget{classBoundingVolumes_1_1AABBT}{}\section{Bounding\+Volumes\+:\+:A\+A\+B\+BT$<$ T $>$ Class Template Reference} -\label{classBoundingVolumes_1_1AABBT}\index{Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$@{Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$}} - - -Axis-\/aligned bounding box as bounding volume. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}\label{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}} -using \hyperlink{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias which cuts down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a180558daace1d1fb990f9e197eaec02d}\label{classBoundingVolumes_1_1AABBT_a180558daace1d1fb990f9e197eaec02d}} -\hyperlink{classBoundingVolumes_1_1AABBT_a180558daace1d1fb990f9e197eaec02d}{A\+A\+B\+BT} () -\begin{DoxyCompactList}\small\item\em Default constructor (does nothing) \end{DoxyCompactList}\item -\hyperlink{classBoundingVolumes_1_1AABBT_a28d34a1b4467d329bd50e3561b1e705a}{A\+A\+B\+BT} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+lo, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+hi) -\begin{DoxyCompactList}\small\item\em Full constructor taking the low/high corners of the bounding box. \end{DoxyCompactList}\item -\hyperlink{classBoundingVolumes_1_1AABBT_af69dd29c29d40b1f550118cde9479f15}{A\+A\+B\+BT} (const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} \&a\+\_\+other) -\begin{DoxyCompactList}\small\item\em Copy constructor of another bounding box. \end{DoxyCompactList}\item -\hyperlink{classBoundingVolumes_1_1AABBT_a08ddef449ffd740163b584c8ccd6f395}{A\+A\+B\+BT} (const std\+::vector$<$ \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ $>$ \&a\+\_\+others) -\begin{DoxyCompactList}\small\item\em Constructor which creates an A\+A\+BB which encloses a set of other A\+A\+B\+Bs. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_af0a2f67ce6f85f947849d199e6dee1aa}\label{classBoundingVolumes_1_1AABBT_af0a2f67ce6f85f947849d199e6dee1aa}} -virtual \hyperlink{classBoundingVolumes_1_1AABBT_af0a2f67ce6f85f947849d199e6dee1aa}{$\sim$\+A\+A\+B\+BT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\\hyperlink{classBoundingVolumes_1_1AABBT_ab58be0cf4a32b502fdd1aedb7ba11587}{A\+A\+B\+BT} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) -\begin{DoxyCompactList}\small\item\em Template constructor (since mixed precision allowed) which creates an A\+A\+BB that encloses a set of 3D points. \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\void \hyperlink{classBoundingVolumes_1_1AABBT_a5ff57720a5d6511642ce39a09a7b7663}{define} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) noexcept -\begin{DoxyCompactList}\small\item\em Define function (since mixed precision allowed) which sets this A\+A\+BB such that it encloses a set of 3D points. \end{DoxyCompactList}\item -bool \hyperlink{classBoundingVolumes_1_1AABBT_a87d160a3e05082e34e37d8b4472bad7d}{intersects} (const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Check if this A\+A\+BB intersects another A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a6368509e66a2b5691272f273fe96f670}\label{classBoundingVolumes_1_1AABBT_a6368509e66a2b5691272f273fe96f670}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoundingVolumes_1_1AABBT_a6368509e66a2b5691272f273fe96f670}{get\+Low\+Corner} () noexcept -\begin{DoxyCompactList}\small\item\em Get the modifiable lower-\/left corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a937cfc6cbbbd457f872370c1c4d5e81e}\label{classBoundingVolumes_1_1AABBT_a937cfc6cbbbd457f872370c1c4d5e81e}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoundingVolumes_1_1AABBT_a937cfc6cbbbd457f872370c1c4d5e81e}{get\+Low\+Corner} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the immutable lower-\/left corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a2ecaeccecdb8882051516409e5749ef9}\label{classBoundingVolumes_1_1AABBT_a2ecaeccecdb8882051516409e5749ef9}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoundingVolumes_1_1AABBT_a2ecaeccecdb8882051516409e5749ef9}{get\+High\+Corner} () noexcept -\begin{DoxyCompactList}\small\item\em Get the modifiable upper-\/right corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_aef8dcd08ea8726cdcd3d361d33c4d554}\label{classBoundingVolumes_1_1AABBT_aef8dcd08ea8726cdcd3d361d33c4d554}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoundingVolumes_1_1AABBT_aef8dcd08ea8726cdcd3d361d33c4d554}{get\+High\+Corner} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the immutable upper-\/right corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a7c98cb4cec1eb672755c9c469ca44990}\label{classBoundingVolumes_1_1AABBT_a7c98cb4cec1eb672755c9c469ca44990}} -\hyperlink{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}{Vec3} \hyperlink{classBoundingVolumes_1_1AABBT_a7c98cb4cec1eb672755c9c469ca44990}{get\+Centroid} () const noexcept -\begin{DoxyCompactList}\small\item\em Get bounding volume centroid. \end{DoxyCompactList}\item -T \hyperlink{classBoundingVolumes_1_1AABBT_ae65563ac6f3851f8fb05e0c98613fc0d}{get\+Overlapping\+Volume} (const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between this A\+A\+BB and another A\+A\+BB. \end{DoxyCompactList}\item -T \hyperlink{classBoundingVolumes_1_1AABBT_ad883975a0926c0755a978283137f378f}{get\+Distance} (const \hyperlink{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the distance to this A\+A\+BB (points inside the bounding box have a zero distance) \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_ac5b8f2caa8afe1177f3d2924fbc3f7a5}\label{classBoundingVolumes_1_1AABBT_ac5b8f2caa8afe1177f3d2924fbc3f7a5}} -T \hyperlink{classBoundingVolumes_1_1AABBT_ac5b8f2caa8afe1177f3d2924fbc3f7a5}{get\+Volume} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute the bounding box volume. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_ae2f3ba3dde664cccd7c46b0ef4f087d6}\label{classBoundingVolumes_1_1AABBT_ae2f3ba3dde664cccd7c46b0ef4f087d6}} -T \hyperlink{classBoundingVolumes_1_1AABBT_ae2f3ba3dde664cccd7c46b0ef4f087d6}{get\+Area} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute the bounding box area. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a5cbd0ee374c62951aa58644bc09f70cf}\label{classBoundingVolumes_1_1AABBT_a5cbd0ee374c62951aa58644bc09f70cf}} -\hyperlink{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}{Vec3} \hyperlink{classBoundingVolumes_1_1AABBT_a5cbd0ee374c62951aa58644bc09f70cf}{m\+\_\+lo\+Corner} -\begin{DoxyCompactList}\small\item\em Lower-\/left corner of bounding box. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a35f9498191e406b3f48f7454bfdf0cf7}\label{classBoundingVolumes_1_1AABBT_a35f9498191e406b3f48f7454bfdf0cf7}} -\hyperlink{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}{Vec3} \hyperlink{classBoundingVolumes_1_1AABBT_a35f9498191e406b3f48f7454bfdf0cf7}{m\+\_\+hi\+Corner} -\begin{DoxyCompactList}\small\item\em Upper-\/right corner of bounding box. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$} - -Axis-\/aligned bounding box as bounding volume. - -This class represents a Cartesian box that encloses a set of 3D points. \begin{DoxyNote}{Note} -The template parameter T is the precision. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a28d34a1b4467d329bd50e3561b1e705a}\label{classBoundingVolumes_1_1AABBT_a28d34a1b4467d329bd50e3561b1e705a}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+lo, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+hi }\end{DoxyParamCaption})} - - - -Full constructor taking the low/high corners of the bounding box. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+lo} & Low corner \\ -\hline -\mbox{\tt in} & {\em a\+\_\+hi} & High \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_af69dd29c29d40b1f550118cde9479f15}\label{classBoundingVolumes_1_1AABBT_af69dd29c29d40b1f550118cde9479f15}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})} - - - -Copy constructor of another bounding box. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other bounding box \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a08ddef449ffd740163b584c8ccd6f395}\label{classBoundingVolumes_1_1AABBT_a08ddef449ffd740163b584c8ccd6f395}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ $>$ \&}]{a\+\_\+others }\end{DoxyParamCaption})} - - - -Constructor which creates an A\+A\+BB which encloses a set of other A\+A\+B\+Bs. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+others} & Other bounding boxes \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_ab58be0cf4a32b502fdd1aedb7ba11587}\label{classBoundingVolumes_1_1AABBT_ab58be0cf4a32b502fdd1aedb7ba11587}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -template$<$class P $>$ \\ -\hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points }\end{DoxyParamCaption})} - - - -Template constructor (since mixed precision allowed) which creates an A\+A\+BB that encloses a set of 3D points. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -Calls the define function -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a5ff57720a5d6511642ce39a09a7b7663}\label{classBoundingVolumes_1_1AABBT_a5ff57720a5d6511642ce39a09a7b7663}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!define@{define}} -\index{define@{define}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -template$<$class P $>$ \\ -void \hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Define function (since mixed precision allowed) which sets this A\+A\+BB such that it encloses a set of 3D points. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_ad883975a0926c0755a978283137f378f}\label{classBoundingVolumes_1_1AABBT_ad883975a0926c0755a978283137f378f}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!get\+Distance@{get\+Distance}} -\index{get\+Distance@{get\+Distance}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{get\+Distance()}{getDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::get\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1AABBT_aa968c6b21a7f02e1cbfc03d26c7e67b4}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the distance to this A\+A\+BB (points inside the bounding box have a zero distance) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the distance to the bounding box (a point inside has a zero distance) -\end{DoxyReturn} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_ae65563ac6f3851f8fb05e0c98613fc0d}\label{classBoundingVolumes_1_1AABBT_ae65563ac6f3851f8fb05e0c98613fc0d}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!get\+Overlapping\+Volume@{get\+Overlapping\+Volume}} -\index{get\+Overlapping\+Volume@{get\+Overlapping\+Volume}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{get\+Overlapping\+Volume()}{getOverlappingVolume()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::get\+Overlapping\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the overlapping volume between this A\+A\+BB and another A\+A\+BB. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & The other A\+A\+BB \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns overlapping volume -\end{DoxyReturn} -\mbox{\Hypertarget{classBoundingVolumes_1_1AABBT_a87d160a3e05082e34e37d8b4472bad7d}\label{classBoundingVolumes_1_1AABBT_a87d160a3e05082e34e37d8b4472bad7d}} -\index{Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}!intersects@{intersects}} -\index{intersects@{intersects}!Bounding\+Volumes\+::\+A\+A\+B\+BT@{Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{intersects()}{intersects()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classBoundingVolumes_1_1AABBT}{Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::intersects (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if this A\+A\+BB intersects another A\+A\+BB. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & The other A\+A\+BB \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -True if they intersect and false otherwise. -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}\item -Source/\hyperlink{EBGeometry__BoundingVolumesImplem_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classBoundingVolumes_1_1BoundingSphereT.tex b/docs/doxygen/latex/classBoundingVolumes_1_1BoundingSphereT.tex deleted file mode 100644 index 6861324f..00000000 --- a/docs/doxygen/latex/classBoundingVolumes_1_1BoundingSphereT.tex +++ /dev/null @@ -1,273 +0,0 @@ -\hypertarget{classBoundingVolumes_1_1BoundingSphereT}{}\section{Bounding\+Volumes\+:\+:Bounding\+SphereT$<$ T $>$ Class Template Reference} -\label{classBoundingVolumes_1_1BoundingSphereT}\index{Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$@{Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$}} - - -Class which encloses a set of points using a bounding sphere. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}\label{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}} -enum \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}{Bounding\+Volume\+Algorithm} \{ {\bfseries Ritter} - \}\begin{DoxyCompactList}\small\item\em Typename for possible algorithms that support the computation of a bounding sphere for a set of 3D points. \end{DoxyCompactList} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}\label{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}} -using \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a5616a743d8b53b11533ef47b3da281aa}\label{classBoundingVolumes_1_1BoundingSphereT_a5616a743d8b53b11533ef47b3da281aa}} -\hyperlink{classBoundingVolumes_1_1BoundingSphereT_a5616a743d8b53b11533ef47b3da281aa}{Bounding\+SphereT} () -\begin{DoxyCompactList}\small\item\em Default constructor. Leaves object in undefined state. \end{DoxyCompactList}\item -\hyperlink{classBoundingVolumes_1_1BoundingSphereT_a9e81ed0ce76489225f5dbd57ed1abc8f}{Bounding\+SphereT} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center, const T \&a\+\_\+radius) -\begin{DoxyCompactList}\small\item\em Full constructor. Sets the center and radius of the bounding sphere. \end{DoxyCompactList}\item -\hyperlink{classBoundingVolumes_1_1BoundingSphereT_af9cd8b7e77ed36178073be298efd27f0}{Bounding\+SphereT} (const std\+::vector$<$ \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ $>$ \&a\+\_\+other\+Spheres) -\begin{DoxyCompactList}\small\item\em Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres. \end{DoxyCompactList}\item -\hyperlink{classBoundingVolumes_1_1BoundingSphereT_afd5a1632d9ceef8a4fa3af59e562c7f8}{Bounding\+SphereT} (const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} \&a\+\_\+other) -\begin{DoxyCompactList}\small\item\em Copy constructor. Sets the center and radius from the other sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a4495da5774e14f97c0e7579b37cfd60e}\label{classBoundingVolumes_1_1BoundingSphereT_a4495da5774e14f97c0e7579b37cfd60e}} -virtual \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a4495da5774e14f97c0e7579b37cfd60e}{$\sim$\+Bounding\+SphereT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing). \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\\hyperlink{classBoundingVolumes_1_1BoundingSphereT_a88655edd39b6276b9bb58eb9bd6af82d}{Bounding\+SphereT} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points, const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}{Bounding\+Volume\+Algorithm} \&a\+\_\+alg=Bounding\+Volume\+Algorithm\+::\+Ritter) -\begin{DoxyCompactList}\small\item\em Template constructor which takes a set of 3D points (mixed precision allowed). \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\void \hyperlink{classBoundingVolumes_1_1BoundingSphereT_aac21650a7d3f65081483512064cbcfa8}{define} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points, const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}{Bounding\+Volume\+Algorithm} \&a\+\_\+alg) noexcept -\begin{DoxyCompactList}\small\item\em Template define function which takes a set of 3D points (mixed precision allowed). \end{DoxyCompactList}\item -bool \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a90baad0c400aac7645a7e8c1ab13096a}{intersects} (const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Check if this bounding sphere intersect another bounding sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a8c4f10492e97aa460b1207f384e1c081}\label{classBoundingVolumes_1_1BoundingSphereT_a8c4f10492e97aa460b1207f384e1c081}} -T \& \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a8c4f10492e97aa460b1207f384e1c081}{get\+Radius} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable radius for this sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_affac2a4ac0cefaada01c5532eb13f26a}\label{classBoundingVolumes_1_1BoundingSphereT_affac2a4ac0cefaada01c5532eb13f26a}} -const T \& \hyperlink{classBoundingVolumes_1_1BoundingSphereT_affac2a4ac0cefaada01c5532eb13f26a}{get\+Radius} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable radius for this sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_ac3adb87ea4da98d70375e5806e8dfdc5}\label{classBoundingVolumes_1_1BoundingSphereT_ac3adb87ea4da98d70375e5806e8dfdc5}} -\hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}{Vec3} \& \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ac3adb87ea4da98d70375e5806e8dfdc5}{get\+Centroid} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable center for this sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a62e38a048c7aacd79aec8dcc251e3a65}\label{classBoundingVolumes_1_1BoundingSphereT_a62e38a048c7aacd79aec8dcc251e3a65}} -const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}{Vec3} \& \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a62e38a048c7aacd79aec8dcc251e3a65}{get\+Centroid} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable center for this sphere. \end{DoxyCompactList}\item -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a4581b87c7a3ccd3b58168bfdae9436cb}{get\+Overlapping\+Volume} (const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between this bounding sphere and another. \end{DoxyCompactList}\item -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a06ec858b7349e6a926ad476990c774cb}{get\+Distance} (const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the distance to this bounding sphere (points inside the sphere have a zero distance) \end{DoxyCompactList}\item -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a44e0069495c19069fced07aab8e614c6}{get\+Volume} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the sphere volume. \end{DoxyCompactList}\item -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT_a303fd50d1b8d27c7014c50ba0867a0b3}{get\+Area} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the sphere area. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_abea0326be2d1843f3ad7c6de1ebe2418}\label{classBoundingVolumes_1_1BoundingSphereT_abea0326be2d1843f3ad7c6de1ebe2418}} -{\footnotesize template$<$class P $>$ }\\void \hyperlink{classBoundingVolumes_1_1BoundingSphereT_abea0326be2d1843f3ad7c6de1ebe2418}{build\+Ritter} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) noexcept -\begin{DoxyCompactList}\small\item\em Template function which computes the bounding sphere for a set of points (mixed precision allowed) using Ritter\textquotesingle{}s algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_adb424c867ed93cf5fdb62afe07a96a05}\label{classBoundingVolumes_1_1BoundingSphereT_adb424c867ed93cf5fdb62afe07a96a05}} -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT_adb424c867ed93cf5fdb62afe07a96a05}{m\+\_\+radius} -\begin{DoxyCompactList}\small\item\em Sphere radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_ad65d5be68c4028651d959dc8b88fe944}\label{classBoundingVolumes_1_1BoundingSphereT_ad65d5be68c4028651d959dc8b88fe944}} -\hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}{Vec3} \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad65d5be68c4028651d959dc8b88fe944}{m\+\_\+center} -\begin{DoxyCompactList}\small\item\em Sphere center. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$} - -Class which encloses a set of points using a bounding sphere. - -The template parameter T is the floating-\/point precision which is used. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a9e81ed0ce76489225f5dbd57ed1abc8f}\label{classBoundingVolumes_1_1BoundingSphereT_a9e81ed0ce76489225f5dbd57ed1abc8f}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+center, }\item[{const T \&}]{a\+\_\+radius }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. Sets the center and radius of the bounding sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+center} & Bounding sphere center \\ -\hline -\mbox{\tt in} & {\em a\+\_\+radius} & Bounding sphere radius \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_af9cd8b7e77ed36178073be298efd27f0}\label{classBoundingVolumes_1_1BoundingSphereT_af9cd8b7e77ed36178073be298efd27f0}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ $>$ \&}]{a\+\_\+other\+Spheres }\end{DoxyParamCaption})} - - - -Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other\+Spheres} & Other bounding spheres. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_afd5a1632d9ceef8a4fa3af59e562c7f8}\label{classBoundingVolumes_1_1BoundingSphereT_afd5a1632d9ceef8a4fa3af59e562c7f8}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})} - - - -Copy constructor. Sets the center and radius from the other sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other sphere \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a88655edd39b6276b9bb58eb9bd6af82d}\label{classBoundingVolumes_1_1BoundingSphereT_a88655edd39b6276b9bb58eb9bd6af82d}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -template$<$class P $>$ \\ -\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points, }\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}{Bounding\+Volume\+Algorithm} \&}]{a\+\_\+alg = {\ttfamily BoundingVolumeAlgorithm\+:\+:Ritter} }\end{DoxyParamCaption})} - - - -Template constructor which takes a set of 3D points (mixed precision allowed). - -This computes the bounding sphere using the supplied algorithm. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\mbox{\tt in} & {\em a\+\_\+alg} & Bounding sphere algorithm. \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This calls the define(...) function. -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_aac21650a7d3f65081483512064cbcfa8}\label{classBoundingVolumes_1_1BoundingSphereT_aac21650a7d3f65081483512064cbcfa8}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!define@{define}} -\index{define@{define}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -template$<$class P $>$ \\ -void \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points, }\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ae98cd00c8e45c93a0fc4fbabec63b007}{Bounding\+Volume\+Algorithm} \&}]{a\+\_\+alg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Template define function which takes a set of 3D points (mixed precision allowed). - -This computes the bounding sphere using the supplied algorithm. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\mbox{\tt in} & {\em a\+\_\+alg} & Bounding sphere algorithm. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a303fd50d1b8d27c7014c50ba0867a0b3}\label{classBoundingVolumes_1_1BoundingSphereT_a303fd50d1b8d27c7014c50ba0867a0b3}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Area@{get\+Area}} -\index{get\+Area@{get\+Area}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Area()}{getArea()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::get\+Area (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the sphere area. - -\begin{DoxyReturn}{Returns} -Sphere area. -\end{DoxyReturn} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a06ec858b7349e6a926ad476990c774cb}\label{classBoundingVolumes_1_1BoundingSphereT_a06ec858b7349e6a926ad476990c774cb}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Distance@{get\+Distance}} -\index{get\+Distance@{get\+Distance}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Distance()}{getDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::get\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT_ad89ed315255abcde216e9ca1de3068ab}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the distance to this bounding sphere (points inside the sphere have a zero distance) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the distance to the sphere (a point inside has a zero distance) -\end{DoxyReturn} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a4581b87c7a3ccd3b58168bfdae9436cb}\label{classBoundingVolumes_1_1BoundingSphereT_a4581b87c7a3ccd3b58168bfdae9436cb}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Overlapping\+Volume@{get\+Overlapping\+Volume}} -\index{get\+Overlapping\+Volume@{get\+Overlapping\+Volume}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Overlapping\+Volume()}{getOverlappingVolume()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::get\+Overlapping\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the overlapping volume between this bounding sphere and another. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other bounding sphere \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -The overlapping volume, computing using standard expressions. -\end{DoxyReturn} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a44e0069495c19069fced07aab8e614c6}\label{classBoundingVolumes_1_1BoundingSphereT_a44e0069495c19069fced07aab8e614c6}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Volume@{get\+Volume}} -\index{get\+Volume@{get\+Volume}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Volume()}{getVolume()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::get\+Volume (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the sphere volume. - -\begin{DoxyReturn}{Returns} -Sphere volume -\end{DoxyReturn} -\mbox{\Hypertarget{classBoundingVolumes_1_1BoundingSphereT_a90baad0c400aac7645a7e8c1ab13096a}\label{classBoundingVolumes_1_1BoundingSphereT_a90baad0c400aac7645a7e8c1ab13096a}} -\index{Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}!intersects@{intersects}} -\index{intersects@{intersects}!Bounding\+Volumes\+::\+Bounding\+SphereT@{Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{intersects()}{intersects()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::intersects (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if this bounding sphere intersect another bounding sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other bounding sphere. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -True if the two sphere intersect. -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}\item -Source/\hyperlink{EBGeometry__BoundingVolumesImplem_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classBoxSDF.tex b/docs/doxygen/latex/classBoxSDF.tex deleted file mode 100644 index 33643b8a..00000000 --- a/docs/doxygen/latex/classBoxSDF.tex +++ /dev/null @@ -1,176 +0,0 @@ -\hypertarget{classBoxSDF}{}\section{Box\+S\+DF$<$ T $>$ Class Template Reference} -\label{classBoxSDF}\index{Box\+S\+D\+F$<$ T $>$@{Box\+S\+D\+F$<$ T $>$}} - - -Signed distance field for an axis-\/aligned box. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp$>$} - - - -Inheritance diagram for Box\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classBoxSDF__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Box\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classBoxSDF__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoxSDF_a59b774b2a6fc27001e1a40662f49c5cb}\label{classBoxSDF_a59b774b2a6fc27001e1a40662f49c5cb}} -\hyperlink{classBoxSDF_a59b774b2a6fc27001e1a40662f49c5cb}{Box\+S\+DF} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed default constructor. \end{DoxyCompactList}\item -\hyperlink{classBoxSDF_a8cac002be3de6c478a6d68e6e88607d8}{Box\+S\+DF} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+lo\+Corner, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+hi\+Corner, const bool a\+\_\+flip\+Inside) -\begin{DoxyCompactList}\small\item\em Full constructor. Sets the low and high corner. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoxSDF_aae169f61825b3235cbb44d299c36e268}\label{classBoxSDF_aae169f61825b3235cbb44d299c36e268}} -virtual \hyperlink{classBoxSDF_aae169f61825b3235cbb44d299c36e268}{$\sim$\+Box\+S\+DF} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing). \end{DoxyCompactList}\item -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoxSDF_a564b5f203d6bec78be94da4b9119748a}{get\+Low\+Corner} () const noexcept -\begin{DoxyCompactList}\small\item\em Get lower-\/left corner. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoxSDF_aa4ce24307fa921d36527ae4a8d6c0b36}{get\+Low\+Corner} () noexcept -\begin{DoxyCompactList}\small\item\em Get lower-\/left corner. \end{DoxyCompactList}\item -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoxSDF_a10f3d6859f29566cca0bf2e89d1142c3}{get\+High\+Corner} () const noexcept -\begin{DoxyCompactList}\small\item\em Get upper-\/right corner. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classBoxSDF_a624cf8fea66776ecce602039beb1059c}{get\+High\+Corner} () noexcept -\begin{DoxyCompactList}\small\item\em Get upper-\/right corner. \end{DoxyCompactList}\item -virtual T \hyperlink{classBoxSDF_a6e7a72790061423e5c9ea47d9e26736f}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept override -\begin{DoxyCompactList}\small\item\em Signed distance function for sphere. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classBoxSDF_a7286bfb7a6669127b4902b1b2e9a2c80}\label{classBoxSDF_a7286bfb7a6669127b4902b1b2e9a2c80}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classBoxSDF_a7286bfb7a6669127b4902b1b2e9a2c80}{m\+\_\+lo\+Corner} -\begin{DoxyCompactList}\small\item\em Low box corner. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoxSDF_a96181447700a9106e937fa2ff73499b1}\label{classBoxSDF_a96181447700a9106e937fa2ff73499b1}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classBoxSDF_a96181447700a9106e937fa2ff73499b1}{m\+\_\+hi\+Corner} -\begin{DoxyCompactList}\small\item\em High box corner. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classBoxSDF_aac14b4352ba92c067f70884a99c934bf}\label{classBoxSDF_aac14b4352ba92c067f70884a99c934bf}} -bool \hyperlink{classBoxSDF_aac14b4352ba92c067f70884a99c934bf}{m\+\_\+flip\+Inside} -\begin{DoxyCompactList}\small\item\em Hook for making outside -\/$>$ inside. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Additional Inherited Members} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Box\+S\+D\+F$<$ T $>$} - -Signed distance field for an axis-\/aligned box. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classBoxSDF_a8cac002be3de6c478a6d68e6e88607d8}\label{classBoxSDF_a8cac002be3de6c478a6d68e6e88607d8}} -\index{Box\+S\+DF@{Box\+S\+DF}!Box\+S\+DF@{Box\+S\+DF}} -\index{Box\+S\+DF@{Box\+S\+DF}!Box\+S\+DF@{Box\+S\+DF}} -\subsubsection{\texorpdfstring{Box\+S\+D\+F()}{BoxSDF()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classBoxSDF}{Box\+S\+DF}$<$ T $>$\+::\hyperlink{classBoxSDF}{Box\+S\+DF} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+lo\+Corner, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+hi\+Corner, }\item[{const bool}]{a\+\_\+flip\+Inside }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. Sets the low and high corner. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+lo\+Corner} & Lower left corner \\ -\hline -\mbox{\tt in} & {\em a\+\_\+hi\+Corner} & Upper right corner \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Inside} & Flip inside/outside. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classBoxSDF_a10f3d6859f29566cca0bf2e89d1142c3}\label{classBoxSDF_a10f3d6859f29566cca0bf2e89d1142c3}} -\index{Box\+S\+DF@{Box\+S\+DF}!get\+High\+Corner@{get\+High\+Corner}} -\index{get\+High\+Corner@{get\+High\+Corner}!Box\+S\+DF@{Box\+S\+DF}} -\subsubsection{\texorpdfstring{get\+High\+Corner()}{getHighCorner()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const \hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classBoxSDF}{Box\+S\+DF}$<$ T $>$\+::get\+High\+Corner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get upper-\/right corner. - -\begin{DoxyReturn}{Returns} -m\+\_\+hi\+Corner -\end{DoxyReturn} -\mbox{\Hypertarget{classBoxSDF_a624cf8fea66776ecce602039beb1059c}\label{classBoxSDF_a624cf8fea66776ecce602039beb1059c}} -\index{Box\+S\+DF@{Box\+S\+DF}!get\+High\+Corner@{get\+High\+Corner}} -\index{get\+High\+Corner@{get\+High\+Corner}!Box\+S\+DF@{Box\+S\+DF}} -\subsubsection{\texorpdfstring{get\+High\+Corner()}{getHighCorner()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classBoxSDF}{Box\+S\+DF}$<$ T $>$\+::get\+High\+Corner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get upper-\/right corner. - -\begin{DoxyReturn}{Returns} -m\+\_\+hi\+Corner -\end{DoxyReturn} -\mbox{\Hypertarget{classBoxSDF_a564b5f203d6bec78be94da4b9119748a}\label{classBoxSDF_a564b5f203d6bec78be94da4b9119748a}} -\index{Box\+S\+DF@{Box\+S\+DF}!get\+Low\+Corner@{get\+Low\+Corner}} -\index{get\+Low\+Corner@{get\+Low\+Corner}!Box\+S\+DF@{Box\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Low\+Corner()}{getLowCorner()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const \hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classBoxSDF}{Box\+S\+DF}$<$ T $>$\+::get\+Low\+Corner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get lower-\/left corner. - -\begin{DoxyReturn}{Returns} -m\+\_\+lo\+Corner -\end{DoxyReturn} -\mbox{\Hypertarget{classBoxSDF_aa4ce24307fa921d36527ae4a8d6c0b36}\label{classBoxSDF_aa4ce24307fa921d36527ae4a8d6c0b36}} -\index{Box\+S\+DF@{Box\+S\+DF}!get\+Low\+Corner@{get\+Low\+Corner}} -\index{get\+Low\+Corner@{get\+Low\+Corner}!Box\+S\+DF@{Box\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Low\+Corner()}{getLowCorner()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classBoxSDF}{Box\+S\+DF}$<$ T $>$\+::get\+Low\+Corner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get lower-\/left corner. - -\begin{DoxyReturn}{Returns} -m\+\_\+lo\+Corner -\end{DoxyReturn} -\mbox{\Hypertarget{classBoxSDF_a6e7a72790061423e5c9ea47d9e26736f}\label{classBoxSDF_a6e7a72790061423e5c9ea47d9e26736f}} -\index{Box\+S\+DF@{Box\+S\+DF}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Box\+S\+DF@{Box\+S\+DF}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -virtual T \hyperlink{classBoxSDF}{Box\+S\+DF}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}} - - - -Signed distance function for sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & Position. \\ -\hline -\end{DoxyParams} - - -Implements \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{Signed\+Distance\+Function$<$ T $>$}. - - - -The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__AnalyticDistanceFunctions_8hpp}{E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classBoxSDF__coll__graph.md5 b/docs/doxygen/latex/classBoxSDF__coll__graph.md5 deleted file mode 100644 index 6118a451..00000000 --- a/docs/doxygen/latex/classBoxSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5c57eedda86e9560662ba606dbeb48dd \ No newline at end of file diff --git a/docs/doxygen/latex/classBoxSDF__coll__graph.pdf b/docs/doxygen/latex/classBoxSDF__coll__graph.pdf deleted file mode 100644 index d8bdafc5..00000000 Binary files a/docs/doxygen/latex/classBoxSDF__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classBoxSDF__inherit__graph.md5 b/docs/doxygen/latex/classBoxSDF__inherit__graph.md5 deleted file mode 100644 index 267b789f..00000000 --- a/docs/doxygen/latex/classBoxSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -656ced5430d4fb5b9ff5d8918438d0dc \ No newline at end of file diff --git a/docs/doxygen/latex/classBoxSDF__inherit__graph.pdf b/docs/doxygen/latex/classBoxSDF__inherit__graph.pdf deleted file mode 100644 index d8bdafc5..00000000 Binary files a/docs/doxygen/latex/classBoxSDF__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classCylinderSDF.tex b/docs/doxygen/latex/classCylinderSDF.tex deleted file mode 100644 index 4e248b7e..00000000 --- a/docs/doxygen/latex/classCylinderSDF.tex +++ /dev/null @@ -1,174 +0,0 @@ -\hypertarget{classCylinderSDF}{}\section{Cylinder\+S\+DF$<$ T $>$ Class Template Reference} -\label{classCylinderSDF}\index{Cylinder\+S\+D\+F$<$ T $>$@{Cylinder\+S\+D\+F$<$ T $>$}} - - -Signed distance field for a cylinder. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp$>$} - - - -Inheritance diagram for Cylinder\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classCylinderSDF__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Cylinder\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classCylinderSDF__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classCylinderSDF_a4cad4283fea40d7e4f865a29f6b5bb20}\label{classCylinderSDF_a4cad4283fea40d7e4f865a29f6b5bb20}} -\hyperlink{classCylinderSDF_a4cad4283fea40d7e4f865a29f6b5bb20}{Cylinder\+S\+DF} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed weak construction. Use one of the full constructors. \end{DoxyCompactList}\item -\hyperlink{classCylinderSDF_a0c710e871e7e7eb37f379c79c3412607}{Cylinder\+S\+DF} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center1, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center2, const T \&a\+\_\+radius, const bool a\+\_\+flip\+Inside) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_a974c6b114bc5dbf88c171de5328dcaf6}\label{classCylinderSDF_a974c6b114bc5dbf88c171de5328dcaf6}} -virtual \hyperlink{classCylinderSDF_a974c6b114bc5dbf88c171de5328dcaf6}{$\sim$\+Cylinder\+S\+DF} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing). \end{DoxyCompactList}\item -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classCylinderSDF_a7f6134d1ef1fe08ffaf43ece08c84fe0}{get\+Center1} () const noexcept -\begin{DoxyCompactList}\small\item\em Get one endpoint. \end{DoxyCompactList}\item -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classCylinderSDF_aa4188d330f841f04a3f7dba6d1ef9c8f}{get\+Center2} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the other endpoint. \end{DoxyCompactList}\item -const T \& \hyperlink{classCylinderSDF_a545624c47a5a898b74059e95d44461b2}{get\+Radius} () const noexcept -\begin{DoxyCompactList}\small\item\em Get radius. \end{DoxyCompactList}\item -virtual T \hyperlink{classCylinderSDF_a082c08089b07402d55020ed8186cc992}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept override -\begin{DoxyCompactList}\small\item\em Signed distance function for a torus. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classCylinderSDF_ac69f666234c9625306153be47295cdbc}\label{classCylinderSDF_ac69f666234c9625306153be47295cdbc}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classCylinderSDF_ac69f666234c9625306153be47295cdbc}{m\+\_\+center1} -\begin{DoxyCompactList}\small\item\em One endpoint. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_a02b8aea5350ad933ed53abea6cb58103}\label{classCylinderSDF_a02b8aea5350ad933ed53abea6cb58103}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classCylinderSDF_a02b8aea5350ad933ed53abea6cb58103}{m\+\_\+center2} -\begin{DoxyCompactList}\small\item\em The other endpoint. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_a38e901843de5889a3c3eee35bc2a534c}\label{classCylinderSDF_a38e901843de5889a3c3eee35bc2a534c}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classCylinderSDF_a38e901843de5889a3c3eee35bc2a534c}{m\+\_\+center} -\begin{DoxyCompactList}\small\item\em m\+\_\+\+Halfway between center1 and m\+\_\+center2 \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_a034a7baec832c8a19fd2cd33ec1358eb}\label{classCylinderSDF_a034a7baec832c8a19fd2cd33ec1358eb}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classCylinderSDF_a034a7baec832c8a19fd2cd33ec1358eb}{m\+\_\+axis} -\begin{DoxyCompactList}\small\item\em \char`\"{}\+Axis\char`\"{}, pointing from m\+\_\+center1 to m\+\_\+center2. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_a715c9888a921083d827bad94b4660626}\label{classCylinderSDF_a715c9888a921083d827bad94b4660626}} -T \hyperlink{classCylinderSDF_a715c9888a921083d827bad94b4660626}{m\+\_\+length} -\begin{DoxyCompactList}\small\item\em Cylinder length. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_ad5ff6ceb3b872fcea0534f89d73f0268}\label{classCylinderSDF_ad5ff6ceb3b872fcea0534f89d73f0268}} -T \hyperlink{classCylinderSDF_ad5ff6ceb3b872fcea0534f89d73f0268}{m\+\_\+radius} -\begin{DoxyCompactList}\small\item\em radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classCylinderSDF_a1c57a3a6464820197347bcdc5977f7ba}\label{classCylinderSDF_a1c57a3a6464820197347bcdc5977f7ba}} -bool \hyperlink{classCylinderSDF_a1c57a3a6464820197347bcdc5977f7ba}{m\+\_\+flip\+Inside} -\begin{DoxyCompactList}\small\item\em Hook for making outside -\/$>$ inside. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Additional Inherited Members} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Cylinder\+S\+D\+F$<$ T $>$} - -Signed distance field for a cylinder. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classCylinderSDF_a0c710e871e7e7eb37f379c79c3412607}\label{classCylinderSDF_a0c710e871e7e7eb37f379c79c3412607}} -\index{Cylinder\+S\+DF@{Cylinder\+S\+DF}!Cylinder\+S\+DF@{Cylinder\+S\+DF}} -\index{Cylinder\+S\+DF@{Cylinder\+S\+DF}!Cylinder\+S\+DF@{Cylinder\+S\+DF}} -\subsubsection{\texorpdfstring{Cylinder\+S\+D\+F()}{CylinderSDF()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classCylinderSDF}{Cylinder\+S\+DF}$<$ T $>$\+::\hyperlink{classCylinderSDF}{Cylinder\+S\+DF} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+center1, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+center2, }\item[{const T \&}]{a\+\_\+radius, }\item[{const bool}]{a\+\_\+flip\+Inside }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+center1} & One endpoint. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+center2} & Other endpoint. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+radius} & Cylinder radius. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Inside} & Flip inside/outside. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classCylinderSDF_a7f6134d1ef1fe08ffaf43ece08c84fe0}\label{classCylinderSDF_a7f6134d1ef1fe08ffaf43ece08c84fe0}} -\index{Cylinder\+S\+DF@{Cylinder\+S\+DF}!get\+Center1@{get\+Center1}} -\index{get\+Center1@{get\+Center1}!Cylinder\+S\+DF@{Cylinder\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Center1()}{getCenter1()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const \hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classCylinderSDF}{Cylinder\+S\+DF}$<$ T $>$\+::get\+Center1 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get one endpoint. - -\begin{DoxyReturn}{Returns} -m\+\_\+center1 -\end{DoxyReturn} -\mbox{\Hypertarget{classCylinderSDF_aa4188d330f841f04a3f7dba6d1ef9c8f}\label{classCylinderSDF_aa4188d330f841f04a3f7dba6d1ef9c8f}} -\index{Cylinder\+S\+DF@{Cylinder\+S\+DF}!get\+Center2@{get\+Center2}} -\index{get\+Center2@{get\+Center2}!Cylinder\+S\+DF@{Cylinder\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Center2()}{getCenter2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const \hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classCylinderSDF}{Cylinder\+S\+DF}$<$ T $>$\+::get\+Center2 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the other endpoint. - -\begin{DoxyReturn}{Returns} -m\+\_\+center2 -\end{DoxyReturn} -\mbox{\Hypertarget{classCylinderSDF_a545624c47a5a898b74059e95d44461b2}\label{classCylinderSDF_a545624c47a5a898b74059e95d44461b2}} -\index{Cylinder\+S\+DF@{Cylinder\+S\+DF}!get\+Radius@{get\+Radius}} -\index{get\+Radius@{get\+Radius}!Cylinder\+S\+DF@{Cylinder\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Radius()}{getRadius()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const T\& \hyperlink{classCylinderSDF}{Cylinder\+S\+DF}$<$ T $>$\+::get\+Radius (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get radius. - -\begin{DoxyReturn}{Returns} -m\+\_\+radius. -\end{DoxyReturn} -\mbox{\Hypertarget{classCylinderSDF_a082c08089b07402d55020ed8186cc992}\label{classCylinderSDF_a082c08089b07402d55020ed8186cc992}} -\index{Cylinder\+S\+DF@{Cylinder\+S\+DF}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Cylinder\+S\+DF@{Cylinder\+S\+DF}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -virtual T \hyperlink{classCylinderSDF}{Cylinder\+S\+DF}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}} - - - -Signed distance function for a torus. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & Position. \\ -\hline -\end{DoxyParams} - - -Implements \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{Signed\+Distance\+Function$<$ T $>$}. - - - -The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__AnalyticDistanceFunctions_8hpp}{E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classCylinderSDF__coll__graph.md5 b/docs/doxygen/latex/classCylinderSDF__coll__graph.md5 deleted file mode 100644 index a80684f5..00000000 --- a/docs/doxygen/latex/classCylinderSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -edde21d83e70a7a9eaf26f11c9e6ddab \ No newline at end of file diff --git a/docs/doxygen/latex/classCylinderSDF__coll__graph.pdf b/docs/doxygen/latex/classCylinderSDF__coll__graph.pdf deleted file mode 100644 index 98b8033e..00000000 Binary files a/docs/doxygen/latex/classCylinderSDF__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classCylinderSDF__inherit__graph.md5 b/docs/doxygen/latex/classCylinderSDF__inherit__graph.md5 deleted file mode 100644 index 040db1d8..00000000 --- a/docs/doxygen/latex/classCylinderSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -88854dbc40f06e190e708171303df7ac \ No newline at end of file diff --git a/docs/doxygen/latex/classCylinderSDF__inherit__graph.pdf b/docs/doxygen/latex/classCylinderSDF__inherit__graph.pdf deleted file mode 100644 index 98b8033e..00000000 Binary files a/docs/doxygen/latex/classCylinderSDF__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classDcel_1_1EdgeIteratorT.tex b/docs/doxygen/latex/classDcel_1_1EdgeIteratorT.tex deleted file mode 100644 index a144fa9e..00000000 --- a/docs/doxygen/latex/classDcel_1_1EdgeIteratorT.tex +++ /dev/null @@ -1,194 +0,0 @@ -\hypertarget{classDcel_1_1EdgeIteratorT}{}\section{Dcel\+:\+:Edge\+IteratorT$<$ T $>$ Class Template Reference} -\label{classDcel_1_1EdgeIteratorT}\index{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$@{Dcel\+::\+Edge\+Iterator\+T$<$ T $>$}} - - -Class which can iterate through edges and vertices around a D\+C\+EL polygon face. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}\label{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}} -using \hyperlink{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}{Vertex} = \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_ab65ac3b39da5eeb9e3e795f62647ac0b}\label{classDcel_1_1EdgeIteratorT_ab65ac3b39da5eeb9e3e795f62647ac0b}} -using \hyperlink{classDcel_1_1EdgeIteratorT_ab65ac3b39da5eeb9e3e795f62647ac0b}{Edge} = \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}\label{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}} -using \hyperlink{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}{Face} = \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_ac6f7324622a089d17c5b66eb0be679f0}\label{classDcel_1_1EdgeIteratorT_ac6f7324622a089d17c5b66eb0be679f0}} -using \hyperlink{classDcel_1_1EdgeIteratorT_ac6f7324622a089d17c5b66eb0be679f0}{Vertex\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}{Vertex} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a75d19cf89d4ac007483aa8124482513b}\label{classDcel_1_1EdgeIteratorT_a75d19cf89d4ac007483aa8124482513b}} -using \hyperlink{classDcel_1_1EdgeIteratorT_a75d19cf89d4ac007483aa8124482513b}{Edge\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeIteratorT_ab65ac3b39da5eeb9e3e795f62647ac0b}{Edge} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a99deb9b82e268cf8fd1f7c0b94fea339}\label{classDcel_1_1EdgeIteratorT_a99deb9b82e268cf8fd1f7c0b94fea339}} -using \hyperlink{classDcel_1_1EdgeIteratorT_a99deb9b82e268cf8fd1f7c0b94fea339}{Face\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}{Face} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a20ff352f5f61ce6297e82d5be43377ce}\label{classDcel_1_1EdgeIteratorT_a20ff352f5f61ce6297e82d5be43377ce}} -\hyperlink{classDcel_1_1EdgeIteratorT_a20ff352f5f61ce6297e82d5be43377ce}{Edge\+IteratorT} ()=delete -\begin{DoxyCompactList}\small\item\em Default construction is not allowed. Use one of the full constructors. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeIteratorT_aefe8b41b1b21825922096a45ce645149}{Edge\+IteratorT} (\hyperlink{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}{Face} \&a\+\_\+face) -\begin{DoxyCompactList}\small\item\em Constructor, taking a face as argument. The iterator begins at the half-\/edge pointer contained in the face. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeIteratorT_a1e47d3f1320c6ce4f37e1772ed936451}{Edge\+IteratorT} (const \hyperlink{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}{Face} \&a\+\_\+face) -\begin{DoxyCompactList}\small\item\em Constructor, taking a face as argument. The iterator begins at the half-\/edge pointer contained in the face. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeIteratorT_a0041cf8e8c4dcdda12a514aa64e295f7}{Edge\+IteratorT} (\hyperlink{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}{Vertex} \&a\+\_\+vertex) -\begin{DoxyCompactList}\small\item\em Constructor, taking a vertex as argument. The iterator begins at the outgoing half-\/edge from the vertex. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeIteratorT_abda0210d73dd861142c8e23b4d589bd0}{Edge\+IteratorT} (const \hyperlink{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}{Vertex} \&a\+\_\+vertex) -\begin{DoxyCompactList}\small\item\em Constructor, taking a vertex as argument. The iterator begins at the outgoing half-\/edge from the vertex. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a56e7dcbaf6f74f6c05b1eb9105d203ad}\label{classDcel_1_1EdgeIteratorT_a56e7dcbaf6f74f6c05b1eb9105d203ad}} -\hyperlink{classDcel_1_1EdgeIteratorT_a75d19cf89d4ac007483aa8124482513b}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeIteratorT_a56e7dcbaf6f74f6c05b1eb9105d203ad}{operator()} () noexcept -\begin{DoxyCompactList}\small\item\em Operator returning a pointer to the current half-\/edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a2e4afdda5a3eb033dc293fefc23edaa6}\label{classDcel_1_1EdgeIteratorT_a2e4afdda5a3eb033dc293fefc23edaa6}} -const \hyperlink{classDcel_1_1EdgeIteratorT_a75d19cf89d4ac007483aa8124482513b}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeIteratorT_a2e4afdda5a3eb033dc293fefc23edaa6}{operator()} () const noexcept -\begin{DoxyCompactList}\small\item\em Operator returning a pointer to the current half-\/edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_ab1bc6f043869340ee1e1358e4289b8dd}\label{classDcel_1_1EdgeIteratorT_ab1bc6f043869340ee1e1358e4289b8dd}} -void \hyperlink{classDcel_1_1EdgeIteratorT_ab1bc6f043869340ee1e1358e4289b8dd}{reset} () noexcept -\begin{DoxyCompactList}\small\item\em Reset function for the iterator. This resets the iterator so that it begins from the starting half-\/edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_ae8dc40da0743b61725062646144b8f32}\label{classDcel_1_1EdgeIteratorT_ae8dc40da0743b61725062646144b8f32}} -void \hyperlink{classDcel_1_1EdgeIteratorT_ae8dc40da0743b61725062646144b8f32}{operator++} () noexcept -\begin{DoxyCompactList}\small\item\em Incrementation operator, bringing the iterator to the next half-\/edge. \end{DoxyCompactList}\item -bool \hyperlink{classDcel_1_1EdgeIteratorT_a92bfca2d072bbf54c7be751f8fc4c098}{ok} () const noexcept -\begin{DoxyCompactList}\small\item\em Function which checks if the iteration can be continued. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_ad6b36e4ef39214ccd75966a6ecd82682}\label{classDcel_1_1EdgeIteratorT_ad6b36e4ef39214ccd75966a6ecd82682}} -enum \hyperlink{classDcel_1_1EdgeIteratorT_ad6b36e4ef39214ccd75966a6ecd82682}{Iteration\+Mode} \{ {\bfseries Vertices}, -{\bfseries Faces} - \}\begin{DoxyCompactList}\small\item\em Iteration mode, used to distinguish between the two constructors (face-\/ or vertex-\/based iteration) \end{DoxyCompactList} -\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a39560da0f4479c53ed27c38bdfab7c21}\label{classDcel_1_1EdgeIteratorT_a39560da0f4479c53ed27c38bdfab7c21}} -bool \hyperlink{classDcel_1_1EdgeIteratorT_a39560da0f4479c53ed27c38bdfab7c21}{m\+\_\+full\+Loop} -\begin{DoxyCompactList}\small\item\em If true, a full loop has been made around the polygon face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_aa0c8a35a18d668927dd966ddd9620ce5}\label{classDcel_1_1EdgeIteratorT_aa0c8a35a18d668927dd966ddd9620ce5}} -\hyperlink{classDcel_1_1EdgeIteratorT_ad6b36e4ef39214ccd75966a6ecd82682}{Iteration\+Mode} \hyperlink{classDcel_1_1EdgeIteratorT_aa0c8a35a18d668927dd966ddd9620ce5}{m\+\_\+iter\+Mode} -\begin{DoxyCompactList}\small\item\em Iteration mode. Set in constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a39c525d750868014457cdf06a40455bd}\label{classDcel_1_1EdgeIteratorT_a39c525d750868014457cdf06a40455bd}} -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeIteratorT_ab65ac3b39da5eeb9e3e795f62647ac0b}{Edge} $>$ \hyperlink{classDcel_1_1EdgeIteratorT_a39c525d750868014457cdf06a40455bd}{m\+\_\+start\+Edge} -\begin{DoxyCompactList}\small\item\em Starting half-\/edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_afcebe87fbd158d212d7ba0a6b01efa8c}\label{classDcel_1_1EdgeIteratorT_afcebe87fbd158d212d7ba0a6b01efa8c}} -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeIteratorT_ab65ac3b39da5eeb9e3e795f62647ac0b}{Edge} $>$ \hyperlink{classDcel_1_1EdgeIteratorT_afcebe87fbd158d212d7ba0a6b01efa8c}{m\+\_\+cur\+Edge} -\begin{DoxyCompactList}\small\item\em Current half-\/edge. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Edge\+Iterator\+T$<$ T $>$} - -Class which can iterate through edges and vertices around a D\+C\+EL polygon face. - -This class can be used so that it either visits all the half-\/edges in a face, or all the outgoing half-\/edges from a vertex. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_aefe8b41b1b21825922096a45ce645149}\label{classDcel_1_1EdgeIteratorT_aefe8b41b1b21825922096a45ce645149}} -\index{Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}!Edge\+IteratorT@{Edge\+IteratorT}} -\index{Edge\+IteratorT@{Edge\+IteratorT}!Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}} -\subsubsection{\texorpdfstring{Edge\+Iterator\+T()}{EdgeIteratorT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+IteratorT}$<$ T $>$\+::\hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT} (\begin{DoxyParamCaption}\item[{\hyperlink{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}{Face} \&}]{a\+\_\+face }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Constructor, taking a face as argument. The iterator begins at the half-\/edge pointer contained in the face. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+face} & D\+C\+EL polygon face \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This constructor will will iterate through the half-\/edges in the polygon face. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a1e47d3f1320c6ce4f37e1772ed936451}\label{classDcel_1_1EdgeIteratorT_a1e47d3f1320c6ce4f37e1772ed936451}} -\index{Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}!Edge\+IteratorT@{Edge\+IteratorT}} -\index{Edge\+IteratorT@{Edge\+IteratorT}!Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}} -\subsubsection{\texorpdfstring{Edge\+Iterator\+T()}{EdgeIteratorT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+IteratorT}$<$ T $>$\+::\hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeIteratorT_a59cc24c2a7a6a12c5c60bc04b0ac7497}{Face} \&}]{a\+\_\+face }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Constructor, taking a face as argument. The iterator begins at the half-\/edge pointer contained in the face. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+face} & D\+C\+EL polygon face \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This constructor will will iterate through the half-\/edges in the polygon face. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a0041cf8e8c4dcdda12a514aa64e295f7}\label{classDcel_1_1EdgeIteratorT_a0041cf8e8c4dcdda12a514aa64e295f7}} -\index{Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}!Edge\+IteratorT@{Edge\+IteratorT}} -\index{Edge\+IteratorT@{Edge\+IteratorT}!Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}} -\subsubsection{\texorpdfstring{Edge\+Iterator\+T()}{EdgeIteratorT()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+IteratorT}$<$ T $>$\+::\hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT} (\begin{DoxyParamCaption}\item[{\hyperlink{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}{Vertex} \&}]{a\+\_\+vertex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Constructor, taking a vertex as argument. The iterator begins at the outgoing half-\/edge from the vertex. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+vertex} & D\+C\+EL vertex \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This constructor will will iterate through the outgoing half-\/edges from a vertex. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_abda0210d73dd861142c8e23b4d589bd0}\label{classDcel_1_1EdgeIteratorT_abda0210d73dd861142c8e23b4d589bd0}} -\index{Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}!Edge\+IteratorT@{Edge\+IteratorT}} -\index{Edge\+IteratorT@{Edge\+IteratorT}!Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}} -\subsubsection{\texorpdfstring{Edge\+Iterator\+T()}{EdgeIteratorT()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+IteratorT}$<$ T $>$\+::\hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeIteratorT_a4ca07f27da7faf50db5dbd1f20bbcafb}{Vertex} \&}]{a\+\_\+vertex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Constructor, taking a vertex as argument. The iterator begins at the outgoing half-\/edge from the vertex. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+vertex} & D\+C\+EL vertex \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This constructor will will iterate through the outgoing half-\/edges from a vertex. -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1EdgeIteratorT_a92bfca2d072bbf54c7be751f8fc4c098}\label{classDcel_1_1EdgeIteratorT_a92bfca2d072bbf54c7be751f8fc4c098}} -\index{Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}!ok@{ok}} -\index{ok@{ok}!Dcel\+::\+Edge\+IteratorT@{Dcel\+::\+Edge\+IteratorT}} -\subsubsection{\texorpdfstring{ok()}{ok()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classDcel_1_1EdgeIteratorT}{Dcel\+::\+Edge\+IteratorT}$<$ T $>$\+::ok (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Function which checks if the iteration can be continued. - -\begin{DoxyReturn}{Returns} -Returns true unless the current half-\/edge is a nullptr (i.\+e., a broken polygon face) OR a full loop has been made around the polygon face (i.\+e. all half-\/edges have been visited) -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelIteratorImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classDcel_1_1EdgeT.tex b/docs/doxygen/latex/classDcel_1_1EdgeT.tex deleted file mode 100644 index 6b1042aa..00000000 --- a/docs/doxygen/latex/classDcel_1_1EdgeT.tex +++ /dev/null @@ -1,483 +0,0 @@ -\hypertarget{classDcel_1_1EdgeT}{}\section{Dcel\+:\+:EdgeT$<$ T $>$ Class Template Reference} -\label{classDcel_1_1EdgeT}\index{Dcel\+::\+Edge\+T$<$ T $>$@{Dcel\+::\+Edge\+T$<$ T $>$}} - - -Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}\label{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}} -using \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a2409bc47d421bbea1c091fb6b15da271}\label{classDcel_1_1EdgeT_a2409bc47d421bbea1c091fb6b15da271}} -using \hyperlink{classDcel_1_1EdgeT_a2409bc47d421bbea1c091fb6b15da271}{Vertex} = \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a00184663a9d069d2c7a7e0a970f71fd5}\label{classDcel_1_1EdgeT_a00184663a9d069d2c7a7e0a970f71fd5}} -using \hyperlink{classDcel_1_1EdgeT_a00184663a9d069d2c7a7e0a970f71fd5}{Edge} = \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a46456b8f418abc6f09154e8e0d398e37}\label{classDcel_1_1EdgeT_a46456b8f418abc6f09154e8e0d398e37}} -using \hyperlink{classDcel_1_1EdgeT_a46456b8f418abc6f09154e8e0d398e37}{Face} = \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}\label{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}} -using \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT_a2409bc47d421bbea1c091fb6b15da271}{Vertex} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}\label{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}} -using \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT_a00184663a9d069d2c7a7e0a970f71fd5}{Edge} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}\label{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}} -using \hyperlink{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}{Face\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT_a46456b8f418abc6f09154e8e0d398e37}{Face} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_ad55f43bd1061c5ab99c80005861d5bcf}\label{classDcel_1_1EdgeT_ad55f43bd1061c5ab99c80005861d5bcf}} -using \hyperlink{classDcel_1_1EdgeT_ad55f43bd1061c5ab99c80005861d5bcf}{Edge\+Iterator} = \hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a2a9682fd036374aad598a50fe54b2c1f}\label{classDcel_1_1EdgeT_a2a9682fd036374aad598a50fe54b2c1f}} -\hyperlink{classDcel_1_1EdgeT_a2a9682fd036374aad598a50fe54b2c1f}{EdgeT} () -\begin{DoxyCompactList}\small\item\em Default constructor. Sets all pointers to zero and vectors to zero vectors. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_abe96b4404fa1961df79ffa618a7e8633}{EdgeT} (const \hyperlink{classDcel_1_1EdgeT_a00184663a9d069d2c7a7e0a970f71fd5}{Edge} \&a\+\_\+other\+Edge) -\begin{DoxyCompactList}\small\item\em Copy constructor. Copies all information from the other half-\/edge. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_a639b427e60ede1948f8344a41b9bfc32}{EdgeT} (const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \&a\+\_\+vertex) -\begin{DoxyCompactList}\small\item\em Partial constructor. Calls the default constructor but sets the starting vertex. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a94083c72ec137f822fcb08fb600ddd87}\label{classDcel_1_1EdgeT_a94083c72ec137f822fcb08fb600ddd87}} -\hyperlink{classDcel_1_1EdgeT_a94083c72ec137f822fcb08fb600ddd87}{$\sim$\+EdgeT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1EdgeT_aa3257bd5d35041860b10e882e68b2c14}{define} (const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \&a\+\_\+vertex, const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&a\+\_\+pair\+Edge, const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&a\+\_\+next\+Edge, const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&a\+\_\+previous\+Edge, const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} a\+\_\+normal) noexcept -\begin{DoxyCompactList}\small\item\em Define function. Sets the starting vertex, edges, and normal vectors. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1EdgeT_a2611a8e0ae581ab8822f677d6d69edbd}{set\+Vertex} (const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \&a\+\_\+vertex) noexcept -\begin{DoxyCompactList}\small\item\em Set the starting vertex. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1EdgeT_ab9ef2366cf1d411444caf81d5159a3e1}{set\+Pair\+Edge} (const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&a\+\_\+pair\+Edge) noexcept -\begin{DoxyCompactList}\small\item\em Set the pair edge. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1EdgeT_aeeda5324a62f1d8b6e50d788907526bf}{set\+Next\+Edge} (const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&a\+\_\+next\+Edge) noexcept -\begin{DoxyCompactList}\small\item\em Set the next edge. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1EdgeT_af5aa7f27fe95ba4331259b4de927bb37}{set\+Previous\+Edge} (const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&a\+\_\+previous\+Edge) noexcept -\begin{DoxyCompactList}\small\item\em Set the previous edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_adb65dd99901ed730354b17c59e46e1fb}\label{classDcel_1_1EdgeT_adb65dd99901ed730354b17c59e46e1fb}} -void \hyperlink{classDcel_1_1EdgeT_adb65dd99901ed730354b17c59e46e1fb}{set\+Face} (const \hyperlink{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}{Face\+Ptr} \&a\+\_\+face) noexcept -\begin{DoxyCompactList}\small\item\em Set the pointer to this half-\/edge\textquotesingle{}s face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_ac4aaf294fd41c84ef2f7f54a8024e6dd}\label{classDcel_1_1EdgeT_ac4aaf294fd41c84ef2f7f54a8024e6dd}} -void \hyperlink{classDcel_1_1EdgeT_ac4aaf294fd41c84ef2f7f54a8024e6dd}{reconcile} () noexcept -\begin{DoxyCompactList}\small\item\em Compute edge normal and edge length (for performance reasons) \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a44193130714264f57d80e7bfc8264662}{get\+Vertex} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable starting vertex. \end{DoxyCompactList}\item -const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_afa36dc535018588ba2238c5f42a9abd8}{get\+Vertex} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable starting vertex. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_aaa6ae21b177a7661ba61ad2b63ed47f3}{get\+Other\+Vertex} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable end vertex. \end{DoxyCompactList}\item -const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_ac2b40be7e45425caaf85b13b50bd89a0}{get\+Other\+Vertex} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable end vertex. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a1a076a12b7e269aecd77172b1d4c57e1}{get\+Pair\+Edge} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable pair edge. \end{DoxyCompactList}\item -const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a46f28f7da631e2d0f7f3139d1167b392}{get\+Pair\+Edge} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable pair edge. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_ad97e2996c4559b8977d807a5627d5251}{get\+Previous\+Edge} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable previous edge. \end{DoxyCompactList}\item -const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_ae4baac4bda30dfa3827ea87f2f72481f}{get\+Previous\+Edge} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable previous edge. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a1c865581d60a3e89e91d1d8db56fc2d1}{get\+Next\+Edge} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable next edge. \end{DoxyCompactList}\item -const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a6b50d3dd8ab3e2cda28819f6e4be9769}{get\+Next\+Edge} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable next edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a3caca2b8e0d73531566218a7febe24d8}\label{classDcel_1_1EdgeT_a3caca2b8e0d73531566218a7febe24d8}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1EdgeT_a3caca2b8e0d73531566218a7febe24d8}{get\+Normal} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable half-\/edge normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a60b8b2acf41484ff0c521310cece56a3}\label{classDcel_1_1EdgeT_a60b8b2acf41484ff0c521310cece56a3}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1EdgeT_a60b8b2acf41484ff0c521310cece56a3}{get\+Normal} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable half-\/edge normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a522de398f834c68701e4a44f2c9ba972}\label{classDcel_1_1EdgeT_a522de398f834c68701e4a44f2c9ba972}} -\hyperlink{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}{Face\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a522de398f834c68701e4a44f2c9ba972}{get\+Face} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable half-\/edge face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a3966ae6b38b26c618cfb56bd5adb8b54}\label{classDcel_1_1EdgeT_a3966ae6b38b26c618cfb56bd5adb8b54}} -const \hyperlink{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}{Face\+Ptr} \& \hyperlink{classDcel_1_1EdgeT_a3966ae6b38b26c618cfb56bd5adb8b54}{get\+Face} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable half-\/edge face. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1EdgeT_adba2d72aed5f510997d06c2bc9e6e96c}{signed\+Distance} (const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the signed distance to this half edge. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1EdgeT_a50345997f00af679875fda510b3e0607}{unsigned\+Distance2} (const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the signed distance to this half edge. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -T \hyperlink{classDcel_1_1EdgeT_ab937dca20cefcae4083b3cf873d83265}{project\+Point\+To\+Edge} (const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Returns the \char`\"{}projection\char`\"{} of a point to an edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_aae9ee7375ce72ddf5ef375fb18863e8f}\label{classDcel_1_1EdgeT_aae9ee7375ce72ddf5ef375fb18863e8f}} -void \hyperlink{classDcel_1_1EdgeT_aae9ee7375ce72ddf5ef375fb18863e8f}{normalize\+Normal\+Vector} () noexcept -\begin{DoxyCompactList}\small\item\em Normalize the normal vector, ensuring it has length 1. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1EdgeT_abddfe200f9af04cf49362d4ed1e8d37b}{compute\+Edge\+Length} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the edge length. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_ad78566030a7781469035cc4b6ed3393b}\label{classDcel_1_1EdgeT_ad78566030a7781469035cc4b6ed3393b}} -void \hyperlink{classDcel_1_1EdgeT_ad78566030a7781469035cc4b6ed3393b}{compute\+Normal} () noexcept -\begin{DoxyCompactList}\small\item\em Compute normal vector as average of face normals. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \hyperlink{classDcel_1_1EdgeT_af44c33f8b5b0a3d45cd4a83e6fde4db5}{m\+\_\+normal} -\begin{DoxyCompactList}\small\item\em Half-\/edge normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_af70e7b85effe62dd804638984b15695a}\label{classDcel_1_1EdgeT_af70e7b85effe62dd804638984b15695a}} -\hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \hyperlink{classDcel_1_1EdgeT_af70e7b85effe62dd804638984b15695a}{m\+\_\+x2x1} -\begin{DoxyCompactList}\small\item\em Vector from the starting vertex to the end vertex. Exists for performance reasons. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a3689615754e3bdafb12109d5b82183a7}\label{classDcel_1_1EdgeT_a3689615754e3bdafb12109d5b82183a7}} -T \hyperlink{classDcel_1_1EdgeT_a3689615754e3bdafb12109d5b82183a7}{m\+\_\+inv\+Len2} -\begin{DoxyCompactList}\small\item\em Squared inverse edge length. Exists for performance reasons. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a30813ecada33723cc466e0cd1d24abd4}\label{classDcel_1_1EdgeT_a30813ecada33723cc466e0cd1d24abd4}} -\hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \hyperlink{classDcel_1_1EdgeT_a30813ecada33723cc466e0cd1d24abd4}{m\+\_\+vertex} -\begin{DoxyCompactList}\small\item\em Starting vertex. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a5c3bc15e1360b931231cac396493f5b6}\label{classDcel_1_1EdgeT_a5c3bc15e1360b931231cac396493f5b6}} -\hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \hyperlink{classDcel_1_1EdgeT_a5c3bc15e1360b931231cac396493f5b6}{m\+\_\+pair\+Edge} -\begin{DoxyCompactList}\small\item\em Pair edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a77d21fbad704f8aa84aeddeaff1532fd}\label{classDcel_1_1EdgeT_a77d21fbad704f8aa84aeddeaff1532fd}} -\hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \hyperlink{classDcel_1_1EdgeT_a77d21fbad704f8aa84aeddeaff1532fd}{m\+\_\+previous\+Edge} -\begin{DoxyCompactList}\small\item\em Previous edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a26de8e8184c0a6656a2cee2af1bc0230}\label{classDcel_1_1EdgeT_a26de8e8184c0a6656a2cee2af1bc0230}} -\hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \hyperlink{classDcel_1_1EdgeT_a26de8e8184c0a6656a2cee2af1bc0230}{m\+\_\+next\+Edge} -\begin{DoxyCompactList}\small\item\em Next edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1EdgeT_a47aaa6dbeeb6a56f1c7b6d73b2119761}\label{classDcel_1_1EdgeT_a47aaa6dbeeb6a56f1c7b6d73b2119761}} -\hyperlink{classDcel_1_1EdgeT_a97dd9849ea4a21223095f852e48e36e8}{Face\+Ptr} \hyperlink{classDcel_1_1EdgeT_a47aaa6dbeeb6a56f1c7b6d73b2119761}{m\+\_\+face} -\begin{DoxyCompactList}\small\item\em Enclosing polygon face. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Edge\+T$<$ T $>$} - -Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). - -This class is used in D\+C\+EL functionality which stores polygonal surfaces in a mesh. The information contain in an \hyperlink{classDcel_1_1EdgeT}{EdgeT} object contains the necessary object for logically circulating the inside of a polygon face. This means that a polygon face has a double-\/connected list of half-\/edges which circulate the interior of the face. The \hyperlink{classDcel_1_1EdgeT}{EdgeT} object is such a half-\/edge; it represents the outgoing half-\/edge from a vertex, located such that it can be logically represented as a half edge on the \char`\"{}inside\char`\"{} of a polygon face. It contains pointers to the polygon face, next half edge, and the previous half edge. It also contains a pointer to the \char`\"{}pair\char`\"{} half edge, i.\+e. the corresponding half-\/edge on the other face that shares this edge. Since this class is used with D\+C\+EL functionality and signed distance fields, this class also has a signed distance function and thus a \char`\"{}normal vector\char`\"{}. For numericaly efficiency, some extra storage is also allocated (such as the vector between the starting vertex and the end vertex). \begin{DoxyNote}{Note} -The normal vector is outgoing, i.\+e. a point x is \char`\"{}outside\char`\"{} if the dot product between n and (x -\/ x0) is positive. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classDcel_1_1EdgeT_abe96b4404fa1961df79ffa618a7e8633}\label{classDcel_1_1EdgeT_abe96b4404fa1961df79ffa618a7e8633}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!EdgeT@{EdgeT}} -\index{EdgeT@{EdgeT}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{Edge\+T()}{EdgeT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::\hyperlink{classDcel_1_1EdgeT}{EdgeT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_a00184663a9d069d2c7a7e0a970f71fd5}{Edge} \&}]{a\+\_\+other\+Edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Copy constructor. Copies all information from the other half-\/edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other\+Edge} & Other edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a639b427e60ede1948f8344a41b9bfc32}\label{classDcel_1_1EdgeT_a639b427e60ede1948f8344a41b9bfc32}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!EdgeT@{EdgeT}} -\index{EdgeT@{EdgeT}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{Edge\+T()}{EdgeT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::\hyperlink{classDcel_1_1EdgeT}{EdgeT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \&}]{a\+\_\+vertex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Partial constructor. Calls the default constructor but sets the starting vertex. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+vertex} & Starting vertex. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1EdgeT_abddfe200f9af04cf49362d4ed1e8d37b}\label{classDcel_1_1EdgeT_abddfe200f9af04cf49362d4ed1e8d37b}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!compute\+Edge\+Length@{compute\+Edge\+Length}} -\index{compute\+Edge\+Length@{compute\+Edge\+Length}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{compute\+Edge\+Length()}{computeEdgeLength()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::compute\+Edge\+Length (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Compute the edge length. - -This computes the vector m\+\_\+x2x1 (vector from starting vertex to end vertex) and the inverse length squared. \mbox{\Hypertarget{classDcel_1_1EdgeT_aa3257bd5d35041860b10e882e68b2c14}\label{classDcel_1_1EdgeT_aa3257bd5d35041860b10e882e68b2c14}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!define@{define}} -\index{define@{define}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \&}]{a\+\_\+vertex, }\item[{const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&}]{a\+\_\+pair\+Edge, }\item[{const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&}]{a\+\_\+next\+Edge, }\item[{const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&}]{a\+\_\+previous\+Edge, }\item[{const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3}}]{a\+\_\+normal }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Define function. Sets the starting vertex, edges, and normal vectors. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+vertex} & Starting vertex \\ -\hline -\mbox{\tt in} & {\em a\+\_\+pair\+Edge} & Pair half-\/edge \\ -\hline -\mbox{\tt in} & {\em a\+\_\+next\+Edge} & Next half-\/edge \\ -\hline -\mbox{\tt in} & {\em a\+\_\+previous\+Edge} & Previous half-\/edge \\ -\hline -\mbox{\tt in} & {\em a\+\_\+normal} & Edge normal vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a1c865581d60a3e89e91d1d8db56fc2d1}\label{classDcel_1_1EdgeT_a1c865581d60a3e89e91d1d8db56fc2d1}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Next\+Edge@{get\+Next\+Edge}} -\index{get\+Next\+Edge@{get\+Next\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Next\+Edge()}{getNextEdge()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Next\+Edge (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get modifiable next edge. - -\begin{DoxyReturn}{Returns} -Returns the next edge -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a6b50d3dd8ab3e2cda28819f6e4be9769}\label{classDcel_1_1EdgeT_a6b50d3dd8ab3e2cda28819f6e4be9769}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Next\+Edge@{get\+Next\+Edge}} -\index{get\+Next\+Edge@{get\+Next\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Next\+Edge()}{getNextEdge()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Next\+Edge (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get immutable next edge. - -\begin{DoxyReturn}{Returns} -Returns the next edge -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_aaa6ae21b177a7661ba61ad2b63ed47f3}\label{classDcel_1_1EdgeT_aaa6ae21b177a7661ba61ad2b63ed47f3}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Other\+Vertex@{get\+Other\+Vertex}} -\index{get\+Other\+Vertex@{get\+Other\+Vertex}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Other\+Vertex()}{getOtherVertex()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Other\+Vertex (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get modifiable end vertex. - -\begin{DoxyReturn}{Returns} -Returns the next half-\/edge\textquotesingle{}s starting vertex -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_ac2b40be7e45425caaf85b13b50bd89a0}\label{classDcel_1_1EdgeT_ac2b40be7e45425caaf85b13b50bd89a0}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Other\+Vertex@{get\+Other\+Vertex}} -\index{get\+Other\+Vertex@{get\+Other\+Vertex}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Other\+Vertex()}{getOtherVertex()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Other\+Vertex (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get immutable end vertex. - -\begin{DoxyReturn}{Returns} -Returns the next half-\/edge\textquotesingle{}s starting vertex -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a1a076a12b7e269aecd77172b1d4c57e1}\label{classDcel_1_1EdgeT_a1a076a12b7e269aecd77172b1d4c57e1}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Pair\+Edge@{get\+Pair\+Edge}} -\index{get\+Pair\+Edge@{get\+Pair\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Pair\+Edge()}{getPairEdge()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Pair\+Edge (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get modifiable pair edge. - -\begin{DoxyReturn}{Returns} -Returns the pair edge -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a46f28f7da631e2d0f7f3139d1167b392}\label{classDcel_1_1EdgeT_a46f28f7da631e2d0f7f3139d1167b392}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Pair\+Edge@{get\+Pair\+Edge}} -\index{get\+Pair\+Edge@{get\+Pair\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Pair\+Edge()}{getPairEdge()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Pair\+Edge (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get immutable pair edge. - -\begin{DoxyReturn}{Returns} -Returns the pair edge -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_ad97e2996c4559b8977d807a5627d5251}\label{classDcel_1_1EdgeT_ad97e2996c4559b8977d807a5627d5251}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Previous\+Edge@{get\+Previous\+Edge}} -\index{get\+Previous\+Edge@{get\+Previous\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Previous\+Edge()}{getPreviousEdge()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Previous\+Edge (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get modifiable previous edge. - -\begin{DoxyReturn}{Returns} -Returns the previous edge -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_ae4baac4bda30dfa3827ea87f2f72481f}\label{classDcel_1_1EdgeT_ae4baac4bda30dfa3827ea87f2f72481f}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Previous\+Edge@{get\+Previous\+Edge}} -\index{get\+Previous\+Edge@{get\+Previous\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Previous\+Edge()}{getPreviousEdge()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Previous\+Edge (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get immutable previous edge. - -\begin{DoxyReturn}{Returns} -Returns the previous edge -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a44193130714264f57d80e7bfc8264662}\label{classDcel_1_1EdgeT_a44193130714264f57d80e7bfc8264662}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Vertex@{get\+Vertex}} -\index{get\+Vertex@{get\+Vertex}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Vertex()}{getVertex()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Vertex (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get modifiable starting vertex. - -\begin{DoxyReturn}{Returns} -Returns m\+\_\+vertex -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_afa36dc535018588ba2238c5f42a9abd8}\label{classDcel_1_1EdgeT_afa36dc535018588ba2238c5f42a9abd8}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!get\+Vertex@{get\+Vertex}} -\index{get\+Vertex@{get\+Vertex}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{get\+Vertex()}{getVertex()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ $>$ \& \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::get\+Vertex (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get immutable starting vertex. - -\begin{DoxyReturn}{Returns} -Returns m\+\_\+vertex -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1EdgeT_ab937dca20cefcae4083b3cf873d83265}\label{classDcel_1_1EdgeT_ab937dca20cefcae4083b3cf873d83265}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!project\+Point\+To\+Edge@{project\+Point\+To\+Edge}} -\index{project\+Point\+To\+Edge@{project\+Point\+To\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{project\+Point\+To\+Edge()}{projectPointToEdge()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::project\+Point\+To\+Edge (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Returns the \char`\"{}projection\char`\"{} of a point to an edge. - -This function parametrizes the edge as x(t) = x0 + (x1-\/x0)$\ast$t and returns where on the this edge the point a\+\_\+x0 projects. If projects onto the edge if t = \mbox{[}0,1\mbox{]} and to one of the start/end vertices otherwise. \mbox{\Hypertarget{classDcel_1_1EdgeT_aeeda5324a62f1d8b6e50d788907526bf}\label{classDcel_1_1EdgeT_aeeda5324a62f1d8b6e50d788907526bf}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!set\+Next\+Edge@{set\+Next\+Edge}} -\index{set\+Next\+Edge@{set\+Next\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{set\+Next\+Edge()}{setNextEdge()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::set\+Next\+Edge (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&}]{a\+\_\+next\+Edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the next edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+next\+Edge} & Next edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1EdgeT_ab9ef2366cf1d411444caf81d5159a3e1}\label{classDcel_1_1EdgeT_ab9ef2366cf1d411444caf81d5159a3e1}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!set\+Pair\+Edge@{set\+Pair\+Edge}} -\index{set\+Pair\+Edge@{set\+Pair\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{set\+Pair\+Edge()}{setPairEdge()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::set\+Pair\+Edge (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&}]{a\+\_\+pair\+Edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the pair edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+pair\+Edge} & Pair edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1EdgeT_af5aa7f27fe95ba4331259b4de927bb37}\label{classDcel_1_1EdgeT_af5aa7f27fe95ba4331259b4de927bb37}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!set\+Previous\+Edge@{set\+Previous\+Edge}} -\index{set\+Previous\+Edge@{set\+Previous\+Edge}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{set\+Previous\+Edge()}{setPreviousEdge()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::set\+Previous\+Edge (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_af525f4228d820f6b8b23fc02d937e4c8}{Edge\+Ptr} \&}]{a\+\_\+previous\+Edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the previous edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+previous\+Edge} & Previous edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1EdgeT_a2611a8e0ae581ab8822f677d6d69edbd}\label{classDcel_1_1EdgeT_a2611a8e0ae581ab8822f677d6d69edbd}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!set\+Vertex@{set\+Vertex}} -\index{set\+Vertex@{set\+Vertex}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{set\+Vertex()}{setVertex()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::set\+Vertex (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_ab4ba57cfc6b2f90da43096eea87bb284}{Vertex\+Ptr} \&}]{a\+\_\+vertex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the starting vertex. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+vertex} & Starting vertex \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1EdgeT_adba2d72aed5f510997d06c2bc9e6e96c}\label{classDcel_1_1EdgeT_adba2d72aed5f510997d06c2bc9e6e96c}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the signed distance to this half edge. - -This routine will check if the input point projects to the edge or one of the vertices. If it projectes to one of the vertices we compute the signed distance to the corresponding vertex. Otherwise we compute the projection to the edge and compute the sign from the normal vector. \mbox{\Hypertarget{classDcel_1_1EdgeT_a50345997f00af679875fda510b3e0607}\label{classDcel_1_1EdgeT_a50345997f00af679875fda510b3e0607}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!unsigned\+Distance2@{unsigned\+Distance2}} -\index{unsigned\+Distance2@{unsigned\+Distance2}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{unsigned\+Distance2()}{unsignedDistance2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::unsigned\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the signed distance to this half edge. - -This routine will check if the input point projects to the edge or one of the vertices. If it projectes to one of the vertices we compute the squared distance to the corresponding vertex. Otherwise we compute the squared distance of the projection to the edge. This is faster than \hyperlink{classDcel_1_1EdgeT_adba2d72aed5f510997d06c2bc9e6e96c}{signed\+Distance()} - -\subsection{Member Data Documentation} -\mbox{\Hypertarget{classDcel_1_1EdgeT_af44c33f8b5b0a3d45cd4a83e6fde4db5}\label{classDcel_1_1EdgeT_af44c33f8b5b0a3d45cd4a83e6fde4db5}} -\index{Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}!m\+\_\+normal@{m\+\_\+normal}} -\index{m\+\_\+normal@{m\+\_\+normal}!Dcel\+::\+EdgeT@{Dcel\+::\+EdgeT}} -\subsubsection{\texorpdfstring{m\+\_\+normal}{m\_normal}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1EdgeT_a93b8679cea557c419af44385ca6d356a}{Vec3} \hyperlink{classDcel_1_1EdgeT}{Dcel\+::\+EdgeT}$<$ T $>$\+::m\+\_\+normal\hspace{0.3cm}{\ttfamily [protected]}} - - - -Half-\/edge normal vector. - -Computed in compute\+Normal which sets the normal vector to be the average of the normal vector of the connected faces - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelEdgeImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classDcel_1_1FaceT.tex b/docs/doxygen/latex/classDcel_1_1FaceT.tex deleted file mode 100644 index 5004ceef..00000000 --- a/docs/doxygen/latex/classDcel_1_1FaceT.tex +++ /dev/null @@ -1,389 +0,0 @@ -\hypertarget{classDcel_1_1FaceT}{}\section{Dcel\+:\+:FaceT$<$ T $>$ Class Template Reference} -\label{classDcel_1_1FaceT}\index{Dcel\+::\+Face\+T$<$ T $>$@{Dcel\+::\+Face\+T$<$ T $>$}} - - -Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}\label{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}} -using \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_acf33f51e5402ed6bf811521b138121b9}\label{classDcel_1_1FaceT_acf33f51e5402ed6bf811521b138121b9}} -using \hyperlink{classDcel_1_1FaceT_acf33f51e5402ed6bf811521b138121b9}{Vertex} = \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a32a6b328d61bd2739fd840b892833c41}\label{classDcel_1_1FaceT_a32a6b328d61bd2739fd840b892833c41}} -using \hyperlink{classDcel_1_1FaceT_a32a6b328d61bd2739fd840b892833c41}{Edge} = \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a01d61241adc3c536c364084740b8c6da}\label{classDcel_1_1FaceT_a01d61241adc3c536c364084740b8c6da}} -using \hyperlink{classDcel_1_1FaceT_a01d61241adc3c536c364084740b8c6da}{Face} = \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a9c22745bf7351c3bfba27d5816a50deb}\label{classDcel_1_1FaceT_a9c22745bf7351c3bfba27d5816a50deb}} -using \hyperlink{classDcel_1_1FaceT_a9c22745bf7351c3bfba27d5816a50deb}{Vertex\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1FaceT_acf33f51e5402ed6bf811521b138121b9}{Vertex} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}\label{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}} -using \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1FaceT_a32a6b328d61bd2739fd840b892833c41}{Edge} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a4c7f99f7e30983c04a9d0b2f7ca40736}\label{classDcel_1_1FaceT_a4c7f99f7e30983c04a9d0b2f7ca40736}} -using \hyperlink{classDcel_1_1FaceT_a4c7f99f7e30983c04a9d0b2f7ca40736}{Face\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1FaceT_a01d61241adc3c536c364084740b8c6da}{Face} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_afcd6f529cb59cd3dc358d6da52de54a1}\label{classDcel_1_1FaceT_afcd6f529cb59cd3dc358d6da52de54a1}} -using \hyperlink{classDcel_1_1FaceT_afcd6f529cb59cd3dc358d6da52de54a1}{Edge\+Iterator} = \hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1FaceT_ad26587e282563bc4e8c6559b2551627f}\label{classDcel_1_1FaceT_ad26587e282563bc4e8c6559b2551627f}} -\hyperlink{classDcel_1_1FaceT_ad26587e282563bc4e8c6559b2551627f}{FaceT} () -\begin{DoxyCompactList}\small\item\em Default constructor. Sets the half-\/edge to zero and the inside/outside algorithm to crossing number algorithm. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1FaceT_a9111394950a9fb2f8b918423416c83bd}{FaceT} (const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \&a\+\_\+edge) -\begin{DoxyCompactList}\small\item\em Partial constructor. Calls default constructor but associates a half-\/edge. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1FaceT_a0c318a29cae34ba4105235fd55d22b39}{FaceT} (const \hyperlink{classDcel_1_1FaceT_a01d61241adc3c536c364084740b8c6da}{Face} \&a\+\_\+other\+Face) -\begin{DoxyCompactList}\small\item\em Partial constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a56988526e98a2626c644117e9298fd4b}\label{classDcel_1_1FaceT_a56988526e98a2626c644117e9298fd4b}} -\hyperlink{classDcel_1_1FaceT_a56988526e98a2626c644117e9298fd4b}{$\sim$\+FaceT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1FaceT_a44b70fa51382ef625d110bbad64b7442}{define} (const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&a\+\_\+normal, const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \&a\+\_\+edge) noexcept -\begin{DoxyCompactList}\small\item\em Define function which sets the normal vector and half-\/edge. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1FaceT_aaf3f8b92ca4393391ea213b0ecfe19bd}{reconcile} () noexcept -\begin{DoxyCompactList}\small\item\em Reconcile face. This will compute the normal vector, area, centroid, and the 2D embedding of the polygon. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1FaceT_a2680477d0a6c8b2187230170522fe3a5}{set\+Half\+Edge} (const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \&a\+\_\+half\+Edge) noexcept -\begin{DoxyCompactList}\small\item\em Set the half edge. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1FaceT_a12b6dc8412276137532a63c292e4b6fe}{set\+Inside\+Outside\+Algorithm} (typename \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::Inside\+Outside\+Algorithm \&a\+\_\+algorithm) noexcept -\begin{DoxyCompactList}\small\item\em Set the inside/outside algorithm when determining if a point projects to the inside or outside of the polygon. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a121a02750336ee4050bfd5db8f9328b4}\label{classDcel_1_1FaceT_a121a02750336ee4050bfd5db8f9328b4}} -\hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \& \hyperlink{classDcel_1_1FaceT_a121a02750336ee4050bfd5db8f9328b4}{get\+Half\+Edge} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable half-\/edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a1b273c8c0157f7ec9604424a2b073db3}\label{classDcel_1_1FaceT_a1b273c8c0157f7ec9604424a2b073db3}} -const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \& \hyperlink{classDcel_1_1FaceT_a1b273c8c0157f7ec9604424a2b073db3}{get\+Half\+Edge} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable half-\/edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a1b9c15538b2d7840a11b30f5e236c2a9}\label{classDcel_1_1FaceT_a1b9c15538b2d7840a11b30f5e236c2a9}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1FaceT_a1b9c15538b2d7840a11b30f5e236c2a9}{get\+Centroid} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable centroid. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_af2bf6614093074f450b2e0e5ea58682a}\label{classDcel_1_1FaceT_af2bf6614093074f450b2e0e5ea58682a}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1FaceT_af2bf6614093074f450b2e0e5ea58682a}{get\+Centroid} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable centroid. \end{DoxyCompactList}\item -T \& \hyperlink{classDcel_1_1FaceT_a43e5b9aebe8736a42568ae0e6fbb6db3}{get\+Centroid} (const int a\+\_\+dir) noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable centroid position in specified coordinate direction. \end{DoxyCompactList}\item -const T \& \hyperlink{classDcel_1_1FaceT_ac835d260a630e303babd7f87eb7d5a1a}{get\+Centroid} (const int a\+\_\+dir) const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable centroid position in specified coordinate direction. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a0e6079ca8d45b2e2090bd6202c7a679e}\label{classDcel_1_1FaceT_a0e6079ca8d45b2e2090bd6202c7a679e}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1FaceT_a0e6079ca8d45b2e2090bd6202c7a679e}{get\+Normal} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_adff3ebb9eba8d500e21fed65b32ea8fb}\label{classDcel_1_1FaceT_adff3ebb9eba8d500e21fed65b32ea8fb}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1FaceT_adff3ebb9eba8d500e21fed65b32ea8fb}{get\+Normal} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable normal vector. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1FaceT_a8ac718b0c9af797d34efcda43f38b6c0}{signed\+Distance} (const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the signed distance to a point. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1FaceT_a2915506b12c361eb4a25cba80638cb7d}{unsigned\+Distance2} (const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the unsigned squared distance to a point. \end{DoxyCompactList}\item -std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$ $>$ \hyperlink{classDcel_1_1FaceT_a17f38028d7bd3150feb22484e601f557}{get\+All\+Vertex\+Coordinates} () const noexcept -\begin{DoxyCompactList}\small\item\em Return the coordinates of all the vertices on this polygon. \end{DoxyCompactList}\item -std\+::vector$<$ \hyperlink{classDcel_1_1FaceT_a9c22745bf7351c3bfba27d5816a50deb}{Vertex\+Ptr} $>$ \hyperlink{classDcel_1_1FaceT_aba1c0e341f18097112fd55465cc00eeb}{gather\+Vertices} () const noexcept -\begin{DoxyCompactList}\small\item\em Return all the vertices on this polygon. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a8eb0b35ecb5de2601dc9f7ff0d2cac0d}\label{classDcel_1_1FaceT_a8eb0b35ecb5de2601dc9f7ff0d2cac0d}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classDcel_1_1FaceT_a8eb0b35ecb5de2601dc9f7ff0d2cac0d}{get\+Smallest\+Coordinate} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the lower-\/left-\/most coordinate of this polygon face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_ad712b8dec98d77e631e1c7a920424d1f}\label{classDcel_1_1FaceT_ad712b8dec98d77e631e1c7a920424d1f}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classDcel_1_1FaceT_ad712b8dec98d77e631e1c7a920424d1f}{get\+Highest\+Coordinate} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the upper-\/right-\/most coordinate of this polygon face. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a3a3bfa74a7c07252a2a904206678bb66}\label{classDcel_1_1FaceT_a3a3bfa74a7c07252a2a904206678bb66}} -void \hyperlink{classDcel_1_1FaceT_a3a3bfa74a7c07252a2a904206678bb66}{compute\+Area} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the area of this polygon. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a7aded1c77a78a38115e5388311ed25b0}\label{classDcel_1_1FaceT_a7aded1c77a78a38115e5388311ed25b0}} -void \hyperlink{classDcel_1_1FaceT_a7aded1c77a78a38115e5388311ed25b0}{compute\+Centroid} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the centroid position of this polygon. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a574abc710dd63e88503d4011f27adf89}\label{classDcel_1_1FaceT_a574abc710dd63e88503d4011f27adf89}} -void \hyperlink{classDcel_1_1FaceT_a574abc710dd63e88503d4011f27adf89}{compute\+Normal} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the normal position of this polygon. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a863d94c15412e535ca62f9cd52eead5f}\label{classDcel_1_1FaceT_a863d94c15412e535ca62f9cd52eead5f}} -void \hyperlink{classDcel_1_1FaceT_a863d94c15412e535ca62f9cd52eead5f}{compute\+Polygon2D} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the 2D embedding of this polygon. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_aae0f6ac54d41666fa4b6182c65e5e444}\label{classDcel_1_1FaceT_aae0f6ac54d41666fa4b6182c65e5e444}} -void \hyperlink{classDcel_1_1FaceT_aae0f6ac54d41666fa4b6182c65e5e444}{normalize\+Normal\+Vector} () noexcept -\begin{DoxyCompactList}\small\item\em Normalize the normal vector, ensuring it has a length of 1. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_aeddb2fe440acd3dadc6160be390127fe}\label{classDcel_1_1FaceT_aeddb2fe440acd3dadc6160be390127fe}} -T \hyperlink{classDcel_1_1FaceT_aeddb2fe440acd3dadc6160be390127fe}{get\+Area} () noexcept -\begin{DoxyCompactList}\small\item\em Get the area of this polygon face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_ab5352c13f01b1d2ec8fbd630d4c01083}\label{classDcel_1_1FaceT_ab5352c13f01b1d2ec8fbd630d4c01083}} -T \hyperlink{classDcel_1_1FaceT_ab5352c13f01b1d2ec8fbd630d4c01083}{get\+Area} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the area of this polygon face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a5e913d5cdebb6b95c43e6e0fdc2e3589}\label{classDcel_1_1FaceT_a5e913d5cdebb6b95c43e6e0fdc2e3589}} -void \hyperlink{classDcel_1_1FaceT_a5e913d5cdebb6b95c43e6e0fdc2e3589}{compute\+And\+Store\+Edges} () noexcept -\begin{DoxyCompactList}\small\item\em Compute and store all the half-\/edges around this polygon face. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classDcel_1_1FaceT_af4116b8f72e0dfb797f79cd4f27a71e8}{project\+Point\+Into\+Face\+Plane} (const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&a\+\_\+p) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the projection of a point onto the polygon face plane. \end{DoxyCompactList}\item -bool \hyperlink{classDcel_1_1FaceT_a628d1734a63636a528fe2f7019bc4dd8}{is\+Point\+Inside\+Face} (const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&a\+\_\+p) const noexcept -\begin{DoxyCompactList}\small\item\em Check if a point projects to inside or outside the polygon face. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1FaceT_afe66c3d93bb0ea04d9a0d263b2927bd3}\label{classDcel_1_1FaceT_afe66c3d93bb0ea04d9a0d263b2927bd3}} -\hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \hyperlink{classDcel_1_1FaceT_afe66c3d93bb0ea04d9a0d263b2927bd3}{m\+\_\+half\+Edge} -\begin{DoxyCompactList}\small\item\em This polygon\textquotesingle{}s half-\/edge. A valid face will always have != nullptr. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a9228b5f27e1aa5c9eea36a7c27462e6c}\label{classDcel_1_1FaceT_a9228b5f27e1aa5c9eea36a7c27462e6c}} -std\+::vector$<$ \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} $>$ \hyperlink{classDcel_1_1FaceT_a9228b5f27e1aa5c9eea36a7c27462e6c}{m\+\_\+edges} -\begin{DoxyCompactList}\small\item\em Pointers to all the half-\/edges of this face. Exists for performance reasons (in signed\+Distance(...)) \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a572c463c60afb896c8cec667c964631f}\label{classDcel_1_1FaceT_a572c463c60afb896c8cec667c964631f}} -T \hyperlink{classDcel_1_1FaceT_a572c463c60afb896c8cec667c964631f}{m\+\_\+area} -\begin{DoxyCompactList}\small\item\em Polygon face area. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a886ee24ddf3dae99b836b39183a412ba}\label{classDcel_1_1FaceT_a886ee24ddf3dae99b836b39183a412ba}} -\hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \hyperlink{classDcel_1_1FaceT_a886ee24ddf3dae99b836b39183a412ba}{m\+\_\+normal} -\begin{DoxyCompactList}\small\item\em Polygon face normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a9a85e2c47be9ac4bbfe8620bc0773d6d}\label{classDcel_1_1FaceT_a9a85e2c47be9ac4bbfe8620bc0773d6d}} -\hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \hyperlink{classDcel_1_1FaceT_a9a85e2c47be9ac4bbfe8620bc0773d6d}{m\+\_\+centroid} -\begin{DoxyCompactList}\small\item\em Polygon face centroid position. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_a77edb4eca91bcd6fb47ce3574c11b840}\label{classDcel_1_1FaceT_a77edb4eca91bcd6fb47ce3574c11b840}} -std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Polygon2D}{Polygon2D}$<$ T $>$ $>$ \hyperlink{classDcel_1_1FaceT_a77edb4eca91bcd6fb47ce3574c11b840}{m\+\_\+poly2} -\begin{DoxyCompactList}\small\item\em 2D embedding of this polygon. This is the 2D view of the current object projected along its normal vector cardinal. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1FaceT_acc53b6246f9d5d57777789aad6084d14}\label{classDcel_1_1FaceT_acc53b6246f9d5d57777789aad6084d14}} -\hyperlink{classDcel_1_1Polygon2D}{Polygon2D}$<$ T $>$\+::Inside\+Outside\+Algorithm \hyperlink{classDcel_1_1FaceT_acc53b6246f9d5d57777789aad6084d14}{m\+\_\+poly2\+Algorithm} -\begin{DoxyCompactList}\small\item\em Algorithm for inside/outside tests. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Face\+T$<$ T $>$} - -Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). - -This class is a polygon face in a D\+C\+EL mesh. It contains pointer storage to one of the half-\/edges that circulate the inside of the polygon face, as well as having a normal vector, a centroid, and an area. This class supports signed distance computations. These computations require algorithms that compute e.\+g. the winding number of the polygon, or the number of times a ray cast passes through it. Thus, one of its central features is that it can be embedded in 2D by projecting it along the cardinal direction of its normal vector. To be fully consistent with a D\+C\+EL structure the class stores a reference to one of its half edges, but for performance reasons it also stores references to the other half edges. \begin{DoxyNote}{Note} -To compute the distance from a point to the face one must determine if the point projects \char`\"{}inside\char`\"{} or \char`\"{}outside\char`\"{} the polygon. There are several algorithms for this, and by default this class uses a crossing number algorithm. Other algorithms can be set in set\+Inside\+Outside\+Algorithm (see C\+D\+\_\+\+Dcel\+Algorithms.\+H) -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classDcel_1_1FaceT_a9111394950a9fb2f8b918423416c83bd}\label{classDcel_1_1FaceT_a9111394950a9fb2f8b918423416c83bd}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!FaceT@{FaceT}} -\index{FaceT@{FaceT}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{Face\+T()}{FaceT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::\hyperlink{classDcel_1_1FaceT}{FaceT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \&}]{a\+\_\+edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Partial constructor. Calls default constructor but associates a half-\/edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+edge} & Half-\/edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1FaceT_a0c318a29cae34ba4105235fd55d22b39}\label{classDcel_1_1FaceT_a0c318a29cae34ba4105235fd55d22b39}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!FaceT@{FaceT}} -\index{FaceT@{FaceT}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{Face\+T()}{FaceT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::\hyperlink{classDcel_1_1FaceT}{FaceT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_a01d61241adc3c536c364084740b8c6da}{Face} \&}]{a\+\_\+other\+Face }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Partial constructor. - -Calls default constructor but sets the normal vector and half-\/edge equal to the other face\textquotesingle{}s (rest is undefined) - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1FaceT_a44b70fa51382ef625d110bbad64b7442}\label{classDcel_1_1FaceT_a44b70fa51382ef625d110bbad64b7442}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!define@{define}} -\index{define@{define}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&}]{a\+\_\+normal, }\item[{const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \&}]{a\+\_\+edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Define function which sets the normal vector and half-\/edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+normal} & Normal vector \\ -\hline -\mbox{\tt in} & {\em a\+\_\+edge} & Half edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1FaceT_aba1c0e341f18097112fd55465cc00eeb}\label{classDcel_1_1FaceT_aba1c0e341f18097112fd55465cc00eeb}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!gather\+Vertices@{gather\+Vertices}} -\index{gather\+Vertices@{gather\+Vertices}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{gather\+Vertices()}{gatherVertices()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ $>$ $>$ \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::gather\+Vertices (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return all the vertices on this polygon. - -This builds a list of all the vertices and returns it. \mbox{\Hypertarget{classDcel_1_1FaceT_a17f38028d7bd3150feb22484e601f557}\label{classDcel_1_1FaceT_a17f38028d7bd3150feb22484e601f557}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!get\+All\+Vertex\+Coordinates@{get\+All\+Vertex\+Coordinates}} -\index{get\+All\+Vertex\+Coordinates@{get\+All\+Vertex\+Coordinates}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{get\+All\+Vertex\+Coordinates()}{getAllVertexCoordinates()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$ $>$ \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::get\+All\+Vertex\+Coordinates (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return the coordinates of all the vertices on this polygon. - -This builds a list of all the vertex coordinates and returns it. \mbox{\Hypertarget{classDcel_1_1FaceT_a43e5b9aebe8736a42568ae0e6fbb6db3}\label{classDcel_1_1FaceT_a43e5b9aebe8736a42568ae0e6fbb6db3}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!get\+Centroid@{get\+Centroid}} -\index{get\+Centroid@{get\+Centroid}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{get\+Centroid()}{getCentroid()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \& \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::get\+Centroid (\begin{DoxyParamCaption}\item[{const int}]{a\+\_\+dir }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get modifiable centroid position in specified coordinate direction. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+dir} & Coordinate direction \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1FaceT_ac835d260a630e303babd7f87eb7d5a1a}\label{classDcel_1_1FaceT_ac835d260a630e303babd7f87eb7d5a1a}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!get\+Centroid@{get\+Centroid}} -\index{get\+Centroid@{get\+Centroid}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{get\+Centroid()}{getCentroid()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const T \& \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::get\+Centroid (\begin{DoxyParamCaption}\item[{const int}]{a\+\_\+dir }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get immutable centroid position in specified coordinate direction. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+dir} & Coordinate direction \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1FaceT_a628d1734a63636a528fe2f7019bc4dd8}\label{classDcel_1_1FaceT_a628d1734a63636a528fe2f7019bc4dd8}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!is\+Point\+Inside\+Face@{is\+Point\+Inside\+Face}} -\index{is\+Point\+Inside\+Face@{is\+Point\+Inside\+Face}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{is\+Point\+Inside\+Face()}{isPointInsideFace()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::is\+Point\+Inside\+Face (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&}]{a\+\_\+p }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Check if a point projects to inside or outside the polygon face. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+p} & Point in space \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns true if a\+\_\+p projects to inside the polygon and false otherwise. -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1FaceT_af4116b8f72e0dfb797f79cd4f27a71e8}\label{classDcel_1_1FaceT_af4116b8f72e0dfb797f79cd4f27a71e8}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!project\+Point\+Into\+Face\+Plane@{project\+Point\+Into\+Face\+Plane}} -\index{project\+Point\+Into\+Face\+Plane@{project\+Point\+Into\+Face\+Plane}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{project\+Point\+Into\+Face\+Plane()}{projectPointIntoFacePlane()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::project\+Point\+Into\+Face\+Plane (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&}]{a\+\_\+p }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Compute the projection of a point onto the polygon face plane. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+p} & Point in space \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1FaceT_aaf3f8b92ca4393391ea213b0ecfe19bd}\label{classDcel_1_1FaceT_aaf3f8b92ca4393391ea213b0ecfe19bd}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!reconcile@{reconcile}} -\index{reconcile@{reconcile}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{reconcile()}{reconcile()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::reconcile (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Reconcile face. This will compute the normal vector, area, centroid, and the 2D embedding of the polygon. - -\begin{DoxyNote}{Note} -\char`\"{}\+Everything\char`\"{} must be set before doing this, i.\+e. the face must be complete with half edges and there can be no dangling edges. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1FaceT_a2680477d0a6c8b2187230170522fe3a5}\label{classDcel_1_1FaceT_a2680477d0a6c8b2187230170522fe3a5}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!set\+Half\+Edge@{set\+Half\+Edge}} -\index{set\+Half\+Edge@{set\+Half\+Edge}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{set\+Half\+Edge()}{setHalfEdge()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::set\+Half\+Edge (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_a0f3448c4cf108341e48029b8040c7cec}{Edge\+Ptr} \&}]{a\+\_\+half\+Edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the half edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+half\+Edge} & Half edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1FaceT_a12b6dc8412276137532a63c292e4b6fe}\label{classDcel_1_1FaceT_a12b6dc8412276137532a63c292e4b6fe}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!set\+Inside\+Outside\+Algorithm@{set\+Inside\+Outside\+Algorithm}} -\index{set\+Inside\+Outside\+Algorithm@{set\+Inside\+Outside\+Algorithm}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{set\+Inside\+Outside\+Algorithm()}{setInsideOutsideAlgorithm()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::set\+Inside\+Outside\+Algorithm (\begin{DoxyParamCaption}\item[{typename \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::Inside\+Outside\+Algorithm \&}]{a\+\_\+algorithm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the inside/outside algorithm when determining if a point projects to the inside or outside of the polygon. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+algorithm} & Desired algorithm \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -See C\+D\+\_\+\+Dcel\+Algorithms.\+H for options (and C\+D\+\_\+\+Dcel\+Poly\+Implem.\+H for how the algorithms operate). -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1FaceT_a8ac718b0c9af797d34efcda43f38b6c0}\label{classDcel_1_1FaceT_a8ac718b0c9af797d34efcda43f38b6c0}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the signed distance to a point. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & Point in space\\ -\hline -\end{DoxyParams} -This algorithm operates by checking if the input point projects to the inside of the polygon. If it does then the distance is just the projected distance onto the polygon plane and the sign is well-\/defined. Otherwise, we check the distance to the edges of the polygon. \mbox{\Hypertarget{classDcel_1_1FaceT_a2915506b12c361eb4a25cba80638cb7d}\label{classDcel_1_1FaceT_a2915506b12c361eb4a25cba80638cb7d}} -\index{Dcel\+::\+FaceT@{Dcel\+::\+FaceT}!unsigned\+Distance2@{unsigned\+Distance2}} -\index{unsigned\+Distance2@{unsigned\+Distance2}!Dcel\+::\+FaceT@{Dcel\+::\+FaceT}} -\subsubsection{\texorpdfstring{unsigned\+Distance2()}{unsignedDistance2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$\+::unsigned\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1FaceT_ade9c182834ec6f18a0e17b8140308db2}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the unsigned squared distance to a point. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & Point in space\\ -\hline -\end{DoxyParams} -This algorithm operates by checking if the input point projects to the inside of the polygon. If it does then the distance is just the projected distance onto the polygon plane. Otherwise, we check the distance to the edges of the polygon. - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelFaceImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classDcel_1_1MeshT.tex b/docs/doxygen/latex/classDcel_1_1MeshT.tex deleted file mode 100644 index 1d5d2e06..00000000 --- a/docs/doxygen/latex/classDcel_1_1MeshT.tex +++ /dev/null @@ -1,441 +0,0 @@ -\hypertarget{classDcel_1_1MeshT}{}\section{Dcel\+:\+:MeshT$<$ T $>$ Class Template Reference} -\label{classDcel_1_1MeshT}\index{Dcel\+::\+Mesh\+T$<$ T $>$@{Dcel\+::\+Mesh\+T$<$ T $>$}} - - -Mesh class which stores a full D\+C\+EL mesh (with signed distance functions) - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -enum \hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Search\+Algorithm} \{ {\bfseries Direct}, -{\bfseries Direct2} - \}\begin{DoxyCompactList}\small\item\em Possible search algorithms for \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}. \end{DoxyCompactList} -\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}\label{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}} -enum \hyperlink{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}{Vertex\+Normal\+Weight} \{ {\bfseries None}, -{\bfseries Angle} - \}\begin{DoxyCompactList}\small\item\em How to weight vertex normal. \end{DoxyCompactList} -\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}\label{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}} -using \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a58b357c4ad94f4a4b813ed7ebf01cd05}\label{classDcel_1_1MeshT_a58b357c4ad94f4a4b813ed7ebf01cd05}} -using \hyperlink{classDcel_1_1MeshT_a58b357c4ad94f4a4b813ed7ebf01cd05}{Vertex} = \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a94f5c42e6f80fd948ebbc294d948ffab}\label{classDcel_1_1MeshT_a94f5c42e6f80fd948ebbc294d948ffab}} -using \hyperlink{classDcel_1_1MeshT_a94f5c42e6f80fd948ebbc294d948ffab}{Edge} = \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_ac1fcce96c65811660619af9eb32589f9}\label{classDcel_1_1MeshT_ac1fcce96c65811660619af9eb32589f9}} -using \hyperlink{classDcel_1_1MeshT_ac1fcce96c65811660619af9eb32589f9}{Face} = \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}\label{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}} -using \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1MeshT_a58b357c4ad94f4a4b813ed7ebf01cd05}{Vertex} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}\label{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}} -using \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1MeshT_a94f5c42e6f80fd948ebbc294d948ffab}{Edge} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}\label{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}} -using \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1MeshT_ac1fcce96c65811660619af9eb32589f9}{Face} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_abe9db973f4510ccb36e20ecfa9223926}\label{classDcel_1_1MeshT_abe9db973f4510ccb36e20ecfa9223926}} -using \hyperlink{classDcel_1_1MeshT_abe9db973f4510ccb36e20ecfa9223926}{Mesh} = \hyperlink{classDcel_1_1MeshT}{MeshT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on the typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a4eae06529761d8aff54e945eb0a3ba91}\label{classDcel_1_1MeshT_a4eae06529761d8aff54e945eb0a3ba91}} -\hyperlink{classDcel_1_1MeshT_a4eae06529761d8aff54e945eb0a3ba91}{MeshT} () -\begin{DoxyCompactList}\small\item\em Default constructor. Leaves unobject in an unusable state. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1MeshT_aa055e10c62778ba629b3f9c849338e03}{MeshT} (const \hyperlink{classDcel_1_1MeshT_abe9db973f4510ccb36e20ecfa9223926}{Mesh} \&a\+\_\+other\+Mesh)=delete -\begin{DoxyCompactList}\small\item\em Disallowed copy construction. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1MeshT_a7468e3630893d64a71a7c2347496576b}{MeshT} (std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \&a\+\_\+faces, std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \&a\+\_\+edges, std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \&a\+\_\+vertices) -\begin{DoxyCompactList}\small\item\em Full constructor. This provides the faces, edges, and vertices to the mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a51da8ad54b3cfe69a695221f73bd97b2}\label{classDcel_1_1MeshT_a51da8ad54b3cfe69a695221f73bd97b2}} -\hyperlink{classDcel_1_1MeshT_a51da8ad54b3cfe69a695221f73bd97b2}{$\sim$\+MeshT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_af65f5fc459d586ba3b6bd0711b0951f5}{define} (std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \&a\+\_\+faces, std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \&a\+\_\+edges, std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \&a\+\_\+vertices) noexcept -\begin{DoxyCompactList}\small\item\em Define function. Puts Mesh in usable state. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_a1814ba63c6e0d7a007ee78c24d6ea159}{sanity\+Check} () const noexcept -\begin{DoxyCompactList}\small\item\em Perform a sanity check. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_abc7a2bd7632be06c0ad9cf49816d262f}{set\+Search\+Algorithm} (const \hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Search\+Algorithm} a\+\_\+algorithm) noexcept -\begin{DoxyCompactList}\small\item\em Search algorithm for direct signed distance computations. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_a1e46a744a2526e451229e2f2e4830ca5}{set\+Inside\+Outside\+Algorithm} (typename \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::Inside\+Outside\+Algorithm a\+\_\+algorithm) noexcept -\begin{DoxyCompactList}\small\item\em Set the inside/outside algorithm to use when computing the signed distance to polygon faces. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_a98d80b5f83b9d6ff55d0d0da34d0b422}{reconcile} (typename \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::\hyperlink{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}{Vertex\+Normal\+Weight} a\+\_\+weight=Vertex\+Normal\+Weight\+::\+Angle) noexcept -\begin{DoxyCompactList}\small\item\em Reconcile function which computes the internal parameters in vertices, edges, and faces for use with signed distance functionality. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a0ccf0a5a707dbad79b3578a401449e9c}\label{classDcel_1_1MeshT_a0ccf0a5a707dbad79b3578a401449e9c}} -std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \& \hyperlink{classDcel_1_1MeshT_a0ccf0a5a707dbad79b3578a401449e9c}{get\+Vertices} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable vertices in this mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a579860225cb9fc926fea4856563bef08}\label{classDcel_1_1MeshT_a579860225cb9fc926fea4856563bef08}} -const std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \& \hyperlink{classDcel_1_1MeshT_a579860225cb9fc926fea4856563bef08}{get\+Vertices} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable vertices in this mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a3c6566eab929cc4108213959fa25777e}\label{classDcel_1_1MeshT_a3c6566eab929cc4108213959fa25777e}} -std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \& \hyperlink{classDcel_1_1MeshT_a3c6566eab929cc4108213959fa25777e}{get\+Edges} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable half-\/edges in this mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a3440c0836148040bfd6cc679f047ec5b}\label{classDcel_1_1MeshT_a3440c0836148040bfd6cc679f047ec5b}} -const std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \& \hyperlink{classDcel_1_1MeshT_a3440c0836148040bfd6cc679f047ec5b}{get\+Edges} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable half-\/edges in this mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a348cffec1fa223f131819abad1c89338}\label{classDcel_1_1MeshT_a348cffec1fa223f131819abad1c89338}} -std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \& \hyperlink{classDcel_1_1MeshT_a348cffec1fa223f131819abad1c89338}{get\+Faces} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable faces in this mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_afe1bd52d15af160f691bdd83305c84c7}\label{classDcel_1_1MeshT_afe1bd52d15af160f691bdd83305c84c7}} -const std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \& \hyperlink{classDcel_1_1MeshT_afe1bd52d15af160f691bdd83305c84c7}{get\+Faces} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable faces in this mesh. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1MeshT_aa6f614aa0d93c3345c10150168347497}{signed\+Distance} (const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the signed distance from a point to this mesh. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1MeshT_a4fa40378fbd4c31cd50e77da70ef30fd}{signed\+Distance} (const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&a\+\_\+x0, \hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Search\+Algorithm} a\+\_\+algorithm) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the signed distance from a point to this mesh. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1MeshT_a8be4c3d6f606b8bc8cc36820de773de1}{unsigned\+Distance2} (const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the unsigned square distance from a point to this mesh. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a597a38ed9f3e3a2a33f2d1211da322f3}\label{classDcel_1_1MeshT_a597a38ed9f3e3a2a33f2d1211da322f3}} -std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$ $>$ \hyperlink{classDcel_1_1MeshT_a597a38ed9f3e3a2a33f2d1211da322f3}{get\+All\+Vertex\+Coordinates} () const noexcept -\begin{DoxyCompactList}\small\item\em Return all vertex coordinates in the mesh. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_a5e31ae8b95c9ee725e205d8ae4fd35dc}{reconcile\+Faces} () noexcept -\begin{DoxyCompactList}\small\item\em Function which computes internal things for the polygon faces. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_a33f6506c1daf9946d1f21117c0ab89d5}{reconcile\+Edges} () noexcept -\begin{DoxyCompactList}\small\item\em Function which computes internal things for the half-\/edges. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_ad2b65aa214d51ecd438bc876e7255290}{reconcile\+Vertices} (typename \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::\hyperlink{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}{Vertex\+Normal\+Weight} a\+\_\+weight) noexcept -\begin{DoxyCompactList}\small\item\em Function which computes internal things for the vertices. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1MeshT_ada074ff3b1a612e46098f4ba6ca0bda2}{Direct\+Signed\+Distance} (const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Implementation of signed distance function which iterates through all faces. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1MeshT_ac00a6da46649246a3a2db70b29bb2407}{Direct\+Signed\+Distance2} (const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Implementation of squared signed distance function which iterates through all faces. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1MeshT_ae13801eefa60ad08ff1da0df1da34784}{increment\+Warning} (std\+::map$<$ std\+::string, int $>$ \&a\+\_\+warnings, const std\+::string \&a\+\_\+warn) const noexcept -\begin{DoxyCompactList}\small\item\em Increment a warning. This is used in \hyperlink{classDcel_1_1MeshT_a1814ba63c6e0d7a007ee78c24d6ea159}{sanity\+Check()} for locating holes or bad inputs in the mesh. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a7115bea1b9d776a5f9c82a1e4fe852a0}\label{classDcel_1_1MeshT_a7115bea1b9d776a5f9c82a1e4fe852a0}} -void \hyperlink{classDcel_1_1MeshT_a7115bea1b9d776a5f9c82a1e4fe852a0}{print\+Warnings} (const std\+::map$<$ std\+::string, int $>$ \&a\+\_\+warnings) const noexcept -\begin{DoxyCompactList}\small\item\em Print all warnings to std\+::cerr. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1MeshT_aaa5bdf8df02aa8bcff84203467f86fbe}\label{classDcel_1_1MeshT_aaa5bdf8df02aa8bcff84203467f86fbe}} -\hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Search\+Algorithm} \hyperlink{classDcel_1_1MeshT_aaa5bdf8df02aa8bcff84203467f86fbe}{m\+\_\+algorithm} -\begin{DoxyCompactList}\small\item\em Search algorithm. Only used in signed distance functions. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a4263fd9ebba22b96e12ee9f046eca089}\label{classDcel_1_1MeshT_a4263fd9ebba22b96e12ee9f046eca089}} -std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \hyperlink{classDcel_1_1MeshT_a4263fd9ebba22b96e12ee9f046eca089}{m\+\_\+vertices} -\begin{DoxyCompactList}\small\item\em Mesh vertices. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a3325cb09037fa32255aa1a8a5536e473}\label{classDcel_1_1MeshT_a3325cb09037fa32255aa1a8a5536e473}} -std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \hyperlink{classDcel_1_1MeshT_a3325cb09037fa32255aa1a8a5536e473}{m\+\_\+edges} -\begin{DoxyCompactList}\small\item\em Mesh half-\/edges. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1MeshT_a17e08b2ee4b5b7b1dc3df974e792ca5f}\label{classDcel_1_1MeshT_a17e08b2ee4b5b7b1dc3df974e792ca5f}} -std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \hyperlink{classDcel_1_1MeshT_a17e08b2ee4b5b7b1dc3df974e792ca5f}{m\+\_\+faces} -\begin{DoxyCompactList}\small\item\em Mesh faces. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Mesh\+T$<$ T $>$} - -Mesh class which stores a full D\+C\+EL mesh (with signed distance functions) - -This encapsulates a full D\+C\+EL mesh, and also includes D\+I\+R\+E\+CT signed distance functions. The mesh consists of a set of vertices, half-\/edges, and polygon faces who each have references to other vertices, half-\/edges, and polygon faces. The signed distance functions D\+I\+R\+E\+CT, which means that they go through A\+LL of the polygon faces and compute the signed distance to them. This is extremely inefficient, which is why this class is almost always embedded into a bounding volume hierarchy. \begin{DoxyNote}{Note} -This class is not for the light of heart -- it will almost always be instantiated through a file parser which reads vertices and edges from file and builds the mesh from that. Do not try to build a \hyperlink{classDcel_1_1MeshT}{MeshT} object yourself, use file parsers! -\end{DoxyNote} - - -\subsection{Member Enumeration Documentation} -\mbox{\Hypertarget{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}\label{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!Search\+Algorithm@{Search\+Algorithm}} -\index{Search\+Algorithm@{Search\+Algorithm}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{Search\+Algorithm}{SearchAlgorithm}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -enum \hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Dcel\+::\+Mesh\+T\+::\+Search\+Algorithm}\hspace{0.3cm}{\ttfamily [strong]}} - - - -Possible search algorithms for \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}. - -Direct means compute the signed distance for all primitives, Direct2 means compute the squared signed distance for all primitives. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classDcel_1_1MeshT_aa055e10c62778ba629b3f9c849338e03}\label{classDcel_1_1MeshT_aa055e10c62778ba629b3f9c849338e03}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!MeshT@{MeshT}} -\index{MeshT@{MeshT}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{Mesh\+T()}{MeshT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::\hyperlink{classDcel_1_1MeshT}{MeshT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_abe9db973f4510ccb36e20ecfa9223926}{Mesh} \&}]{a\+\_\+other\+Mesh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} - - - -Disallowed copy construction. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other\+Mesh} & Other mesh \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1MeshT_a7468e3630893d64a71a7c2347496576b}\label{classDcel_1_1MeshT_a7468e3630893d64a71a7c2347496576b}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!MeshT@{MeshT}} -\index{MeshT@{MeshT}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{Mesh\+T()}{MeshT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::\hyperlink{classDcel_1_1MeshT}{MeshT} (\begin{DoxyParamCaption}\item[{std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \&}]{a\+\_\+faces, }\item[{std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \&}]{a\+\_\+edges, }\item[{std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \&}]{a\+\_\+vertices }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. This provides the faces, edges, and vertices to the mesh. - -Calls define(a\+\_\+faces, a\+\_\+edges, a\+\_\+vertices) -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+faces} & Polygon faces \\ -\hline -\mbox{\tt in} & {\em a\+\_\+edges} & Half-\/edges \\ -\hline -\mbox{\tt in} & {\em a\+\_\+vertices} & Vertices \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -The constructor arguments should provide a complete D\+C\+EL mesh description. This is usually done through a file parser which reads a mesh file format and creates the D\+C\+EL mesh structure -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1MeshT_af65f5fc459d586ba3b6bd0711b0951f5}\label{classDcel_1_1MeshT_af65f5fc459d586ba3b6bd0711b0951f5}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!define@{define}} -\index{define@{define}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a6c71642a9e6b36f9d6ab6027035625f0}{Face\+Ptr} $>$ \&}]{a\+\_\+faces, }\item[{std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_ab2b035530536a8bc56e40aab455f24e3}{Edge\+Ptr} $>$ \&}]{a\+\_\+edges, }\item[{std\+::vector$<$ \hyperlink{classDcel_1_1MeshT_a1e0abeadcb51e679b0dd9a36e2ee08c7}{Vertex\+Ptr} $>$ \&}]{a\+\_\+vertices }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Define function. Puts Mesh in usable state. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+faces} & Polygon faces \\ -\hline -\mbox{\tt in} & {\em a\+\_\+edges} & Half-\/edges \\ -\hline -\mbox{\tt in} & {\em a\+\_\+vertices} & Vertices \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -The function arguments should provide a complete D\+C\+EL mesh description. This is usually done through a file parser which reads a mesh file format and creates the D\+C\+EL mesh structure. Note that this only involves associating pointer structures through the mesh. Internal parameters like face area and normal is computed in \hyperlink{classDcel_1_1MeshT_a98d80b5f83b9d6ff55d0d0da34d0b422}{Mesh\+T$<$\+T$>$\+::reconcile}. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1MeshT_ada074ff3b1a612e46098f4ba6ca0bda2}\label{classDcel_1_1MeshT_ada074ff3b1a612e46098f4ba6ca0bda2}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!Direct\+Signed\+Distance@{Direct\+Signed\+Distance}} -\index{Direct\+Signed\+Distance@{Direct\+Signed\+Distance}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{Direct\+Signed\+Distance()}{DirectSignedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::Direct\+Signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Implementation of signed distance function which iterates through all faces. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1MeshT_ac00a6da46649246a3a2db70b29bb2407}\label{classDcel_1_1MeshT_ac00a6da46649246a3a2db70b29bb2407}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!Direct\+Signed\+Distance2@{Direct\+Signed\+Distance2}} -\index{Direct\+Signed\+Distance2@{Direct\+Signed\+Distance2}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{Direct\+Signed\+Distance2()}{DirectSignedDistance2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::Direct\+Signed\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Implementation of squared signed distance function which iterates through all faces. - -This first find the face with the smallest unsigned square distance, and the returns the signed distance to that face (more efficient than the other version). -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1MeshT_ae13801eefa60ad08ff1da0df1da34784}\label{classDcel_1_1MeshT_ae13801eefa60ad08ff1da0df1da34784}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!increment\+Warning@{increment\+Warning}} -\index{increment\+Warning@{increment\+Warning}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{increment\+Warning()}{incrementWarning()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::increment\+Warning (\begin{DoxyParamCaption}\item[{std\+::map$<$ std\+::string, int $>$ \&}]{a\+\_\+warnings, }\item[{const std\+::string \&}]{a\+\_\+warn }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Increment a warning. This is used in \hyperlink{classDcel_1_1MeshT_a1814ba63c6e0d7a007ee78c24d6ea159}{sanity\+Check()} for locating holes or bad inputs in the mesh. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+warnings} & Map of all registered warnings \\ -\hline -\mbox{\tt in} & {\em a\+\_\+warn} & Current warning to increment by \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1MeshT_a98d80b5f83b9d6ff55d0d0da34d0b422}\label{classDcel_1_1MeshT_a98d80b5f83b9d6ff55d0d0da34d0b422}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!reconcile@{reconcile}} -\index{reconcile@{reconcile}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{reconcile()}{reconcile()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::reconcile (\begin{DoxyParamCaption}\item[{typename \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::\hyperlink{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}{Vertex\+Normal\+Weight}}]{a\+\_\+weight = {\ttfamily VertexNormalWeight\+:\+:Angle} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Reconcile function which computes the internal parameters in vertices, edges, and faces for use with signed distance functionality. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+weight} & Vertex angle weighting function. Either Vertex\+Normal\+Weight\+::\+None for unweighted vertex normals or Vertex\+Normal\+Weight\+::\+Angle for the pseudonormal\\ -\hline -\end{DoxyParams} -This will reconcile faces, edges, and vertices, e.\+g. computing the area and normal vector for faces \mbox{\Hypertarget{classDcel_1_1MeshT_a33f6506c1daf9946d1f21117c0ab89d5}\label{classDcel_1_1MeshT_a33f6506c1daf9946d1f21117c0ab89d5}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!reconcile\+Edges@{reconcile\+Edges}} -\index{reconcile\+Edges@{reconcile\+Edges}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{reconcile\+Edges()}{reconcileEdges()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::reconcile\+Edges (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Function which computes internal things for the half-\/edges. - -\begin{DoxyNote}{Note} -This calls \hyperlink{classDcel_1_1EdgeT_ac4aaf294fd41c84ef2f7f54a8024e6dd}{Dcel\+::\+Edge\+T$<$\+T$>$\+::reconcile()} -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1MeshT_a5e31ae8b95c9ee725e205d8ae4fd35dc}\label{classDcel_1_1MeshT_a5e31ae8b95c9ee725e205d8ae4fd35dc}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!reconcile\+Faces@{reconcile\+Faces}} -\index{reconcile\+Faces@{reconcile\+Faces}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{reconcile\+Faces()}{reconcileFaces()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::reconcile\+Faces (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Function which computes internal things for the polygon faces. - -\begin{DoxyNote}{Note} -This calls \hyperlink{classDcel_1_1FaceT_aaf3f8b92ca4393391ea213b0ecfe19bd}{Dcel\+::\+Face\+T$<$\+T$>$\+::reconcile()} -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1MeshT_ad2b65aa214d51ecd438bc876e7255290}\label{classDcel_1_1MeshT_ad2b65aa214d51ecd438bc876e7255290}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!reconcile\+Vertices@{reconcile\+Vertices}} -\index{reconcile\+Vertices@{reconcile\+Vertices}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{reconcile\+Vertices()}{reconcileVertices()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::reconcile\+Vertices (\begin{DoxyParamCaption}\item[{typename \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::\hyperlink{classDcel_1_1MeshT_a0cd3a02853cf4fcc34a0816368ed4dc0}{Vertex\+Normal\+Weight}}]{a\+\_\+weight }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} - - - -Function which computes internal things for the vertices. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+weight} & Vertex angle weighting \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This calls \hyperlink{classDcel_1_1VertexT_adb439515e1814e3fdd9d040b9c1b22df}{Dcel\+::\+Vertex\+T$<$\+T$>$\+::compute\+Vertex\+Normal\+Average()} or \hyperlink{classDcel_1_1VertexT_aa9e66780ec134afe94d9e5a8221fdc0e}{Dcel\+::\+Vertex\+T$<$\+T$>$\+::compute\+Vertex\+Normal\+Angle\+Weighted()} -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1MeshT_a1814ba63c6e0d7a007ee78c24d6ea159}\label{classDcel_1_1MeshT_a1814ba63c6e0d7a007ee78c24d6ea159}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!sanity\+Check@{sanity\+Check}} -\index{sanity\+Check@{sanity\+Check}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{sanity\+Check()}{sanityCheck()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::sanity\+Check (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Perform a sanity check. - -This will provide error messages if vertices are badly linked, faces are nullptr, and so on. These messages are logged by calling \hyperlink{classDcel_1_1MeshT_ae13801eefa60ad08ff1da0df1da34784}{increment\+Warning()} which identifies types of errors that can occur, and how many of those errors have occured. \mbox{\Hypertarget{classDcel_1_1MeshT_a1e46a744a2526e451229e2f2e4830ca5}\label{classDcel_1_1MeshT_a1e46a744a2526e451229e2f2e4830ca5}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!set\+Inside\+Outside\+Algorithm@{set\+Inside\+Outside\+Algorithm}} -\index{set\+Inside\+Outside\+Algorithm@{set\+Inside\+Outside\+Algorithm}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{set\+Inside\+Outside\+Algorithm()}{setInsideOutsideAlgorithm()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::set\+Inside\+Outside\+Algorithm (\begin{DoxyParamCaption}\item[{typename \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::Inside\+Outside\+Algorithm}]{a\+\_\+algorithm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the inside/outside algorithm to use when computing the signed distance to polygon faces. - -Computing the signed distance to faces requires testing if a point projected to a polygo face plane falls inside or outside the polygon face. There are multiple algorithms to use here. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+algorithm} & Algorithm to use \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1MeshT_abc7a2bd7632be06c0ad9cf49816d262f}\label{classDcel_1_1MeshT_abc7a2bd7632be06c0ad9cf49816d262f}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!set\+Search\+Algorithm@{set\+Search\+Algorithm}} -\index{set\+Search\+Algorithm@{set\+Search\+Algorithm}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{set\+Search\+Algorithm()}{setSearchAlgorithm()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::set\+Search\+Algorithm (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Search\+Algorithm}}]{a\+\_\+algorithm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Search algorithm for direct signed distance computations. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+algorithm} & Algorithm to use \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1MeshT_aa6f614aa0d93c3345c10150168347497}\label{classDcel_1_1MeshT_aa6f614aa0d93c3345c10150168347497}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the signed distance from a point to this mesh. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point in space.\\ -\hline -\end{DoxyParams} -This function will iterate through A\+LL faces in the mesh and return the value with the smallest magnitude. This is horrendously slow, which is why this function is almost never called. Rather, Mesh\+T$<$\+T$>$ can be embedded in a bounding volume hierarchy for faster access. \begin{DoxyNote}{Note} -This will call the other version with the object\textquotesingle{}s search algorithm. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1MeshT_a4fa40378fbd4c31cd50e77da70ef30fd}\label{classDcel_1_1MeshT_a4fa40378fbd4c31cd50e77da70ef30fd}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&}]{a\+\_\+x0, }\item[{\hyperlink{classDcel_1_1MeshT_abb4c3bb7a52804bb041c133f30151399}{Search\+Algorithm}}]{a\+\_\+algorithm }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the signed distance from a point to this mesh. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point in space. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+algorithm} & Search algorithm\\ -\hline -\end{DoxyParams} -This function will iterate through A\+LL faces in the mesh and return the value with the smallest magnitude. This is horrendously slow, which is why this function is almost never called. Rather, Mesh\+T$<$\+T$>$ can be embedded in a bounding volume hierarchy for faster access. \mbox{\Hypertarget{classDcel_1_1MeshT_a8be4c3d6f606b8bc8cc36820de773de1}\label{classDcel_1_1MeshT_a8be4c3d6f606b8bc8cc36820de773de1}} -\index{Dcel\+::\+MeshT@{Dcel\+::\+MeshT}!unsigned\+Distance2@{unsigned\+Distance2}} -\index{unsigned\+Distance2@{unsigned\+Distance2}!Dcel\+::\+MeshT@{Dcel\+::\+MeshT}} -\subsubsection{\texorpdfstring{unsigned\+Distance2()}{unsignedDistance2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1MeshT}{Dcel\+::\+MeshT}$<$ T $>$\+::unsigned\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1MeshT_a646c5d8f66b3079bca35fe4186493627}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the unsigned square distance from a point to this mesh. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point in space.\\ -\hline -\end{DoxyParams} -This function will iterate through A\+LL faces in the mesh and return the value with the smallest magnitude. This is horrendously slow, which is why this function is almost never called. Rather, Mesh\+T$<$\+T$>$ can be embedded in a bounding volume hierarchy for faster access. \begin{DoxyNote}{Note} -This will call the other version with the object\textquotesingle{}s search algorithm. -\end{DoxyNote} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelMeshImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classDcel_1_1Parser_1_1PLY.tex b/docs/doxygen/latex/classDcel_1_1Parser_1_1PLY.tex deleted file mode 100644 index 2ffb3363..00000000 --- a/docs/doxygen/latex/classDcel_1_1Parser_1_1PLY.tex +++ /dev/null @@ -1,187 +0,0 @@ -\hypertarget{classDcel_1_1Parser_1_1PLY}{}\section{Dcel\+:\+:Parser\+:\+:P\+LY$<$ T $>$ Class Template Reference} -\label{classDcel_1_1Parser_1_1PLY}\index{Dcel\+::\+Parser\+::\+P\+L\+Y$<$ T $>$@{Dcel\+::\+Parser\+::\+P\+L\+Y$<$ T $>$}} - - -Class for generation a Dcel\+::\+Mesh\+T$<$\+T$>$ from the Stanford \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} file format. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}\label{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}} -using \hyperlink{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}{Vertex} = \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}\label{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}} -using \hyperlink{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}{Edge} = \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_ac67854dee5613f4e877e8caddb4580f3}\label{classDcel_1_1Parser_1_1PLY_ac67854dee5613f4e877e8caddb4580f3}} -using \hyperlink{classDcel_1_1Parser_1_1PLY_ac67854dee5613f4e877e8caddb4580f3}{Face} = \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_a047f135a59b43a0fb84f3629a790bba4}\label{classDcel_1_1Parser_1_1PLY_a047f135a59b43a0fb84f3629a790bba4}} -using \hyperlink{classDcel_1_1Parser_1_1PLY_a047f135a59b43a0fb84f3629a790bba4}{Mesh} = \hyperlink{classDcel_1_1MeshT}{MeshT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_aa0a9888ee0a1539928e6c1ffdda299a8}\label{classDcel_1_1Parser_1_1PLY_aa0a9888ee0a1539928e6c1ffdda299a8}} -using \hyperlink{classDcel_1_1Parser_1_1PLY_aa0a9888ee0a1539928e6c1ffdda299a8}{Edge\+Iterator} = \hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Static Public Member Functions} -\begin{DoxyCompactItemize} -\item -static std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_a047f135a59b43a0fb84f3629a790bba4}{Mesh} $>$ \hyperlink{classDcel_1_1Parser_1_1PLY_aaf13b770fe4d9cfc4e419af7418fc35c}{read\+A\+S\+C\+II} (const std\+::string a\+\_\+filename) -\begin{DoxyCompactList}\small\item\em Static function which reads an A\+S\+C\+II .ply file and returns a D\+C\+EL mesh. \end{DoxyCompactList}\item -static void \hyperlink{classDcel_1_1Parser_1_1PLY_a280f083c1901248de1c69321783ad9d1}{read\+A\+S\+C\+II} (\hyperlink{classDcel_1_1Parser_1_1PLY_a047f135a59b43a0fb84f3629a790bba4}{Mesh} \&a\+\_\+mesh, const std\+::string a\+\_\+filename) -\begin{DoxyCompactList}\small\item\em Static function which reads an A\+S\+C\+II .ply file and puts it in a mesh. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Static Protected Member Functions} -\begin{DoxyCompactItemize} -\item -static void \hyperlink{classDcel_1_1Parser_1_1PLY_aa8741e334f6c350e1269a42ee1022e57}{read\+Header\+A\+S\+C\+II} (int \&a\+\_\+num\+Vertices, int \&a\+\_\+num\+Faces, std\+::ifstream \&a\+\_\+input\+Stream) -\begin{DoxyCompactList}\small\item\em Read an A\+S\+C\+II header. \end{DoxyCompactList}\item -static void \hyperlink{classDcel_1_1Parser_1_1PLY_a755c28a17a836a05af31991a87212df0}{read\+Vertices\+A\+S\+C\+II} (std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}{Vertex} $>$ $>$ \&a\+\_\+vertices, const int a\+\_\+num\+Vertices, std\+::ifstream \&a\+\_\+input\+Stream) -\begin{DoxyCompactList}\small\item\em Read A\+S\+C\+II vertices. \end{DoxyCompactList}\item -static void \hyperlink{classDcel_1_1Parser_1_1PLY_ae54284d1c7c18a584bd14678763a58e7}{read\+Faces\+A\+S\+C\+II} (std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_ac67854dee5613f4e877e8caddb4580f3}{Face} $>$ $>$ \&a\+\_\+faces, std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}{Edge} $>$ $>$ \&a\+\_\+edges, const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}{Vertex} $>$ $>$ \&a\+\_\+vertices, const int a\+\_\+num\+Faces, std\+::ifstream \&a\+\_\+input\+Stream) -\begin{DoxyCompactList}\small\item\em Read A\+S\+C\+II faces and create mesh connectivity. \end{DoxyCompactList}\item -static void \hyperlink{classDcel_1_1Parser_1_1PLY_afaceb1664b12f30599fe68faba6ca725}{reconcile\+Pair\+Edges} (std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}{Edge} $>$ $>$ \&a\+\_\+edges) -\begin{DoxyCompactList}\small\item\em Reconcile pair edges, i.\+e. find the pair edge for every constructed half-\/edge. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Parser\+::\+P\+L\+Y$<$ T $>$} - -Class for generation a Dcel\+::\+Mesh\+T$<$\+T$>$ from the Stanford \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} file format. - -\begin{DoxyNote}{Note} -T is the precision used for storing the mesh. -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_aaf13b770fe4d9cfc4e419af7418fc35c}\label{classDcel_1_1Parser_1_1PLY_aaf13b770fe4d9cfc4e419af7418fc35c}} -\index{Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}!read\+A\+S\+C\+II@{read\+A\+S\+C\+II}} -\index{read\+A\+S\+C\+II@{read\+A\+S\+C\+II}!Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}} -\subsubsection{\texorpdfstring{read\+A\+S\+C\+I\+I()}{readASCII()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -std\+::shared\+\_\+ptr$<$ E\+B\+Geometry\+::\+Dcel\+::\+MeshT$<$ T $>$ $>$ \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+LY}$<$ T $>$\+::read\+A\+S\+C\+II (\begin{DoxyParamCaption}\item[{const std\+::string}]{a\+\_\+filename }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} - - - -Static function which reads an A\+S\+C\+II .ply file and returns a D\+C\+EL mesh. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+filename} & File name \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_a280f083c1901248de1c69321783ad9d1}\label{classDcel_1_1Parser_1_1PLY_a280f083c1901248de1c69321783ad9d1}} -\index{Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}!read\+A\+S\+C\+II@{read\+A\+S\+C\+II}} -\index{read\+A\+S\+C\+II@{read\+A\+S\+C\+II}!Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}} -\subsubsection{\texorpdfstring{read\+A\+S\+C\+I\+I()}{readASCII()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+LY}$<$ T $>$\+::read\+A\+S\+C\+II (\begin{DoxyParamCaption}\item[{\hyperlink{classDcel_1_1Parser_1_1PLY_a047f135a59b43a0fb84f3629a790bba4}{Mesh} \&}]{a\+\_\+mesh, }\item[{const std\+::string}]{a\+\_\+filename }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} - - - -Static function which reads an A\+S\+C\+II .ply file and puts it in a mesh. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt out} & {\em a\+\_\+mesh} & D\+C\+EL mesh \\ -\hline -\mbox{\tt in} & {\em a\+\_\+filename} & File name \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_ae54284d1c7c18a584bd14678763a58e7}\label{classDcel_1_1Parser_1_1PLY_ae54284d1c7c18a584bd14678763a58e7}} -\index{Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}!read\+Faces\+A\+S\+C\+II@{read\+Faces\+A\+S\+C\+II}} -\index{read\+Faces\+A\+S\+C\+II@{read\+Faces\+A\+S\+C\+II}!Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}} -\subsubsection{\texorpdfstring{read\+Faces\+A\+S\+C\+I\+I()}{readFacesASCII()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+LY}$<$ T $>$\+::read\+Faces\+A\+S\+C\+II (\begin{DoxyParamCaption}\item[{std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_ac67854dee5613f4e877e8caddb4580f3}{Face} $>$ $>$ \&}]{a\+\_\+faces, }\item[{std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}{Edge} $>$ $>$ \&}]{a\+\_\+edges, }\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}{Vertex} $>$ $>$ \&}]{a\+\_\+vertices, }\item[{const int}]{a\+\_\+num\+Faces, }\item[{std\+::ifstream \&}]{a\+\_\+input\+Stream }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [protected]}} - - - -Read A\+S\+C\+II faces and create mesh connectivity. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt out} & {\em a\+\_\+faces} & D\+C\+EL faces. Constructured in this routine. \\ -\hline -\mbox{\tt out} & {\em a\+\_\+edges} & D\+C\+EL edges. Constructured in this routine. \\ -\hline -\mbox{\tt out} & {\em a\+\_\+vertices} & D\+C\+EL edges. Constructured in read\+Vertices\+A\+S\+C\+II. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+num\+Faces} & Total number of faces in mesh. \\ -\hline -\mbox{\tt in,out} & {\em a\+\_\+input\+Stream} & Input stream \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -The next getline() from input\+Stream must read the first face, i.\+e. we assume that read\+\_\+ascii\+\_\+vertices was called I\+M\+M\+E\+D\+I\+A\+T\+E\+LY before this function. That function will center the fstream on the correct line in the input file. -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_aa8741e334f6c350e1269a42ee1022e57}\label{classDcel_1_1Parser_1_1PLY_aa8741e334f6c350e1269a42ee1022e57}} -\index{Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}!read\+Header\+A\+S\+C\+II@{read\+Header\+A\+S\+C\+II}} -\index{read\+Header\+A\+S\+C\+II@{read\+Header\+A\+S\+C\+II}!Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}} -\subsubsection{\texorpdfstring{read\+Header\+A\+S\+C\+I\+I()}{readHeaderASCII()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+LY}$<$ T $>$\+::read\+Header\+A\+S\+C\+II (\begin{DoxyParamCaption}\item[{int \&}]{a\+\_\+num\+Vertices, }\item[{int \&}]{a\+\_\+num\+Faces, }\item[{std\+::ifstream \&}]{a\+\_\+input\+Stream }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [protected]}} - - - -Read an A\+S\+C\+II header. - -This reads the number of vertices and faces in the \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} file. Note that it only reads the header. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt out} & {\em a\+\_\+num\+Vertices} & Number of vertices \\ -\hline -\mbox{\tt out} & {\em a\+\_\+num\+Faces} & Number of faces \\ -\hline -\mbox{\tt in,out} & {\em a\+\_\+input\+Stream} & File stream. On output, the filestream is at the end of the \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} header. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_a755c28a17a836a05af31991a87212df0}\label{classDcel_1_1Parser_1_1PLY_a755c28a17a836a05af31991a87212df0}} -\index{Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}!read\+Vertices\+A\+S\+C\+II@{read\+Vertices\+A\+S\+C\+II}} -\index{read\+Vertices\+A\+S\+C\+II@{read\+Vertices\+A\+S\+C\+II}!Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}} -\subsubsection{\texorpdfstring{read\+Vertices\+A\+S\+C\+I\+I()}{readVerticesASCII()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+LY}$<$ T $>$\+::read\+Vertices\+A\+S\+C\+II (\begin{DoxyParamCaption}\item[{std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_acbecc13804a702a6bf2687d9bf5d7989}{Vertex} $>$ $>$ \&}]{a\+\_\+vertices, }\item[{const int}]{a\+\_\+num\+Vertices, }\item[{std\+::ifstream \&}]{a\+\_\+input\+Stream }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [protected]}} - - - -Read A\+S\+C\+II vertices. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt out} & {\em a\+\_\+vertices} & D\+C\+EL vertices. These are constructed in this routine. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+num\+Vertices} & Number of vertices to read \\ -\hline -\mbox{\tt in} & {\em a\+\_\+input\+Stream} & Input file stream. \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -The next getline() from a\+\_\+input\+Stream must read the first vertex (i.\+e. don\textquotesingle{}t rewind the stream before entering this routine) -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1Parser_1_1PLY_afaceb1664b12f30599fe68faba6ca725}\label{classDcel_1_1Parser_1_1PLY_afaceb1664b12f30599fe68faba6ca725}} -\index{Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}!reconcile\+Pair\+Edges@{reconcile\+Pair\+Edges}} -\index{reconcile\+Pair\+Edges@{reconcile\+Pair\+Edges}!Dcel\+::\+Parser\+::\+P\+LY@{Dcel\+::\+Parser\+::\+P\+LY}} -\subsubsection{\texorpdfstring{reconcile\+Pair\+Edges()}{reconcilePairEdges()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1Parser_1_1PLY}{Dcel\+::\+Parser\+::\+P\+LY}$<$ T $>$\+::reconcile\+Pair\+Edges (\begin{DoxyParamCaption}\item[{std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1Parser_1_1PLY_af3741c96a8a8434780665641912ff1d4}{Edge} $>$ $>$ \&}]{a\+\_\+edges }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [protected]}} - - - -Reconcile pair edges, i.\+e. find the pair edge for every constructed half-\/edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in,out} & {\em a\+\_\+edges} & Half edges. \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelParserImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classDcel_1_1Polygon2D.tex b/docs/doxygen/latex/classDcel_1_1Polygon2D.tex deleted file mode 100644 index 10057797..00000000 --- a/docs/doxygen/latex/classDcel_1_1Polygon2D.tex +++ /dev/null @@ -1,159 +0,0 @@ -\hypertarget{classDcel_1_1Polygon2D}{}\section{Dcel\+:\+:Polygon2D$<$ T $>$ Class Template Reference} -\label{classDcel_1_1Polygon2D}\index{Dcel\+::\+Polygon2\+D$<$ T $>$@{Dcel\+::\+Polygon2\+D$<$ T $>$}} - - -Class for embedding a D\+C\+EL polygon face into 2D. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1Polygon2D_a1ec8170036eb8dd1cedbe1b4d31024b4}\label{classDcel_1_1Polygon2D_a1ec8170036eb8dd1cedbe1b4d31024b4}} -enum \hyperlink{classDcel_1_1Polygon2D_a1ec8170036eb8dd1cedbe1b4d31024b4}{Inside\+Outside\+Algorithm} \{ {\bfseries Subtended\+Angle}, -{\bfseries Crossing\+Number}, -{\bfseries Winding\+Number} - \}\begin{DoxyCompactList}\small\item\em Supported algorithms for performing inside/outside tests when checking if a point projects to the inside or outside of a polygon face. \end{DoxyCompactList} -\item -\mbox{\Hypertarget{classDcel_1_1Polygon2D_ab70ec33cb6418fa0204f0d951dfd01fb}\label{classDcel_1_1Polygon2D_ab70ec33cb6418fa0204f0d951dfd01fb}} -using \hyperlink{classDcel_1_1Polygon2D_ab70ec33cb6418fa0204f0d951dfd01fb}{Vec2} = \hyperlink{classVec2T}{Vec2T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}\label{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}} -using \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1Polygon2D_a241e98b67756178d5b8d028b6264a6c2}\label{classDcel_1_1Polygon2D_a241e98b67756178d5b8d028b6264a6c2}} -\hyperlink{classDcel_1_1Polygon2D_a241e98b67756178d5b8d028b6264a6c2}{Polygon2D} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed constructor, use the one with the normal vector and points. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1Polygon2D_adcd7eb98f174260e21d0185deb44d628}{Polygon2D} (const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&a\+\_\+normal, const std\+::vector$<$ \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} $>$ \&a\+\_\+points) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1Polygon2D_a0c605c847f830faf8a9f4fbc7a5c5a12}\label{classDcel_1_1Polygon2D_a0c605c847f830faf8a9f4fbc7a5c5a12}} -\hyperlink{classDcel_1_1Polygon2D_a0c605c847f830faf8a9f4fbc7a5c5a12}{$\sim$\+Polygon2D} ()=default -\begin{DoxyCompactList}\small\item\em Destructor (does nothing. \end{DoxyCompactList}\item -bool \hyperlink{classDcel_1_1Polygon2D_ade475a82be10cbacf382016e85316853}{is\+Point\+Inside} (const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&a\+\_\+point, const \hyperlink{classDcel_1_1Polygon2D_a1ec8170036eb8dd1cedbe1b4d31024b4}{Inside\+Outside\+Algorithm} a\+\_\+algorithm) const noexcept -\begin{DoxyCompactList}\small\item\em Check if a point is inside or outside the 2D polygon. \end{DoxyCompactList}\item -bool \hyperlink{classDcel_1_1Polygon2D_ad4d6b51a54f6a9c89812a5bcbc0e1902}{is\+Point\+Inside\+Polygon\+Winding\+Number} (const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Check if a point is inside a 2D polygon, using the winding number algorithm. \end{DoxyCompactList}\item -bool \hyperlink{classDcel_1_1Polygon2D_a8a6a32defe11ad15996e286aa76d4428}{is\+Point\+Inside\+Polygon\+Subtend} (const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Check if a point is inside a 2D polygon, using the subtended angles. \end{DoxyCompactList}\item -bool \hyperlink{classDcel_1_1Polygon2D_aa1edee7ad8913b35663792624e914aad}{is\+Point\+Inside\+Polygon\+Crossing\+Number} (const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Check if a point is inside a 2D polygon, by computing the number of times a ray crosses the polygon edges. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Polygon2\+D$<$ T $>$} - -Class for embedding a D\+C\+EL polygon face into 2D. - -This class is required for determining whether or not a 3D point projected to the plane of an N-\/sided polygon lies inside or outside the polygon face. To do this we compute the 2D embedding of the polygon face, reducing the problem to a tractable dimension where we can use well-\/tested algorithm. The 2D embedding of a polygon occurs by taking a set of 3D points and a corresponding normal vector, and projecting those points along one of the 3D Cartesian axes such that the polygon has the largest area. In essence, we simply find the direction with the smallest normal vector component and ignore that. Once the 2D embedding is computed, we can use well-\/known algorithms for checking if a point lies inside or outside. The supported algorithms are 1) The winding number algorithm (computing the winding number), 2) Computing the subtended angle of the point with the edges of the polygon (sums to 360 degrees if the point is inside), or computing the crossing number which checks how many times a ray cast from the point crosses the edges of the polygon. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classDcel_1_1Polygon2D_adcd7eb98f174260e21d0185deb44d628}\label{classDcel_1_1Polygon2D_adcd7eb98f174260e21d0185deb44d628}} -\index{Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}!Polygon2D@{Polygon2D}} -\index{Polygon2D@{Polygon2D}!Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}} -\subsubsection{\texorpdfstring{Polygon2\+D()}{Polygon2D()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::\hyperlink{classDcel_1_1Polygon2D}{Polygon2D} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&}]{a\+\_\+normal, }\item[{const std\+::vector$<$ \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} $>$ \&}]{a\+\_\+points }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+normal} & Normal vector of the 3D polygon face \\ -\hline -\mbox{\tt in} & {\em a\+\_\+points} & Vertex coordinates of the 3D polygon face \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1Polygon2D_ade475a82be10cbacf382016e85316853}\label{classDcel_1_1Polygon2D_ade475a82be10cbacf382016e85316853}} -\index{Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}!is\+Point\+Inside@{is\+Point\+Inside}} -\index{is\+Point\+Inside@{is\+Point\+Inside}!Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}} -\subsubsection{\texorpdfstring{is\+Point\+Inside()}{isPointInside()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::is\+Point\+Inside (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&}]{a\+\_\+point, }\item[{const \hyperlink{classDcel_1_1Polygon2D_a1ec8170036eb8dd1cedbe1b4d31024b4}{Inside\+Outside\+Algorithm}}]{a\+\_\+algorithm }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if a point is inside or outside the 2D polygon. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point coordinates \\ -\hline -\mbox{\tt in} & {\em a\+\_\+algorithm} & Inside/outside algorithm\\ -\hline -\end{DoxyParams} -This will call the function corresponding to a\+\_\+algorithm. \mbox{\Hypertarget{classDcel_1_1Polygon2D_aa1edee7ad8913b35663792624e914aad}\label{classDcel_1_1Polygon2D_aa1edee7ad8913b35663792624e914aad}} -\index{Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}!is\+Point\+Inside\+Polygon\+Crossing\+Number@{is\+Point\+Inside\+Polygon\+Crossing\+Number}} -\index{is\+Point\+Inside\+Polygon\+Crossing\+Number@{is\+Point\+Inside\+Polygon\+Crossing\+Number}!Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}} -\subsubsection{\texorpdfstring{is\+Point\+Inside\+Polygon\+Crossing\+Number()}{isPointInsidePolygonCrossingNumber()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::is\+Point\+Inside\+Polygon\+Crossing\+Number (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if a point is inside a 2D polygon, by computing the number of times a ray crosses the polygon edges. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point coordinates \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns true if the 3D point projects to the inside of the 2D polygon -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1Polygon2D_a8a6a32defe11ad15996e286aa76d4428}\label{classDcel_1_1Polygon2D_a8a6a32defe11ad15996e286aa76d4428}} -\index{Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}!is\+Point\+Inside\+Polygon\+Subtend@{is\+Point\+Inside\+Polygon\+Subtend}} -\index{is\+Point\+Inside\+Polygon\+Subtend@{is\+Point\+Inside\+Polygon\+Subtend}!Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}} -\subsubsection{\texorpdfstring{is\+Point\+Inside\+Polygon\+Subtend()}{isPointInsidePolygonSubtend()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::is\+Point\+Inside\+Polygon\+Subtend (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if a point is inside a 2D polygon, using the subtended angles. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point coordinates \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns true if the 3D point projects to the inside of the 2D polygon -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1Polygon2D_ad4d6b51a54f6a9c89812a5bcbc0e1902}\label{classDcel_1_1Polygon2D_ad4d6b51a54f6a9c89812a5bcbc0e1902}} -\index{Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}!is\+Point\+Inside\+Polygon\+Winding\+Number@{is\+Point\+Inside\+Polygon\+Winding\+Number}} -\index{is\+Point\+Inside\+Polygon\+Winding\+Number@{is\+Point\+Inside\+Polygon\+Winding\+Number}!Dcel\+::\+Polygon2D@{Dcel\+::\+Polygon2D}} -\subsubsection{\texorpdfstring{is\+Point\+Inside\+Polygon\+Winding\+Number()}{isPointInsidePolygonWindingNumber()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classDcel_1_1Polygon2D}{Dcel\+::\+Polygon2D}$<$ T $>$\+::is\+Point\+Inside\+Polygon\+Winding\+Number (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1Polygon2D_a46e9686210f09464e8f5ad13300717b9}{Vec3} \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if a point is inside a 2D polygon, using the winding number algorithm. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point coordinates \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns true if the 3D point projects to the inside of the 2D polygon -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelPolygon2D_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelPolygon2DImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classDcel_1_1VertexT.tex b/docs/doxygen/latex/classDcel_1_1VertexT.tex deleted file mode 100644 index 70e268b9..00000000 --- a/docs/doxygen/latex/classDcel_1_1VertexT.tex +++ /dev/null @@ -1,371 +0,0 @@ -\hypertarget{classDcel_1_1VertexT}{}\section{Dcel\+:\+:VertexT$<$ T $>$ Class Template Reference} -\label{classDcel_1_1VertexT}\index{Dcel\+::\+Vertex\+T$<$ T $>$@{Dcel\+::\+Vertex\+T$<$ T $>$}} - - -Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}\label{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}} -using \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a2c8a221a9f03e9bafa891bd0759b4f8f}\label{classDcel_1_1VertexT_a2c8a221a9f03e9bafa891bd0759b4f8f}} -using \hyperlink{classDcel_1_1VertexT_a2c8a221a9f03e9bafa891bd0759b4f8f}{Vertex} = \hyperlink{classDcel_1_1VertexT}{VertexT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_abe1079747424916a164ec68b46333fc3}\label{classDcel_1_1VertexT_abe1079747424916a164ec68b46333fc3}} -using \hyperlink{classDcel_1_1VertexT_abe1079747424916a164ec68b46333fc3}{Edge} = \hyperlink{classDcel_1_1EdgeT}{EdgeT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a455510a8591a4e0f235b2049deb96e08}\label{classDcel_1_1VertexT_a455510a8591a4e0f235b2049deb96e08}} -using \hyperlink{classDcel_1_1VertexT_a455510a8591a4e0f235b2049deb96e08}{Face} = \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_aa7d02695a42762b98a66c559e6d3d849}\label{classDcel_1_1VertexT_aa7d02695a42762b98a66c559e6d3d849}} -using \hyperlink{classDcel_1_1VertexT_aa7d02695a42762b98a66c559e6d3d849}{Vertex\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT_a2c8a221a9f03e9bafa891bd0759b4f8f}{Vertex} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. Note that this is std\+::shared\+\_\+ptr$<$Vertex\+T$<$\+T$>$ $>$ \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}\label{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}} -using \hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT_abe1079747424916a164ec68b46333fc3}{Edge} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. Note that this is std\+::shared\+\_\+ptr$<$Edge\+T$<$\+T$>$ $>$ \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}\label{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}} -using \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} = std\+::shared\+\_\+ptr$<$ \hyperlink{classDcel_1_1VertexT_a455510a8591a4e0f235b2049deb96e08}{Face} $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. Note that this is std\+::shared\+\_\+ptr$<$Face\+T$<$\+T$>$ $>$ \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_abf182ec635351e107cd474df25b6ba73}\label{classDcel_1_1VertexT_abf182ec635351e107cd474df25b6ba73}} -using \hyperlink{classDcel_1_1VertexT_abf182ec635351e107cd474df25b6ba73}{Edge\+Iterator} = \hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. Note that this is std\+::shared\+\_\+ptr$<$Edge\+Iterator\+T$<$\+T$>$ $>$ \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\hyperlink{classDcel_1_1VertexT_ab93f0a7a59fa9d78d89d1b0e97451ce7}{VertexT} () -\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1VertexT_ade01d01c6a145c31c6f46dccc902cfae}{VertexT} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+position) -\begin{DoxyCompactList}\small\item\em Partial constructor. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1VertexT_a90d3c97e605b8084667a85ddfb4ba8bc}{VertexT} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+position, const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+normal) -\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item -\hyperlink{classDcel_1_1VertexT_ac904e9902633915706d81122e72aa847}{VertexT} (const \hyperlink{classDcel_1_1VertexT_a2c8a221a9f03e9bafa891bd0759b4f8f}{Vertex} \&a\+\_\+other\+Vertex) -\begin{DoxyCompactList}\small\item\em Full copy constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_ab0a8e0aa0960f68177e115b897283a1c}\label{classDcel_1_1VertexT_ab0a8e0aa0960f68177e115b897283a1c}} -\hyperlink{classDcel_1_1VertexT_ab0a8e0aa0960f68177e115b897283a1c}{$\sim$\+VertexT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_a20a894d436707a4205501bbc5cd72323}{define} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+position, const \hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \&a\+\_\+edge, const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+normal) noexcept -\begin{DoxyCompactList}\small\item\em Define function. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_a9c7d9a23275e5e3165eb8c6018b55a7e}{set\+Position} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+position) noexcept -\begin{DoxyCompactList}\small\item\em Set the vertex position. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_a3bffe6c4f0d0766cdd7a4bb3a6050cb4}{set\+Normal} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+normal) noexcept -\begin{DoxyCompactList}\small\item\em Set the vertex normal vector. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_a4ac13c49c61857ea7d0990212b43ca41}{set\+Edge} (const \hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \&a\+\_\+edge) noexcept -\begin{DoxyCompactList}\small\item\em Set the reference to the outgoing edge. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_a032c39370f08bbc27f3da35ee0873409}{add\+Face} (const \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} \&a\+\_\+face) noexcept -\begin{DoxyCompactList}\small\item\em Add a face to the polygon face list. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a5926f14833074dfa2acf28a3e5c36f46}\label{classDcel_1_1VertexT_a5926f14833074dfa2acf28a3e5c36f46}} -void \hyperlink{classDcel_1_1VertexT_a5926f14833074dfa2acf28a3e5c36f46}{normalize\+Normal\+Vector} () noexcept -\begin{DoxyCompactList}\small\item\em Normalize the normal vector, ensuring its length is 1. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_adb439515e1814e3fdd9d040b9c1b22df}\label{classDcel_1_1VertexT_adb439515e1814e3fdd9d040b9c1b22df}} -void \hyperlink{classDcel_1_1VertexT_adb439515e1814e3fdd9d040b9c1b22df}{compute\+Vertex\+Normal\+Average} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the vertex normal, using an average the normal vector in this vertex\textquotesingle{}s face list (m\+\_\+faces) \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_a6faffb2c5038d62c2f7866736ebe7393}{compute\+Vertex\+Normal\+Average} (const std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \&a\+\_\+faces) noexcept -\begin{DoxyCompactList}\small\item\em Compute the vertex normal, using an average of the normal vectors in the input face list. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_aa9e66780ec134afe94d9e5a8221fdc0e}{compute\+Vertex\+Normal\+Angle\+Weighted} () noexcept -\begin{DoxyCompactList}\small\item\em Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face. \end{DoxyCompactList}\item -void \hyperlink{classDcel_1_1VertexT_aea793773eec08852108d3bd5c4eea5a9}{compute\+Vertex\+Normal\+Angle\+Weighted} (const std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \&a\+\_\+faces) noexcept -\begin{DoxyCompactList}\small\item\em Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_af3ecf093a2fc7fd0f728d463ccacb8ce}\label{classDcel_1_1VertexT_af3ecf093a2fc7fd0f728d463ccacb8ce}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1VertexT_af3ecf093a2fc7fd0f728d463ccacb8ce}{get\+Position} () noexcept -\begin{DoxyCompactList}\small\item\em Return modifiable vertex position. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a7a4c3e499c6f7e529cc556eecf94f3fe}\label{classDcel_1_1VertexT_a7a4c3e499c6f7e529cc556eecf94f3fe}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1VertexT_a7a4c3e499c6f7e529cc556eecf94f3fe}{get\+Position} () const noexcept -\begin{DoxyCompactList}\small\item\em Return immutable vertex position. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a11d1c90ccfa44b5ea121223bd86214c9}\label{classDcel_1_1VertexT_a11d1c90ccfa44b5ea121223bd86214c9}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1VertexT_a11d1c90ccfa44b5ea121223bd86214c9}{get\+Normal} () noexcept -\begin{DoxyCompactList}\small\item\em Return modifiable vertex normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a6d2d15dff96e192dff0254d40e1927b7}\label{classDcel_1_1VertexT_a6d2d15dff96e192dff0254d40e1927b7}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classDcel_1_1VertexT_a6d2d15dff96e192dff0254d40e1927b7}{get\+Normal} () const noexcept -\begin{DoxyCompactList}\small\item\em Return immutable vertex normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_ae310f38b6e5b9bb4bae4633117a26708}\label{classDcel_1_1VertexT_ae310f38b6e5b9bb4bae4633117a26708}} -\hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \& \hyperlink{classDcel_1_1VertexT_ae310f38b6e5b9bb4bae4633117a26708}{get\+Outgoing\+Edge} () noexcept -\begin{DoxyCompactList}\small\item\em Return modifiable pointer to outgoing edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_ab726cf7028c0b9de7eaff211d9ca34aa}\label{classDcel_1_1VertexT_ab726cf7028c0b9de7eaff211d9ca34aa}} -const \hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \& \hyperlink{classDcel_1_1VertexT_ab726cf7028c0b9de7eaff211d9ca34aa}{get\+Outgoing\+Edge} () const noexcept -\begin{DoxyCompactList}\small\item\em Return immutable pointer to outgoing edge. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a1d365de69778aa4bb35f80c936e95251}\label{classDcel_1_1VertexT_a1d365de69778aa4bb35f80c936e95251}} -std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \& \hyperlink{classDcel_1_1VertexT_a1d365de69778aa4bb35f80c936e95251}{get\+Faces} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable polygon face list for this vertex. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_aa73d20542e46c20afba1f14cd061f126}\label{classDcel_1_1VertexT_aa73d20542e46c20afba1f14cd061f126}} -const std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \& \hyperlink{classDcel_1_1VertexT_aa73d20542e46c20afba1f14cd061f126}{get\+Faces} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable polygon face list for this vertex. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1VertexT_afce7ba8e2bbf81b158b43af2576c4dda}{signed\+Distance} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the signed distance to this vertex. \end{DoxyCompactList}\item -T \hyperlink{classDcel_1_1VertexT_a552b7d88dfe80c76561b5a002ddc176b}{unsigned\+Distance2} (const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the squared unsigned distance to this vertex. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classDcel_1_1VertexT_ab02281ef4c214c2ea5567dae97864846}\label{classDcel_1_1VertexT_ab02281ef4c214c2ea5567dae97864846}} -\hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \hyperlink{classDcel_1_1VertexT_ab02281ef4c214c2ea5567dae97864846}{m\+\_\+outgoing\+Edge} -\begin{DoxyCompactList}\small\item\em Pointer to an outgoing edge from this vertex. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a1980e54dcfd5cefdebac129580028015}\label{classDcel_1_1VertexT_a1980e54dcfd5cefdebac129580028015}} -\hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \hyperlink{classDcel_1_1VertexT_a1980e54dcfd5cefdebac129580028015}{m\+\_\+position} -\begin{DoxyCompactList}\small\item\em Vertex position. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_a509216af6d1d2ca84d1d774b4a6c7659}\label{classDcel_1_1VertexT_a509216af6d1d2ca84d1d774b4a6c7659}} -\hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \hyperlink{classDcel_1_1VertexT_a509216af6d1d2ca84d1d774b4a6c7659}{m\+\_\+normal} -\begin{DoxyCompactList}\small\item\em Vertex normal vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classDcel_1_1VertexT_ad0a8f9c1015b62c891ad2d877d6b8802}\label{classDcel_1_1VertexT_ad0a8f9c1015b62c891ad2d877d6b8802}} -std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \hyperlink{classDcel_1_1VertexT_ad0a8f9c1015b62c891ad2d877d6b8802}{m\+\_\+faces} -\begin{DoxyCompactList}\small\item\em List of faces connected to this vertex (these must be \char`\"{}manually\char`\"{} added) \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Dcel\+::\+Vertex\+T$<$ T $>$} - -Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). - -This class is used in D\+C\+EL functionality which stores polygonal surfaces in a mesh. The \hyperlink{classDcel_1_1VertexT}{VertexT} class has a position, a normal vector, and a pointer to one of the outgoing edges from the vertex. For performance reasons we also include pointers to all the polygon faces that share this vertex. \begin{DoxyNote}{Note} -The normal vector is outgoing, i.\+e. a point x is \char`\"{}outside\char`\"{} the vertex if the dot product between n and (x -\/ x0) is positive. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classDcel_1_1VertexT_ab93f0a7a59fa9d78d89d1b0e97451ce7}\label{classDcel_1_1VertexT_ab93f0a7a59fa9d78d89d1b0e97451ce7}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!VertexT@{VertexT}} -\index{VertexT@{VertexT}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{Vertex\+T()}{VertexT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::\hyperlink{classDcel_1_1VertexT}{VertexT} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Default constructor. - -This initializes the position and the normal vector to zero vectors, and the polygon face list is empty \mbox{\Hypertarget{classDcel_1_1VertexT_ade01d01c6a145c31c6f46dccc902cfae}\label{classDcel_1_1VertexT_ade01d01c6a145c31c6f46dccc902cfae}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!VertexT@{VertexT}} -\index{VertexT@{VertexT}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{Vertex\+T()}{VertexT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::\hyperlink{classDcel_1_1VertexT}{VertexT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+position }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Partial constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+position} & Vertex position\\ -\hline -\end{DoxyParams} -This initializes the position to a\+\_\+position and the normal vector to the zero vector. The polygon face list is empty. \mbox{\Hypertarget{classDcel_1_1VertexT_a90d3c97e605b8084667a85ddfb4ba8bc}\label{classDcel_1_1VertexT_a90d3c97e605b8084667a85ddfb4ba8bc}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!VertexT@{VertexT}} -\index{VertexT@{VertexT}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{Vertex\+T()}{VertexT()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::\hyperlink{classDcel_1_1VertexT}{VertexT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+position, }\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+normal }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+position} & Vertex position \\ -\hline -\mbox{\tt in} & {\em a\+\_\+normal} & Vertex normal vector\\ -\hline -\end{DoxyParams} -This initializes the position to a\+\_\+position and the normal vector to a\+\_\+normal. The polygon face list is empty. \mbox{\Hypertarget{classDcel_1_1VertexT_ac904e9902633915706d81122e72aa847}\label{classDcel_1_1VertexT_ac904e9902633915706d81122e72aa847}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!VertexT@{VertexT}} -\index{VertexT@{VertexT}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{Vertex\+T()}{VertexT()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::\hyperlink{classDcel_1_1VertexT}{VertexT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a2c8a221a9f03e9bafa891bd0759b4f8f}{Vertex} \&}]{a\+\_\+other\+Vertex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full copy constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other\+Vertex} & Other vertex\\ -\hline -\end{DoxyParams} -This copies the position, normal vector, and outgoing edge pointer from the other vertex. The polygon face list. - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classDcel_1_1VertexT_a032c39370f08bbc27f3da35ee0873409}\label{classDcel_1_1VertexT_a032c39370f08bbc27f3da35ee0873409}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!add\+Face@{add\+Face}} -\index{add\+Face@{add\+Face}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{add\+Face()}{addFace()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::add\+Face (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} \&}]{a\+\_\+face }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Add a face to the polygon face list. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+face} & Pointer to face. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1VertexT_aa9e66780ec134afe94d9e5a8221fdc0e}\label{classDcel_1_1VertexT_aa9e66780ec134afe94d9e5a8221fdc0e}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!compute\+Vertex\+Normal\+Angle\+Weighted@{compute\+Vertex\+Normal\+Angle\+Weighted}} -\index{compute\+Vertex\+Normal\+Angle\+Weighted@{compute\+Vertex\+Normal\+Angle\+Weighted}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{compute\+Vertex\+Normal\+Angle\+Weighted()}{computeVertexNormalAngleWeighted()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::compute\+Vertex\+Normal\+Angle\+Weighted (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face. - -This calls the other version with a\+\_\+faces = m\+\_\+faces \begin{DoxyNote}{Note} -This computes the normal vector using the pseudnormal algorithm from Baerentzen and Aanes in \char`\"{}\+Signed distance computation using the angle weighted pseudonormal\char`\"{} (D\+OI\+: 10.\+1109/\+T\+V\+CG.2005.\+49) -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1VertexT_aea793773eec08852108d3bd5c4eea5a9}\label{classDcel_1_1VertexT_aea793773eec08852108d3bd5c4eea5a9}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!compute\+Vertex\+Normal\+Angle\+Weighted@{compute\+Vertex\+Normal\+Angle\+Weighted}} -\index{compute\+Vertex\+Normal\+Angle\+Weighted@{compute\+Vertex\+Normal\+Angle\+Weighted}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{compute\+Vertex\+Normal\+Angle\+Weighted()}{computeVertexNormalAngleWeighted()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::compute\+Vertex\+Normal\+Angle\+Weighted (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \&}]{a\+\_\+faces }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtended angle to each connected face. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+faces} & Faces to use for computation. \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This computes the normal vector using the pseudnormal algorithm from Baerentzen and Aanes in \char`\"{}\+Signed distance computation using the angle weighted pseudonormal\char`\"{} (D\+OI\+: 10.\+1109/\+T\+V\+CG.2005.\+49) -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1VertexT_a6faffb2c5038d62c2f7866736ebe7393}\label{classDcel_1_1VertexT_a6faffb2c5038d62c2f7866736ebe7393}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!compute\+Vertex\+Normal\+Average@{compute\+Vertex\+Normal\+Average}} -\index{compute\+Vertex\+Normal\+Average@{compute\+Vertex\+Normal\+Average}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{compute\+Vertex\+Normal\+Average()}{computeVertexNormalAverage()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::compute\+Vertex\+Normal\+Average (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classDcel_1_1VertexT_a5acb4c66c49319683c71f52e56ad8e8a}{Face\+Ptr} $>$ \&}]{a\+\_\+faces }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the vertex normal, using an average of the normal vectors in the input face list. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+faces} & Faces \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This computes the vertex normal as n = sum(normal(face))/num(faces) -\end{DoxyNote} -\mbox{\Hypertarget{classDcel_1_1VertexT_a20a894d436707a4205501bbc5cd72323}\label{classDcel_1_1VertexT_a20a894d436707a4205501bbc5cd72323}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!define@{define}} -\index{define@{define}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+position, }\item[{const \hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \&}]{a\+\_\+edge, }\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+normal }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Define function. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+position} & Vertex position \\ -\hline -\mbox{\tt in} & {\em a\+\_\+edge} & Pointer to outgoing edge \\ -\hline -\mbox{\tt in} & {\em a\+\_\+normal} & Vertex normal vector\\ -\hline -\end{DoxyParams} -This sets the position, normal vector, and edge pointer. \mbox{\Hypertarget{classDcel_1_1VertexT_a4ac13c49c61857ea7d0990212b43ca41}\label{classDcel_1_1VertexT_a4ac13c49c61857ea7d0990212b43ca41}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!set\+Edge@{set\+Edge}} -\index{set\+Edge@{set\+Edge}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{set\+Edge()}{setEdge()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::set\+Edge (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a7c049a24ac43b9750578e4f4ed543831}{Edge\+Ptr} \&}]{a\+\_\+edge }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the reference to the outgoing edge. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+edge} & Pointer to an outgoing edge \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1VertexT_a3bffe6c4f0d0766cdd7a4bb3a6050cb4}\label{classDcel_1_1VertexT_a3bffe6c4f0d0766cdd7a4bb3a6050cb4}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!set\+Normal@{set\+Normal}} -\index{set\+Normal@{set\+Normal}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{set\+Normal()}{setNormal()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::set\+Normal (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+normal }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the vertex normal vector. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+normal} & Vertex normal vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1VertexT_a9c7d9a23275e5e3165eb8c6018b55a7e}\label{classDcel_1_1VertexT_a9c7d9a23275e5e3165eb8c6018b55a7e}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!set\+Position@{set\+Position}} -\index{set\+Position@{set\+Position}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{set\+Position()}{setPosition()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::set\+Position (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+position }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Set the vertex position. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+position} & Vertex position \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classDcel_1_1VertexT_afce7ba8e2bbf81b158b43af2576c4dda}\label{classDcel_1_1VertexT_afce7ba8e2bbf81b158b43af2576c4dda}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the signed distance to this vertex. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & Position in space. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -The returned distance is $\vert$a\+\_\+x0 -\/ m\+\_\+position$\vert$ and the sign is given by the sign of m\+\_\+normal $\ast$ $\vert$a\+\_\+x0 -\/ m\+\_\+position$\vert$. -\end{DoxyReturn} -\mbox{\Hypertarget{classDcel_1_1VertexT_a552b7d88dfe80c76561b5a002ddc176b}\label{classDcel_1_1VertexT_a552b7d88dfe80c76561b5a002ddc176b}} -\index{Dcel\+::\+VertexT@{Dcel\+::\+VertexT}!unsigned\+Distance2@{unsigned\+Distance2}} -\index{unsigned\+Distance2@{unsigned\+Distance2}!Dcel\+::\+VertexT@{Dcel\+::\+VertexT}} -\subsubsection{\texorpdfstring{unsigned\+Distance2()}{unsignedDistance2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classDcel_1_1VertexT}{Dcel\+::\+VertexT}$<$ T $>$\+::unsigned\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classDcel_1_1VertexT_a6e073dc7426756edef5594816be6e7c7}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the squared unsigned distance to this vertex. - -This is faster to compute than signed\+Distance, and might be preferred for some algorithms. \begin{DoxyReturn}{Returns} -Returns the vector length of (a\+\_\+x -\/ m\+\_\+position) -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp}\item -Source/\hyperlink{EBGeometry__DcelVertexImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classEBGeometry_1_1BoundingVolumes_1_1AABBT.tex b/docs/doxygen/latex/classEBGeometry_1_1BoundingVolumes_1_1AABBT.tex deleted file mode 100644 index 15e4a09f..00000000 --- a/docs/doxygen/latex/classEBGeometry_1_1BoundingVolumes_1_1AABBT.tex +++ /dev/null @@ -1,275 +0,0 @@ -\hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{}\section{E\+B\+Geometry\+:\+:Bounding\+Volumes\+:\+:A\+A\+B\+BT$<$ T $>$ Class Template Reference} -\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT}\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$}} - - -Axis-\/aligned bounding box as bounding volume. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}} -using \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias which cuts down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af14582b583b097dd7d2888812dc7027f}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af14582b583b097dd7d2888812dc7027f}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af14582b583b097dd7d2888812dc7027f}{A\+A\+B\+BT} () -\begin{DoxyCompactList}\small\item\em Default constructor (does nothing) \end{DoxyCompactList}\item -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a14344a09e9c31143fe819c768518d974}{A\+A\+B\+BT} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+lo, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+hi) -\begin{DoxyCompactList}\small\item\em Full constructor taking the low/high corners of the bounding box. \end{DoxyCompactList}\item -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a41e688e21ed4f112d18a00c2f866de5b}{A\+A\+B\+BT} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT} \&a\+\_\+other) -\begin{DoxyCompactList}\small\item\em Copy constructor of another bounding box. \end{DoxyCompactList}\item -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a1298160e99352a0359892b11edcfd01f}{A\+A\+B\+BT} (const std\+::vector$<$ \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ $>$ \&a\+\_\+others) -\begin{DoxyCompactList}\small\item\em Constructor which creates an A\+A\+BB which encloses a set of other A\+A\+B\+Bs. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a918cbae4494608b8dfebe07a1c595f08}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a918cbae4494608b8dfebe07a1c595f08}} -virtual \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a918cbae4494608b8dfebe07a1c595f08}{$\sim$\+A\+A\+B\+BT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a81b76c881d564ac8a8a2b98f90a0319d}{A\+A\+B\+BT} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) -\begin{DoxyCompactList}\small\item\em Template constructor (since mixed precision allowed) which creates an A\+A\+BB that encloses a set of 3D points. \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\void \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a71467f66f1d9c1622c750273ca79946a}{define} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) noexcept -\begin{DoxyCompactList}\small\item\em Define function (since mixed precision allowed) which sets this A\+A\+BB such that it encloses a set of 3D points. \end{DoxyCompactList}\item -bool \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a15e8b77c18d77e1da267b448e6389aff}{intersects} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Check if this A\+A\+BB intersects another A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a850d3d2ffb1afd39ad29f2c3a40bcfc9}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a850d3d2ffb1afd39ad29f2c3a40bcfc9}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a850d3d2ffb1afd39ad29f2c3a40bcfc9}{get\+Low\+Corner} () noexcept -\begin{DoxyCompactList}\small\item\em Get the modifiable lower-\/left corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af18ddf4d7aec12a5815d1a7311d73211}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af18ddf4d7aec12a5815d1a7311d73211}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af18ddf4d7aec12a5815d1a7311d73211}{get\+Low\+Corner} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the immutable lower-\/left corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_aea8039465165dd67f8fe22161b3ccd7b}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_aea8039465165dd67f8fe22161b3ccd7b}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_aea8039465165dd67f8fe22161b3ccd7b}{get\+High\+Corner} () noexcept -\begin{DoxyCompactList}\small\item\em Get the modifiable upper-\/right corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_adb0215acdc4b494b9934cbf625394d24}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_adb0215acdc4b494b9934cbf625394d24}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_adb0215acdc4b494b9934cbf625394d24}{get\+High\+Corner} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the immutable upper-\/right corner of the A\+A\+BB. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a74542ab67572055ef6559bcc6c0335f9}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a74542ab67572055ef6559bcc6c0335f9}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a74542ab67572055ef6559bcc6c0335f9}{get\+Centroid} () const noexcept -\begin{DoxyCompactList}\small\item\em Get bounding volume centroid. \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a02d157786ad67971b4873d6c2b33adbf}{get\+Overlapping\+Volume} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between this A\+A\+BB and another A\+A\+BB. \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_ad751f30ffaef31c0afb66d5d401bbb8f}{get\+Distance} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the distance to this A\+A\+BB (points inside the bounding box have a zero distance) \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a14091ab693c3389b88cad60d68116848}{get\+Distance2} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the squared distance to this bounding box (points inside the bounding box have a zero distance) \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a5f52d6e7087d892d347c0c17dac3de53}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a5f52d6e7087d892d347c0c17dac3de53}} -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a5f52d6e7087d892d347c0c17dac3de53}{get\+Volume} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute the bounding box volume. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_ac733727761633341cb27db022185cba7}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_ac733727761633341cb27db022185cba7}} -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_ac733727761633341cb27db022185cba7}{get\+Area} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute the bounding box area. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a9ae0e966236d98938696fbf6482d56ec}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a9ae0e966236d98938696fbf6482d56ec}} -{\footnotesize template$<$class T $>$ }\\{\bfseries A\+A\+B\+BT} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+lo, const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+hi) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_afca4bd6cb8b2adab62868e10b1be5052}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_afca4bd6cb8b2adab62868e10b1be5052}} -{\footnotesize template$<$class T $>$ }\\{\bfseries A\+A\+B\+BT} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+other) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a3d68ad3207db77d1a844193085bc3818}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a3d68ad3207db77d1a844193085bc3818}} -{\footnotesize template$<$class T $>$ }\\{\bfseries A\+A\+B\+BT} (const std\+::vector$<$ \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ $>$ \&a\+\_\+others) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a81b76c881d564ac8a8a2b98f90a0319d}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a81b76c881d564ac8a8a2b98f90a0319d}} -{\footnotesize template$<$class P $>$ }\\{\bfseries A\+A\+B\+BT} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a71467f66f1d9c1622c750273ca79946a}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a71467f66f1d9c1622c750273ca79946a}} -{\footnotesize template$<$class P $>$ }\\void {\bfseries define} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) noexcept -\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a96be6d9fbb8f50ed4a28983882e8adbf}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a96be6d9fbb8f50ed4a28983882e8adbf}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a96be6d9fbb8f50ed4a28983882e8adbf}{m\+\_\+lo\+Corner} -\begin{DoxyCompactList}\small\item\em Lower-\/left corner of bounding box. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a68a9efa49a6930d325195e2309459f8b}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a68a9efa49a6930d325195e2309459f8b}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a68a9efa49a6930d325195e2309459f8b}{m\+\_\+hi\+Corner} -\begin{DoxyCompactList}\small\item\em Upper-\/right corner of bounding box. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+B\+T$<$ T $>$} - -Axis-\/aligned bounding box as bounding volume. - -This class represents a Cartesian box that encloses a set of 3D points. \begin{DoxyNote}{Note} -The template parameter T is the precision. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a14344a09e9c31143fe819c768518d974}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a14344a09e9c31143fe819c768518d974}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+lo, }\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+hi }\end{DoxyParamCaption})} - - - -Full constructor taking the low/high corners of the bounding box. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+lo} & Low corner \\ -\hline -\mbox{\tt in} & {\em a\+\_\+hi} & High \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a41e688e21ed4f112d18a00c2f866de5b}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a41e688e21ed4f112d18a00c2f866de5b}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})} - - - -Copy constructor of another bounding box. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other bounding box \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a1298160e99352a0359892b11edcfd01f}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a1298160e99352a0359892b11edcfd01f}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ $>$ \&}]{a\+\_\+others }\end{DoxyParamCaption})} - - - -Constructor which creates an A\+A\+BB which encloses a set of other A\+A\+B\+Bs. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+others} & Other bounding boxes \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a81b76c881d564ac8a8a2b98f90a0319d}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a81b76c881d564ac8a8a2b98f90a0319d}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!A\+A\+B\+BT@{A\+A\+B\+BT}} -\index{A\+A\+B\+BT@{A\+A\+B\+BT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{A\+A\+B\+B\+T()}{AABBT()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -template$<$class P $>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points }\end{DoxyParamCaption})} - - - -Template constructor (since mixed precision allowed) which creates an A\+A\+BB that encloses a set of 3D points. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -Calls the define function -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a71467f66f1d9c1622c750273ca79946a}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a71467f66f1d9c1622c750273ca79946a}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!define@{define}} -\index{define@{define}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -template$<$class P $>$ \\ -void \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Define function (since mixed precision allowed) which sets this A\+A\+BB such that it encloses a set of 3D points. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_ad751f30ffaef31c0afb66d5d401bbb8f}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_ad751f30ffaef31c0afb66d5d401bbb8f}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!get\+Distance@{get\+Distance}} -\index{get\+Distance@{get\+Distance}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{get\+Distance()}{getDistance()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+A\+A\+B\+B\+T\+::get\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the distance to this A\+A\+BB (points inside the bounding box have a zero distance) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the distance to the bounding box (a point inside has a zero distance) -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a14091ab693c3389b88cad60d68116848}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a14091ab693c3389b88cad60d68116848}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!get\+Distance2@{get\+Distance2}} -\index{get\+Distance2@{get\+Distance2}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{get\+Distance2()}{getDistance2()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+A\+A\+B\+B\+T\+::get\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT_af139f618de2c5138990a63e93eb7d066}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the squared distance to this bounding box (points inside the bounding box have a zero distance) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the squared distance to the bounding box (a point inside has a zero distance) -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a02d157786ad67971b4873d6c2b33adbf}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a02d157786ad67971b4873d6c2b33adbf}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!get\+Overlapping\+Volume@{get\+Overlapping\+Volume}} -\index{get\+Overlapping\+Volume@{get\+Overlapping\+Volume}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{get\+Overlapping\+Volume()}{getOverlappingVolume()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+A\+A\+B\+B\+T\+::get\+Overlapping\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the overlapping volume between this A\+A\+BB and another A\+A\+BB. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & The other A\+A\+BB \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns overlapping volume -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a15e8b77c18d77e1da267b448e6389aff}\label{classEBGeometry_1_1BoundingVolumes_1_1AABBT_a15e8b77c18d77e1da267b448e6389aff}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}!intersects@{intersects}} -\index{intersects@{intersects}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+A\+A\+B\+BT}} -\subsubsection{\texorpdfstring{intersects()}{intersects()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -bool Bounding\+Volumes\+::\+A\+A\+B\+B\+T\+::intersects (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if this A\+A\+BB intersects another A\+A\+BB. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & The other A\+A\+BB \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -True if they intersect and false otherwise. -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}\item -Source/\hyperlink{EBGeometry__BoundingVolumesImplem_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT.tex b/docs/doxygen/latex/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT.tex deleted file mode 100644 index b1871fb0..00000000 --- a/docs/doxygen/latex/classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT.tex +++ /dev/null @@ -1,312 +0,0 @@ -\hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{}\section{E\+B\+Geometry\+:\+:Bounding\+Volumes\+:\+:Bounding\+SphereT$<$ T $>$ Class Template Reference} -\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$}} - - -Class which encloses a set of points using a bounding sphere. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp$>$} - -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}} -enum \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \{ {\bfseries Ritter} - \}\begin{DoxyCompactList}\small\item\em Typename for possible algorithms that support the computation of a bounding sphere for a set of 3D points. \end{DoxyCompactList} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}} -using \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} = \hyperlink{classVec3T}{Vec3T}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_abb47115bf4bd00e16c885a3b8f54dc87}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_abb47115bf4bd00e16c885a3b8f54dc87}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_abb47115bf4bd00e16c885a3b8f54dc87}{Bounding\+SphereT} () -\begin{DoxyCompactList}\small\item\em Default constructor. Leaves object in undefined state. \end{DoxyCompactList}\item -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a67800669cf2aee6493ea0da5439a34fd}{Bounding\+SphereT} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center, const T \&a\+\_\+radius) -\begin{DoxyCompactList}\small\item\em Full constructor. Sets the center and radius of the bounding sphere. \end{DoxyCompactList}\item -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af360a46fe3463a27f9a718e328aff46e}{Bounding\+SphereT} (const std\+::vector$<$ \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ $>$ \&a\+\_\+other\+Spheres) -\begin{DoxyCompactList}\small\item\em Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres. \end{DoxyCompactList}\item -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ab55488a8ee4b749e8b86c5577735eb3b}{Bounding\+SphereT} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} \&a\+\_\+other) -\begin{DoxyCompactList}\small\item\em Copy constructor. Sets the center and radius from the other sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a06db6d4588098bda148376ee71f51b91}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a06db6d4588098bda148376ee71f51b91}} -virtual \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a06db6d4588098bda148376ee71f51b91}{$\sim$\+Bounding\+SphereT} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing). \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ad780b67034525d145508a13f8b324546}{Bounding\+SphereT} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points, const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \&a\+\_\+alg=Bounding\+Volume\+Algorithm\+::\+Ritter) -\begin{DoxyCompactList}\small\item\em Template constructor which takes a set of 3D points (mixed precision allowed). \end{DoxyCompactList}\item -{\footnotesize template$<$class P $>$ }\\void \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a95068b84f4ad5867c5d3a1034eb51f6f}{define} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points, const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \&a\+\_\+alg) noexcept -\begin{DoxyCompactList}\small\item\em Template define function which takes a set of 3D points (mixed precision allowed). \end{DoxyCompactList}\item -bool \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af3a1030fd3e2cd2d3c86c95460781410}{intersects} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Check if this bounding sphere intersect another bounding sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a34a34d9da724336de6806ff607aed061}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a34a34d9da724336de6806ff607aed061}} -T \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a34a34d9da724336de6806ff607aed061}{get\+Radius} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable radius for this sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a4ddb47370d9b627250e64cd437d26c37}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a4ddb47370d9b627250e64cd437d26c37}} -const T \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a4ddb47370d9b627250e64cd437d26c37}{get\+Radius} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable radius for this sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a7961a0ee3e60fd5359ba06f481c53351}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a7961a0ee3e60fd5359ba06f481c53351}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a7961a0ee3e60fd5359ba06f481c53351}{get\+Centroid} () noexcept -\begin{DoxyCompactList}\small\item\em Get modifiable center for this sphere. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a461a4f71837537ad801d11d394cff413}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a461a4f71837537ad801d11d394cff413}} -const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \& \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a461a4f71837537ad801d11d394cff413}{get\+Centroid} () const noexcept -\begin{DoxyCompactList}\small\item\em Get immutable center for this sphere. \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aac6c4e803bf7eb25123d17eede0555a2}{get\+Overlapping\+Volume} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between this bounding sphere and another. \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a737a3af41ac98a78685092ab6aa967b5}{get\+Distance} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the distance to this bounding sphere (points inside the sphere have a zero distance) \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af34b67dfb55ff102bda80b76a90e28d6}{get\+Distance2} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \&a\+\_\+x0) const noexcept -\begin{DoxyCompactList}\small\item\em Get the squared distance to this bounding sphere (points inside the sphere have a zero distance) \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a9289fa08e9cf3d0f6e7e0fb5556233f5}{get\+Volume} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the sphere volume. \end{DoxyCompactList}\item -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_afee6f3298c1729e45f34d737efaabe19}{get\+Area} () const noexcept -\begin{DoxyCompactList}\small\item\em Get the sphere area. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aa51cf92c01415a84a9906d7973bfcc43}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aa51cf92c01415a84a9906d7973bfcc43}} -{\footnotesize template$<$class T $>$ }\\{\bfseries Bounding\+SphereT} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center, const T \&a\+\_\+radius) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a7238b291257be347c8dce3213c4e313a}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a7238b291257be347c8dce3213c4e313a}} -{\footnotesize template$<$class T $>$ }\\{\bfseries Bounding\+SphereT} (const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} \&a\+\_\+other) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aaba73c2b10d4e0b80adc1e16305f87db}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aaba73c2b10d4e0b80adc1e16305f87db}} -{\footnotesize template$<$class T $>$ }\\{\bfseries Bounding\+SphereT} (const std\+::vector$<$ \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ $>$ \&a\+\_\+other\+Spheres) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae7dabdc4c5cf8a82a7dc4f38ffaee132}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae7dabdc4c5cf8a82a7dc4f38ffaee132}} -{\footnotesize template$<$class P $>$ }\\{\bfseries Bounding\+SphereT} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points, const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \&a\+\_\+algorithm) -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a528f18537b4ef853df390e5de06b1b21}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a528f18537b4ef853df390e5de06b1b21}} -{\footnotesize template$<$class P $>$ }\\void {\bfseries define} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points, const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \&a\+\_\+algorithm) noexcept -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a270720886cb098e072173dd25262135f}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a270720886cb098e072173dd25262135f}} -{\footnotesize template$<$class P $>$ }\\void {\bfseries build\+Ritter} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) noexcept -\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a270720886cb098e072173dd25262135f}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a270720886cb098e072173dd25262135f}} -{\footnotesize template$<$class P $>$ }\\void \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a270720886cb098e072173dd25262135f}{build\+Ritter} (const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&a\+\_\+points) noexcept -\begin{DoxyCompactList}\small\item\em Template function which computes the bounding sphere for a set of points (mixed precision allowed) using Ritter\textquotesingle{}s algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a5c2f7e0aefbd91b38af1e721e9b03b8e}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a5c2f7e0aefbd91b38af1e721e9b03b8e}} -T \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a5c2f7e0aefbd91b38af1e721e9b03b8e}{m\+\_\+radius} -\begin{DoxyCompactList}\small\item\em Sphere radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ac6ad34b39a09a119479c5e73cabcf6c3}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ac6ad34b39a09a119479c5e73cabcf6c3}} -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ac6ad34b39a09a119479c5e73cabcf6c3}{m\+\_\+center} -\begin{DoxyCompactList}\small\item\em Sphere center. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+Sphere\+T$<$ T $>$} - -Class which encloses a set of points using a bounding sphere. - -The template parameter T is the floating-\/point precision which is used. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a67800669cf2aee6493ea0da5439a34fd}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a67800669cf2aee6493ea0da5439a34fd}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+center, }\item[{const T \&}]{a\+\_\+radius }\end{DoxyParamCaption})} - - - -Full constructor. Sets the center and radius of the bounding sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+center} & Bounding sphere center \\ -\hline -\mbox{\tt in} & {\em a\+\_\+radius} & Bounding sphere radius \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af360a46fe3463a27f9a718e328aff46e}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af360a46fe3463a27f9a718e328aff46e}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ $>$ \&}]{a\+\_\+other\+Spheres }\end{DoxyParamCaption})} - - - -Full constructor. Constructs a bounding sphere that encloses all the other bounding spheres. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other\+Spheres} & Other bounding spheres. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ab55488a8ee4b749e8b86c5577735eb3b}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ab55488a8ee4b749e8b86c5577735eb3b}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})} - - - -Copy constructor. Sets the center and radius from the other sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other sphere \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ad780b67034525d145508a13f8b324546}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ad780b67034525d145508a13f8b324546}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!Bounding\+SphereT@{Bounding\+SphereT}} -\index{Bounding\+SphereT@{Bounding\+SphereT}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{Bounding\+Sphere\+T()}{BoundingSphereT()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -template$<$class P $>$ \\ -\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::\hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points, }\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \&}]{a\+\_\+alg = {\ttfamily BoundingVolumeAlgorithm\+:\+:Ritter} }\end{DoxyParamCaption})} - - - -Template constructor which takes a set of 3D points (mixed precision allowed). - -This computes the bounding sphere using the supplied algorithm. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\mbox{\tt in} & {\em a\+\_\+alg} & Bounding sphere algorithm. \\ -\hline -\end{DoxyParams} -\begin{DoxyNote}{Note} -This calls the define(...) function. -\end{DoxyNote} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a95068b84f4ad5867c5d3a1034eb51f6f}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a95068b84f4ad5867c5d3a1034eb51f6f}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!define@{define}} -\index{define@{define}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{define()}{define()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -template$<$class P $>$ \\ -void \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}$<$ T $>$\+::define (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVec3T}{Vec3T}$<$ P $>$ $>$ \&}]{a\+\_\+points, }\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_ae80a2de96c8230589e4ea05fa9943946}{Bounding\+Volume\+Algorithm} \&}]{a\+\_\+alg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Template define function which takes a set of 3D points (mixed precision allowed). - -This computes the bounding sphere using the supplied algorithm. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+points} & Set of 3D points \\ -\hline -\mbox{\tt in} & {\em a\+\_\+alg} & Bounding sphere algorithm. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_afee6f3298c1729e45f34d737efaabe19}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_afee6f3298c1729e45f34d737efaabe19}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Area@{get\+Area}} -\index{get\+Area@{get\+Area}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Area()}{getArea()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+Bounding\+Sphere\+T\+::get\+Area (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the sphere area. - -\begin{DoxyReturn}{Returns} -Sphere area. -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a737a3af41ac98a78685092ab6aa967b5}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a737a3af41ac98a78685092ab6aa967b5}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Distance@{get\+Distance}} -\index{get\+Distance@{get\+Distance}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Distance()}{getDistance()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+Bounding\+Sphere\+T\+::get\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the distance to this bounding sphere (points inside the sphere have a zero distance) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the distance to the sphere (a point inside has a zero distance) -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af34b67dfb55ff102bda80b76a90e28d6}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af34b67dfb55ff102bda80b76a90e28d6}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Distance2@{get\+Distance2}} -\index{get\+Distance2@{get\+Distance2}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Distance2()}{getDistance2()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+Bounding\+Sphere\+T\+::get\+Distance2 (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a65cef119542a4c7c1cabb1ea36f40336}{Vec3} \&}]{a\+\_\+x0 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the squared distance to this bounding sphere (points inside the sphere have a zero distance) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x0} & 3D point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the squared distance to the sphere (a point inside has a zero distance) -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aac6c4e803bf7eb25123d17eede0555a2}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_aac6c4e803bf7eb25123d17eede0555a2}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Overlapping\+Volume@{get\+Overlapping\+Volume}} -\index{get\+Overlapping\+Volume@{get\+Overlapping\+Volume}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Overlapping\+Volume()}{getOverlappingVolume()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+Bounding\+Sphere\+T\+::get\+Overlapping\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute the overlapping volume between this bounding sphere and another. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other bounding sphere \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -The overlapping volume, computing using standard expressions. -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a9289fa08e9cf3d0f6e7e0fb5556233f5}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_a9289fa08e9cf3d0f6e7e0fb5556233f5}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!get\+Volume@{get\+Volume}} -\index{get\+Volume@{get\+Volume}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{get\+Volume()}{getVolume()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -T Bounding\+Volumes\+::\+Bounding\+Sphere\+T\+::get\+Volume (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get the sphere volume. - -\begin{DoxyReturn}{Returns} -Sphere volume -\end{DoxyReturn} -\mbox{\Hypertarget{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af3a1030fd3e2cd2d3c86c95460781410}\label{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT_af3a1030fd3e2cd2d3c86c95460781410}} -\index{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}!intersects@{intersects}} -\index{intersects@{intersects}!E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT@{E\+B\+Geometry\+::\+Bounding\+Volumes\+::\+Bounding\+SphereT}} -\subsubsection{\texorpdfstring{intersects()}{intersects()}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -bool Bounding\+Volumes\+::\+Bounding\+Sphere\+T\+::intersects (\begin{DoxyParamCaption}\item[{const \hyperlink{classEBGeometry_1_1BoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Check if this bounding sphere intersect another bounding sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other bounding sphere. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -True if the two sphere intersect. -\end{DoxyReturn} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}\item -Source/\hyperlink{EBGeometry__BoundingVolumesImplem_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classRotateOp.tex b/docs/doxygen/latex/classRotateOp.tex deleted file mode 100644 index cee417db..00000000 --- a/docs/doxygen/latex/classRotateOp.tex +++ /dev/null @@ -1,88 +0,0 @@ -\hypertarget{classRotateOp}{}\section{Rotate\+Op$<$ T $>$ Class Template Reference} -\label{classRotateOp}\index{Rotate\+Op$<$ T $>$@{Rotate\+Op$<$ T $>$}} - - -Rotation operator. Can scale an input point. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp$>$} - - - -Inheritance diagram for Rotate\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=178pt]{classRotateOp__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Rotate\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=178pt]{classRotateOp__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classRotateOp_afac8d44cae4c9109c96d2c1ae47a1dc2}\label{classRotateOp_afac8d44cae4c9109c96d2c1ae47a1dc2}} -\hyperlink{classRotateOp_afac8d44cae4c9109c96d2c1ae47a1dc2}{Rotate\+Op} () -\begin{DoxyCompactList}\small\item\em Weak constructor. \end{DoxyCompactList}\item -\hyperlink{classRotateOp_a018f0a465bfaf271958ac975eb24b5bb}{Rotate\+Op} (const T a\+\_\+angle, const int a\+\_\+axis) noexcept -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classRotateOp_aaa12091fe7937f5ed7e2d35e0632337b}\label{classRotateOp_aaa12091fe7937f5ed7e2d35e0632337b}} -virtual \hyperlink{classRotateOp_aaa12091fe7937f5ed7e2d35e0632337b}{$\sim$\+Rotate\+Op} ()=default -\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classRotateOp_aaffc25806ef6b9d7ea6651aa2bb9767c}\label{classRotateOp_aaffc25806ef6b9d7ea6651aa2bb9767c}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classRotateOp_aaffc25806ef6b9d7ea6651aa2bb9767c}{transform} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+input\+Point) const noexcept override -\begin{DoxyCompactList}\small\item\em Transform input point. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classRotateOp_ae0f4b6879b2b86506b4a528d7e627255}\label{classRotateOp_ae0f4b6879b2b86506b4a528d7e627255}} -int \hyperlink{classRotateOp_ae0f4b6879b2b86506b4a528d7e627255}{m\+\_\+axis} -\begin{DoxyCompactList}\small\item\em Rotation axis. 0 = x, 1=y etc. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classRotateOp_a8eed86f336946618f1964056405b9ac4}\label{classRotateOp_a8eed86f336946618f1964056405b9ac4}} -T \hyperlink{classRotateOp_a8eed86f336946618f1964056405b9ac4}{m\+\_\+cos\+Angle} -\begin{DoxyCompactList}\small\item\em Theta-\/rotation (degrees) \end{DoxyCompactList}\item -\mbox{\Hypertarget{classRotateOp_ab0f3316357239d07fb1da64b7298d53f}\label{classRotateOp_ab0f3316357239d07fb1da64b7298d53f}} -T \hyperlink{classRotateOp_ab0f3316357239d07fb1da64b7298d53f}{m\+\_\+sin\+Angle} -\begin{DoxyCompactList}\small\item\em Phi-\/rotation (degrees) \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Rotate\+Op$<$ T $>$} - -Rotation operator. Can scale an input point. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classRotateOp_a018f0a465bfaf271958ac975eb24b5bb}\label{classRotateOp_a018f0a465bfaf271958ac975eb24b5bb}} -\index{Rotate\+Op@{Rotate\+Op}!Rotate\+Op@{Rotate\+Op}} -\index{Rotate\+Op@{Rotate\+Op}!Rotate\+Op@{Rotate\+Op}} -\subsubsection{\texorpdfstring{Rotate\+Op()}{RotateOp()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classRotateOp}{Rotate\+Op}$<$ T $>$\+::\hyperlink{classRotateOp}{Rotate\+Op} (\begin{DoxyParamCaption}\item[{const T}]{a\+\_\+angle, }\item[{const int}]{a\+\_\+axis }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+angle} & Rotation angle \\ -\hline -\mbox{\tt in} & {\em a\+\_\+axis} & Rotation axis \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}\item -Source/\hyperlink{EBGeometry__TransformOpsImplem_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classRotateOp__coll__graph.md5 b/docs/doxygen/latex/classRotateOp__coll__graph.md5 deleted file mode 100644 index 9a002750..00000000 --- a/docs/doxygen/latex/classRotateOp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -20b9b6f61bbbf75f8fe0600a98266f26 \ No newline at end of file diff --git a/docs/doxygen/latex/classRotateOp__coll__graph.pdf b/docs/doxygen/latex/classRotateOp__coll__graph.pdf deleted file mode 100644 index f1199d5f..00000000 Binary files a/docs/doxygen/latex/classRotateOp__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classRotateOp__inherit__graph.md5 b/docs/doxygen/latex/classRotateOp__inherit__graph.md5 deleted file mode 100644 index 57b673e2..00000000 --- a/docs/doxygen/latex/classRotateOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0943d6b92c49eeb99e4eb26484b9a0be \ No newline at end of file diff --git a/docs/doxygen/latex/classRotateOp__inherit__graph.pdf b/docs/doxygen/latex/classRotateOp__inherit__graph.pdf deleted file mode 100644 index f1199d5f..00000000 Binary files a/docs/doxygen/latex/classRotateOp__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classScaleOp.tex b/docs/doxygen/latex/classScaleOp.tex deleted file mode 100644 index 6085e430..00000000 --- a/docs/doxygen/latex/classScaleOp.tex +++ /dev/null @@ -1,62 +0,0 @@ -\hypertarget{classScaleOp}{}\section{Scale\+Op$<$ T $>$ Class Template Reference} -\label{classScaleOp}\index{Scale\+Op$<$ T $>$@{Scale\+Op$<$ T $>$}} - - -Scale operator. Can also be used as a reflection operator. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp$>$} - - - -Inheritance diagram for Scale\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=178pt]{classScaleOp__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Scale\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=178pt]{classScaleOp__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classScaleOp_aaa6d5841955e1b0a883bbcb5fdcbddc6}\label{classScaleOp_aaa6d5841955e1b0a883bbcb5fdcbddc6}} -\hyperlink{classScaleOp_aaa6d5841955e1b0a883bbcb5fdcbddc6}{Scale\+Op} () -\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classScaleOp_ab556ea0d0521a8a153e2406b1255014e}\label{classScaleOp_ab556ea0d0521a8a153e2406b1255014e}} -\hyperlink{classScaleOp_ab556ea0d0521a8a153e2406b1255014e}{Scale\+Op} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+scale) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classScaleOp_ab9fc71d00d7e0e339562edcaa2e3fc9a}\label{classScaleOp_ab9fc71d00d7e0e339562edcaa2e3fc9a}} -virtual \hyperlink{classScaleOp_ab9fc71d00d7e0e339562edcaa2e3fc9a}{$\sim$\+Scale\+Op} ()=default -\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classScaleOp_ac09e64516daa1b75111bd36dedfeeda9}\label{classScaleOp_ac09e64516daa1b75111bd36dedfeeda9}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classScaleOp_ac09e64516daa1b75111bd36dedfeeda9}{transform} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+input\+Point) const noexcept override -\begin{DoxyCompactList}\small\item\em Transform input point. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classScaleOp_aa9cdfff381b10970fd51eeb7e3e83188}\label{classScaleOp_aa9cdfff381b10970fd51eeb7e3e83188}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classScaleOp_aa9cdfff381b10970fd51eeb7e3e83188}{m\+\_\+scale} -\begin{DoxyCompactList}\small\item\em Scaling of input point. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Scale\+Op$<$ T $>$} - -Scale operator. Can also be used as a reflection operator. - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}\item -Source/\hyperlink{EBGeometry__TransformOpsImplem_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classScaleOp__coll__graph.md5 b/docs/doxygen/latex/classScaleOp__coll__graph.md5 deleted file mode 100644 index 5ee5a976..00000000 --- a/docs/doxygen/latex/classScaleOp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -83054c6e97d368ee387a00d0fcf19e5c \ No newline at end of file diff --git a/docs/doxygen/latex/classScaleOp__coll__graph.pdf b/docs/doxygen/latex/classScaleOp__coll__graph.pdf deleted file mode 100644 index db66def4..00000000 Binary files a/docs/doxygen/latex/classScaleOp__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classScaleOp__inherit__graph.md5 b/docs/doxygen/latex/classScaleOp__inherit__graph.md5 deleted file mode 100644 index 10b9bff3..00000000 --- a/docs/doxygen/latex/classScaleOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -aae161ff3af9c21b3ed1628d798c7e8e \ No newline at end of file diff --git a/docs/doxygen/latex/classScaleOp__inherit__graph.pdf b/docs/doxygen/latex/classScaleOp__inherit__graph.pdf deleted file mode 100644 index db66def4..00000000 Binary files a/docs/doxygen/latex/classScaleOp__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classSignedDistanceFunction.tex b/docs/doxygen/latex/classSignedDistanceFunction.tex deleted file mode 100644 index 01ca5234..00000000 --- a/docs/doxygen/latex/classSignedDistanceFunction.tex +++ /dev/null @@ -1,118 +0,0 @@ -\hypertarget{classSignedDistanceFunction}{}\section{Signed\+Distance\+Function$<$ T $>$ Class Template Reference} -\label{classSignedDistanceFunction}\index{Signed\+Distance\+Function$<$ T $>$@{Signed\+Distance\+Function$<$ T $>$}} - - -Abstract representation of a signed distance function. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp$>$} - - - -Inheritance diagram for Signed\+Distance\+Function$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{classSignedDistanceFunction__inherit__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classSignedDistanceFunction_abfeeff9b3901e03ec6b73317dc9a722e}\label{classSignedDistanceFunction_abfeeff9b3901e03ec6b73317dc9a722e}} -\hyperlink{classSignedDistanceFunction_abfeeff9b3901e03ec6b73317dc9a722e}{Signed\+Distance\+Function} ()=default -\begin{DoxyCompactList}\small\item\em Disallowed, use the full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSignedDistanceFunction_ab47b289bd8351d7f323938c91b2bb92b}\label{classSignedDistanceFunction_ab47b289bd8351d7f323938c91b2bb92b}} -virtual \hyperlink{classSignedDistanceFunction_ab47b289bd8351d7f323938c91b2bb92b}{$\sim$\+Signed\+Distance\+Function} ()=default -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -virtual T \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept=0 -\begin{DoxyCompactList}\small\item\em Signed distance function. \end{DoxyCompactList}\item -void \hyperlink{classSignedDistanceFunction_add71ebc2e7f3fb5e85766898413482e7}{translate} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+translation) noexcept -\begin{DoxyCompactList}\small\item\em Translate signed distance function. \end{DoxyCompactList}\item -void \hyperlink{classSignedDistanceFunction_ae8de697f4d0966290342bcf6383585ef}{rotate} (const T a\+\_\+angle, const int a\+\_\+axis) noexcept -\begin{DoxyCompactList}\small\item\em Rotate the signed distance function around. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classSignedDistanceFunction_af186f98f9ea4ac96fccb4add4ebf196d}\label{classSignedDistanceFunction_af186f98f9ea4ac96fccb4add4ebf196d}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classSignedDistanceFunction_af186f98f9ea4ac96fccb4add4ebf196d}{transform\+Point} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept -\begin{DoxyCompactList}\small\item\em Apply transformation operators and move point. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classSignedDistanceFunction_af61e5e2ece6add9d2bcf8e5aa8cf2844}\label{classSignedDistanceFunction_af61e5e2ece6add9d2bcf8e5aa8cf2844}} -std\+::deque$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classTransformOp}{Transform\+Op}$<$ T $>$ $>$ $>$ \hyperlink{classSignedDistanceFunction_af61e5e2ece6add9d2bcf8e5aa8cf2844}{m\+\_\+transform\+Ops} -\begin{DoxyCompactList}\small\item\em List of transformation operators for the signed distance field. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Signed\+Distance\+Function$<$ T $>$} - -Abstract representation of a signed distance function. - -Users can put whatever they like in here, e.\+g. analytic functions, D\+C\+EL meshes, or D\+C\+EL meshes stored in full or compact \hyperlink{namespaceBVH}{B\+VH} trees. The signed\+Distance function must be implemented by the user. When computing it, the user can apply transformation operators (rotations, scaling, translations) by calling transform\+Point on the input coordinate. - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classSignedDistanceFunction_ae8de697f4d0966290342bcf6383585ef}\label{classSignedDistanceFunction_ae8de697f4d0966290342bcf6383585ef}} -\index{Signed\+Distance\+Function@{Signed\+Distance\+Function}!rotate@{rotate}} -\index{rotate@{rotate}!Signed\+Distance\+Function@{Signed\+Distance\+Function}} -\subsubsection{\texorpdfstring{rotate()}{rotate()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function}$<$ T $>$\+::rotate (\begin{DoxyParamCaption}\item[{const T}]{a\+\_\+angle, }\item[{const int}]{a\+\_\+axis }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Rotate the signed distance function around. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+angle} & Rotation angle \\ -\hline -\mbox{\tt in} & {\em a\+\_\+axis} & Rotation axis. 0 = x, 1 = y etc. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}\label{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}} -\index{Signed\+Distance\+Function@{Signed\+Distance\+Function}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Signed\+Distance\+Function@{Signed\+Distance\+Function}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -virtual T \hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [noexcept]}} - - - -Signed distance function. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point. \\ -\hline -\end{DoxyParams} - - -Implemented in \hyperlink{classCylinderSDF_a082c08089b07402d55020ed8186cc992}{Cylinder\+S\+D\+F$<$ T $>$}, \hyperlink{classTorusSDF_a23b4d455de2b7b9988ce81833ccd5302}{Torus\+S\+D\+F$<$ T $>$}, \hyperlink{classBoxSDF_a6e7a72790061423e5c9ea47d9e26736f}{Box\+S\+D\+F$<$ T $>$}, \hyperlink{classSphereSDF_a9b0c5f0b1af2c4b62bee1c873e0158e8}{Sphere\+S\+D\+F$<$ T $>$}, \hyperlink{classUnionBVH_a9681fdc161e2e077a33caaddb78fb4ba}{Union\+B\+V\+H$<$ T, B\+V, K $>$}, and \hyperlink{classUnion_a08beffd354ca261e3d31bcb453951810}{Union$<$ T $>$}. - -\mbox{\Hypertarget{classSignedDistanceFunction_add71ebc2e7f3fb5e85766898413482e7}\label{classSignedDistanceFunction_add71ebc2e7f3fb5e85766898413482e7}} -\index{Signed\+Distance\+Function@{Signed\+Distance\+Function}!translate@{translate}} -\index{translate@{translate}!Signed\+Distance\+Function@{Signed\+Distance\+Function}} -\subsubsection{\texorpdfstring{translate()}{translate()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -void \hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function}$<$ T $>$\+::translate (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+translation }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Translate signed distance function. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+translation} & Distance to translate the function. \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__SignedDistanceFunction_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp}\item -Source/\hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classSignedDistanceFunction__inherit__graph.md5 b/docs/doxygen/latex/classSignedDistanceFunction__inherit__graph.md5 deleted file mode 100644 index 77aad96a..00000000 --- a/docs/doxygen/latex/classSignedDistanceFunction__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7befa6b3b33b602ca448cc3415ff6076 \ No newline at end of file diff --git a/docs/doxygen/latex/classSignedDistanceFunction__inherit__graph.pdf b/docs/doxygen/latex/classSignedDistanceFunction__inherit__graph.pdf deleted file mode 100644 index 59ef80ff..00000000 Binary files a/docs/doxygen/latex/classSignedDistanceFunction__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classSphereSDF.tex b/docs/doxygen/latex/classSphereSDF.tex deleted file mode 100644 index 3d6d0d7a..00000000 --- a/docs/doxygen/latex/classSphereSDF.tex +++ /dev/null @@ -1,127 +0,0 @@ -\hypertarget{classSphereSDF}{}\section{Sphere\+S\+DF$<$ T $>$ Class Template Reference} -\label{classSphereSDF}\index{Sphere\+S\+D\+F$<$ T $>$@{Sphere\+S\+D\+F$<$ T $>$}} - - -Signed distance field for sphere. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp$>$} - - - -Inheritance diagram for Sphere\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classSphereSDF__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Sphere\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classSphereSDF__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classSphereSDF_ad5f6d20f6ccd77ba91c00acd2aeea28f}\label{classSphereSDF_ad5f6d20f6ccd77ba91c00acd2aeea28f}} -\hyperlink{classSphereSDF_ad5f6d20f6ccd77ba91c00acd2aeea28f}{Sphere\+S\+DF} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed weak construction. \end{DoxyCompactList}\item -\hyperlink{classSphereSDF_a3e555062b1b20c1729a9f4ab6136add4}{Sphere\+S\+DF} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center, const T \&a\+\_\+radius, const bool a\+\_\+flip\+Inside) -\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_a2c25f14a19fcb910cd4d48af7123185a}\label{classSphereSDF_a2c25f14a19fcb910cd4d48af7123185a}} -\hyperlink{classSphereSDF_a2c25f14a19fcb910cd4d48af7123185a}{Sphere\+S\+DF} (const \hyperlink{classSphereSDF}{Sphere\+S\+DF} \&a\+\_\+other) -\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_ab5980286d17bb9da7425b4d9d4045850}\label{classSphereSDF_ab5980286d17bb9da7425b4d9d4045850}} -virtual \hyperlink{classSphereSDF_ab5980286d17bb9da7425b4d9d4045850}{$\sim$\+Sphere\+S\+DF} ()=default -\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_a82922ae162a9b96279cc4d0d866b303d}\label{classSphereSDF_a82922ae162a9b96279cc4d0d866b303d}} -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classSphereSDF_a82922ae162a9b96279cc4d0d866b303d}{get\+Center} () const noexcept -\begin{DoxyCompactList}\small\item\em Get center. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_a4f3a9220bfe2fc817131f655ce6f30cd}\label{classSphereSDF_a4f3a9220bfe2fc817131f655ce6f30cd}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classSphereSDF_a4f3a9220bfe2fc817131f655ce6f30cd}{get\+Center} () noexcept -\begin{DoxyCompactList}\small\item\em Get center. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_a2cdc1f42f3de4c0ca017571910fbe72c}\label{classSphereSDF_a2cdc1f42f3de4c0ca017571910fbe72c}} -const T \& \hyperlink{classSphereSDF_a2cdc1f42f3de4c0ca017571910fbe72c}{get\+Radius} () const noexcept -\begin{DoxyCompactList}\small\item\em Get radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_a09245289037ae77adf204160c0d5b9cc}\label{classSphereSDF_a09245289037ae77adf204160c0d5b9cc}} -T \& \hyperlink{classSphereSDF_a09245289037ae77adf204160c0d5b9cc}{get\+Radius} () noexcept -\begin{DoxyCompactList}\small\item\em Get radius. \end{DoxyCompactList}\item -virtual T \hyperlink{classSphereSDF_a9b0c5f0b1af2c4b62bee1c873e0158e8}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept override -\begin{DoxyCompactList}\small\item\em Signed distance function for sphere. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classSphereSDF_ab3caacb26a72b3ada01f09a248f5cb83}\label{classSphereSDF_ab3caacb26a72b3ada01f09a248f5cb83}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classSphereSDF_ab3caacb26a72b3ada01f09a248f5cb83}{m\+\_\+center} -\begin{DoxyCompactList}\small\item\em Sphere center. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_ac4b0f786ea2b53530512ce3fa4e7bdbd}\label{classSphereSDF_ac4b0f786ea2b53530512ce3fa4e7bdbd}} -T \hyperlink{classSphereSDF_ac4b0f786ea2b53530512ce3fa4e7bdbd}{m\+\_\+radius} -\begin{DoxyCompactList}\small\item\em Sphere radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classSphereSDF_a9a32a668648c166b41c5d1c3981c9579}\label{classSphereSDF_a9a32a668648c166b41c5d1c3981c9579}} -bool \hyperlink{classSphereSDF_a9a32a668648c166b41c5d1c3981c9579}{m\+\_\+flip\+Inside} -\begin{DoxyCompactList}\small\item\em For flipping sign. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Additional Inherited Members} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Sphere\+S\+D\+F$<$ T $>$} - -Signed distance field for sphere. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classSphereSDF_a3e555062b1b20c1729a9f4ab6136add4}\label{classSphereSDF_a3e555062b1b20c1729a9f4ab6136add4}} -\index{Sphere\+S\+DF@{Sphere\+S\+DF}!Sphere\+S\+DF@{Sphere\+S\+DF}} -\index{Sphere\+S\+DF@{Sphere\+S\+DF}!Sphere\+S\+DF@{Sphere\+S\+DF}} -\subsubsection{\texorpdfstring{Sphere\+S\+D\+F()}{SphereSDF()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classSphereSDF}{Sphere\+S\+DF}$<$ T $>$\+::\hyperlink{classSphereSDF}{Sphere\+S\+DF} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+center, }\item[{const T \&}]{a\+\_\+radius, }\item[{const bool}]{a\+\_\+flip\+Inside }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Default constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+center} & Sphere center \\ -\hline -\mbox{\tt in} & {\em a\+\_\+radius} & Sphere radius \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Inside} & Flip inside or not \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classSphereSDF_a9b0c5f0b1af2c4b62bee1c873e0158e8}\label{classSphereSDF_a9b0c5f0b1af2c4b62bee1c873e0158e8}} -\index{Sphere\+S\+DF@{Sphere\+S\+DF}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Sphere\+S\+DF@{Sphere\+S\+DF}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -virtual T \hyperlink{classSphereSDF}{Sphere\+S\+DF}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}} - - - -Signed distance function for sphere. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & Position. \\ -\hline -\end{DoxyParams} - - -Implements \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{Signed\+Distance\+Function$<$ T $>$}. - - - -The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__AnalyticDistanceFunctions_8hpp}{E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classSphereSDF__coll__graph.md5 b/docs/doxygen/latex/classSphereSDF__coll__graph.md5 deleted file mode 100644 index 581dfe86..00000000 --- a/docs/doxygen/latex/classSphereSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e1a5ac238945088c09b467bbedfa370b \ No newline at end of file diff --git a/docs/doxygen/latex/classSphereSDF__coll__graph.pdf b/docs/doxygen/latex/classSphereSDF__coll__graph.pdf deleted file mode 100644 index d5487881..00000000 Binary files a/docs/doxygen/latex/classSphereSDF__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classSphereSDF__inherit__graph.md5 b/docs/doxygen/latex/classSphereSDF__inherit__graph.md5 deleted file mode 100644 index ad411508..00000000 --- a/docs/doxygen/latex/classSphereSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c7dcb382970bc33fd3d879854e8a7a2d \ No newline at end of file diff --git a/docs/doxygen/latex/classSphereSDF__inherit__graph.pdf b/docs/doxygen/latex/classSphereSDF__inherit__graph.pdf deleted file mode 100644 index d5487881..00000000 Binary files a/docs/doxygen/latex/classSphereSDF__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classTorusSDF.tex b/docs/doxygen/latex/classTorusSDF.tex deleted file mode 100644 index d3553c66..00000000 --- a/docs/doxygen/latex/classTorusSDF.tex +++ /dev/null @@ -1,215 +0,0 @@ -\hypertarget{classTorusSDF}{}\section{Torus\+S\+DF$<$ T $>$ Class Template Reference} -\label{classTorusSDF}\index{Torus\+S\+D\+F$<$ T $>$@{Torus\+S\+D\+F$<$ T $>$}} - - -Signed distance field for a torus. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp$>$} - - - -Inheritance diagram for Torus\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classTorusSDF__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Torus\+S\+DF$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classTorusSDF__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classTorusSDF_a4591d7c3cdbbed45fdbaf414f0d096ee}\label{classTorusSDF_a4591d7c3cdbbed45fdbaf414f0d096ee}} -\hyperlink{classTorusSDF_a4591d7c3cdbbed45fdbaf414f0d096ee}{Torus\+S\+DF} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed weak construction. \end{DoxyCompactList}\item -\hyperlink{classTorusSDF_acf22c1b59605e93750a3a002fd5bc23a}{Torus\+S\+DF} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+center, const T \&a\+\_\+major\+Radius, const T \&a\+\_\+minor\+Radius, const bool a\+\_\+flip\+Inside) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTorusSDF_a97178b72cbb9208b7dde0a6db1ab6e18}\label{classTorusSDF_a97178b72cbb9208b7dde0a6db1ab6e18}} -virtual \hyperlink{classTorusSDF_a97178b72cbb9208b7dde0a6db1ab6e18}{$\sim$\+Torus\+S\+DF} () -\begin{DoxyCompactList}\small\item\em Destructor (does nothing). \end{DoxyCompactList}\item -const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classTorusSDF_a0973ae5f9e4a023ae15728d0a5063b4d}{get\+Center} () const noexcept -\begin{DoxyCompactList}\small\item\em Get torus center. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classTorusSDF_ad4a6d109ff640e2cb003901bf6ac1c85}{get\+Center} () noexcept -\begin{DoxyCompactList}\small\item\em Get torus center. \end{DoxyCompactList}\item -const T \& \hyperlink{classTorusSDF_acf871d02fb580a9c33d6c54517730036}{get\+Major\+Radius} () const noexcept -\begin{DoxyCompactList}\small\item\em Get major radius. \end{DoxyCompactList}\item -T \& \hyperlink{classTorusSDF_a81910ce83df61223ab3484c7de0747c7}{get\+Major\+Radius} () noexcept -\begin{DoxyCompactList}\small\item\em Get major radius. \end{DoxyCompactList}\item -const T \& \hyperlink{classTorusSDF_a3af383d80c8d11ab9d39fc872d661a42}{get\+Minor\+Radius} () const noexcept -\begin{DoxyCompactList}\small\item\em Get minor radius. \end{DoxyCompactList}\item -T \& \hyperlink{classTorusSDF_a0eff8ed5c429c6f80580c9660ac9cdfa}{get\+Minor\+Radius} () noexcept -\begin{DoxyCompactList}\small\item\em Get minor radius. \end{DoxyCompactList}\item -virtual T \hyperlink{classTorusSDF_a23b4d455de2b7b9988ce81833ccd5302}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept override -\begin{DoxyCompactList}\small\item\em Signed distance function for a torus. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classTorusSDF_aa097ba79346768486083bf5269b20821}\label{classTorusSDF_aa097ba79346768486083bf5269b20821}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classTorusSDF_aa097ba79346768486083bf5269b20821}{m\+\_\+center} -\begin{DoxyCompactList}\small\item\em Torus center. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTorusSDF_a21d443b0a0f8af98856cdc7bce0363ba}\label{classTorusSDF_a21d443b0a0f8af98856cdc7bce0363ba}} -T \hyperlink{classTorusSDF_a21d443b0a0f8af98856cdc7bce0363ba}{m\+\_\+major\+Radius} -\begin{DoxyCompactList}\small\item\em Major torus radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTorusSDF_afedc4aacff95c95b97d1d540dddd2e99}\label{classTorusSDF_afedc4aacff95c95b97d1d540dddd2e99}} -T \hyperlink{classTorusSDF_afedc4aacff95c95b97d1d540dddd2e99}{m\+\_\+minor\+Radius} -\begin{DoxyCompactList}\small\item\em Minor torus radius. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTorusSDF_a41d7b8bbbf97d96d49432dcb1036573a}\label{classTorusSDF_a41d7b8bbbf97d96d49432dcb1036573a}} -bool \hyperlink{classTorusSDF_a41d7b8bbbf97d96d49432dcb1036573a}{m\+\_\+flip\+Inside} -\begin{DoxyCompactList}\small\item\em Hook for making outside -\/$>$ inside. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Additional Inherited Members} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Torus\+S\+D\+F$<$ T $>$} - -Signed distance field for a torus. - -This is constructed such that the donut lies in the xy-\/plane. - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classTorusSDF_acf22c1b59605e93750a3a002fd5bc23a}\label{classTorusSDF_acf22c1b59605e93750a3a002fd5bc23a}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!Torus\+S\+DF@{Torus\+S\+DF}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{Torus\+S\+D\+F()}{TorusSDF()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::\hyperlink{classTorusSDF}{Torus\+S\+DF} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+center, }\item[{const T \&}]{a\+\_\+major\+Radius, }\item[{const T \&}]{a\+\_\+minor\+Radius, }\item[{const bool}]{a\+\_\+flip\+Inside }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+center} & Torus center. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+major\+Radius} & Major torus radius. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+minor\+Radius} & Minor torus radius. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Inside} & Flip inside/outside. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classTorusSDF_a0973ae5f9e4a023ae15728d0a5063b4d}\label{classTorusSDF_a0973ae5f9e4a023ae15728d0a5063b4d}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!get\+Center@{get\+Center}} -\index{get\+Center@{get\+Center}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Center()}{getCenter()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const \hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::get\+Center (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get torus center. - -\begin{DoxyReturn}{Returns} -m\+\_\+center -\end{DoxyReturn} -\mbox{\Hypertarget{classTorusSDF_ad4a6d109ff640e2cb003901bf6ac1c85}\label{classTorusSDF_ad4a6d109ff640e2cb003901bf6ac1c85}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!get\+Center@{get\+Center}} -\index{get\+Center@{get\+Center}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Center()}{getCenter()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$\& \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::get\+Center (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get torus center. - -\begin{DoxyReturn}{Returns} -m\+\_\+center -\end{DoxyReturn} -\mbox{\Hypertarget{classTorusSDF_acf871d02fb580a9c33d6c54517730036}\label{classTorusSDF_acf871d02fb580a9c33d6c54517730036}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!get\+Major\+Radius@{get\+Major\+Radius}} -\index{get\+Major\+Radius@{get\+Major\+Radius}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Major\+Radius()}{getMajorRadius()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const T\& \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::get\+Major\+Radius (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get major radius. - -\begin{DoxyReturn}{Returns} -m\+\_\+major\+Radius -\end{DoxyReturn} -\mbox{\Hypertarget{classTorusSDF_a81910ce83df61223ab3484c7de0747c7}\label{classTorusSDF_a81910ce83df61223ab3484c7de0747c7}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!get\+Major\+Radius@{get\+Major\+Radius}} -\index{get\+Major\+Radius@{get\+Major\+Radius}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Major\+Radius()}{getMajorRadius()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T\& \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::get\+Major\+Radius (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get major radius. - -\begin{DoxyReturn}{Returns} -m\+\_\+major\+Radius -\end{DoxyReturn} -\mbox{\Hypertarget{classTorusSDF_a3af383d80c8d11ab9d39fc872d661a42}\label{classTorusSDF_a3af383d80c8d11ab9d39fc872d661a42}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!get\+Minor\+Radius@{get\+Minor\+Radius}} -\index{get\+Minor\+Radius@{get\+Minor\+Radius}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Minor\+Radius()}{getMinorRadius()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const T\& \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::get\+Minor\+Radius (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get minor radius. - -\begin{DoxyReturn}{Returns} -m\+\_\+minor\+Radius -\end{DoxyReturn} -\mbox{\Hypertarget{classTorusSDF_a0eff8ed5c429c6f80580c9660ac9cdfa}\label{classTorusSDF_a0eff8ed5c429c6f80580c9660ac9cdfa}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!get\+Minor\+Radius@{get\+Minor\+Radius}} -\index{get\+Minor\+Radius@{get\+Minor\+Radius}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{get\+Minor\+Radius()}{getMinorRadius()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T\& \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::get\+Minor\+Radius (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Get minor radius. - -\begin{DoxyReturn}{Returns} -m\+\_\+minor\+Radius -\end{DoxyReturn} -\mbox{\Hypertarget{classTorusSDF_a23b4d455de2b7b9988ce81833ccd5302}\label{classTorusSDF_a23b4d455de2b7b9988ce81833ccd5302}} -\index{Torus\+S\+DF@{Torus\+S\+DF}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Torus\+S\+DF@{Torus\+S\+DF}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -virtual T \hyperlink{classTorusSDF}{Torus\+S\+DF}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}} - - - -Signed distance function for a torus. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & Position. \\ -\hline -\end{DoxyParams} - - -Implements \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{Signed\+Distance\+Function$<$ T $>$}. - - - -The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__AnalyticDistanceFunctions_8hpp}{E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classTorusSDF__coll__graph.md5 b/docs/doxygen/latex/classTorusSDF__coll__graph.md5 deleted file mode 100644 index 99659ab1..00000000 --- a/docs/doxygen/latex/classTorusSDF__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5fa8168ec2b17ef6c492f78dc0bfb38a \ No newline at end of file diff --git a/docs/doxygen/latex/classTorusSDF__coll__graph.pdf b/docs/doxygen/latex/classTorusSDF__coll__graph.pdf deleted file mode 100644 index 8ca6f960..00000000 Binary files a/docs/doxygen/latex/classTorusSDF__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classTorusSDF__inherit__graph.md5 b/docs/doxygen/latex/classTorusSDF__inherit__graph.md5 deleted file mode 100644 index de306e47..00000000 --- a/docs/doxygen/latex/classTorusSDF__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2e84ace78dbe576ffa22d9afda2d2b76 \ No newline at end of file diff --git a/docs/doxygen/latex/classTorusSDF__inherit__graph.pdf b/docs/doxygen/latex/classTorusSDF__inherit__graph.pdf deleted file mode 100644 index 8ca6f960..00000000 Binary files a/docs/doxygen/latex/classTorusSDF__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classTransformOp.tex b/docs/doxygen/latex/classTransformOp.tex deleted file mode 100644 index a7367cd6..00000000 --- a/docs/doxygen/latex/classTransformOp.tex +++ /dev/null @@ -1,68 +0,0 @@ -\hypertarget{classTransformOp}{}\section{Transform\+Op$<$ T $>$ Class Template Reference} -\label{classTransformOp}\index{Transform\+Op$<$ T $>$@{Transform\+Op$<$ T $>$}} - - -Base class for transformation operators. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp$>$} - - - -Inheritance diagram for Transform\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=276pt]{classTransformOp__inherit__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classTransformOp_ab904cbdd373ca07e08b254163331b3b4}\label{classTransformOp_ab904cbdd373ca07e08b254163331b3b4}} -\hyperlink{classTransformOp_ab904cbdd373ca07e08b254163331b3b4}{Transform\+Op} ()=default -\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTransformOp_a556cc7f5bbe70ce148a0791b883eb58c}\label{classTransformOp_a556cc7f5bbe70ce148a0791b883eb58c}} -virtual \hyperlink{classTransformOp_a556cc7f5bbe70ce148a0791b883eb58c}{$\sim$\+Transform\+Op} ()=default -\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item -virtual \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classTransformOp_a61c1920daa9f55fd2ea9095cbcfa18b8}{transform} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+input\+Point) const noexcept=0 -\begin{DoxyCompactList}\small\item\em Transform input coordinate. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Transform\+Op$<$ T $>$} - -Base class for transformation operators. - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classTransformOp_a61c1920daa9f55fd2ea9095cbcfa18b8}\label{classTransformOp_a61c1920daa9f55fd2ea9095cbcfa18b8}} -\index{Transform\+Op@{Transform\+Op}!transform@{transform}} -\index{transform@{transform}!Transform\+Op@{Transform\+Op}} -\subsubsection{\texorpdfstring{transform()}{transform()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -virtual \hyperlink{classVec3T}{Vec3T}$<$T$>$ \hyperlink{classTransformOp}{Transform\+Op}$<$ T $>$\+::transform (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+input\+Point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [noexcept]}} - - - -Transform input coordinate. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+input\+Point} & Input point \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns transformed point. -\end{DoxyReturn} - - -Implemented in \hyperlink{classRotateOp_aaffc25806ef6b9d7ea6651aa2bb9767c}{Rotate\+Op$<$ T $>$}, and \hyperlink{classTranslateOp_a16941d9e52b02d39f9c92f6b23f61af6}{Translate\+Op$<$ T $>$}. - - - -The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classTransformOp__inherit__graph.md5 b/docs/doxygen/latex/classTransformOp__inherit__graph.md5 deleted file mode 100644 index e81b3004..00000000 --- a/docs/doxygen/latex/classTransformOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0429bcbe80fa78c2f66d67f445ddfc42 \ No newline at end of file diff --git a/docs/doxygen/latex/classTransformOp__inherit__graph.pdf b/docs/doxygen/latex/classTransformOp__inherit__graph.pdf deleted file mode 100644 index 8051c323..00000000 Binary files a/docs/doxygen/latex/classTransformOp__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classTranslateOp.tex b/docs/doxygen/latex/classTranslateOp.tex deleted file mode 100644 index a8174189..00000000 --- a/docs/doxygen/latex/classTranslateOp.tex +++ /dev/null @@ -1,62 +0,0 @@ -\hypertarget{classTranslateOp}{}\section{Translate\+Op$<$ T $>$ Class Template Reference} -\label{classTranslateOp}\index{Translate\+Op$<$ T $>$@{Translate\+Op$<$ T $>$}} - - -Translation operator. Can translate an input point. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp$>$} - - - -Inheritance diagram for Translate\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=178pt]{classTranslateOp__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Translate\+Op$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=178pt]{classTranslateOp__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classTranslateOp_ab20f5a272d6cd34bf98fc23523913fc9}\label{classTranslateOp_ab20f5a272d6cd34bf98fc23523913fc9}} -\hyperlink{classTranslateOp_ab20f5a272d6cd34bf98fc23523913fc9}{Translate\+Op} () -\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTranslateOp_ac646a47f26119d8316533c91f3043864}\label{classTranslateOp_ac646a47f26119d8316533c91f3043864}} -\hyperlink{classTranslateOp_ac646a47f26119d8316533c91f3043864}{Translate\+Op} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+translation) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTranslateOp_ad96b4ec0f30fb98dbd684afef1bfff03}\label{classTranslateOp_ad96b4ec0f30fb98dbd684afef1bfff03}} -virtual \hyperlink{classTranslateOp_ad96b4ec0f30fb98dbd684afef1bfff03}{$\sim$\+Translate\+Op} ()=default -\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classTranslateOp_a16941d9e52b02d39f9c92f6b23f61af6}\label{classTranslateOp_a16941d9e52b02d39f9c92f6b23f61af6}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classTranslateOp_a16941d9e52b02d39f9c92f6b23f61af6}{transform} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+input\+Point) const noexcept override -\begin{DoxyCompactList}\small\item\em Transform input point. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classTranslateOp_a35f16c6a9cf4c03edffa19d86e73d27a}\label{classTranslateOp_a35f16c6a9cf4c03edffa19d86e73d27a}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classTranslateOp_a35f16c6a9cf4c03edffa19d86e73d27a}{m\+\_\+translation} -\begin{DoxyCompactList}\small\item\em Translation of input point. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Translate\+Op$<$ T $>$} - -Translation operator. Can translate an input point. - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}\item -Source/\hyperlink{EBGeometry__TransformOpsImplem_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classTranslateOp__coll__graph.md5 b/docs/doxygen/latex/classTranslateOp__coll__graph.md5 deleted file mode 100644 index 1a43f791..00000000 --- a/docs/doxygen/latex/classTranslateOp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ba80cb345da2c1a8ec1466c2bf313edc \ No newline at end of file diff --git a/docs/doxygen/latex/classTranslateOp__coll__graph.pdf b/docs/doxygen/latex/classTranslateOp__coll__graph.pdf deleted file mode 100644 index 4a806795..00000000 Binary files a/docs/doxygen/latex/classTranslateOp__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classTranslateOp__inherit__graph.md5 b/docs/doxygen/latex/classTranslateOp__inherit__graph.md5 deleted file mode 100644 index 9f9afd89..00000000 --- a/docs/doxygen/latex/classTranslateOp__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2570f911b11401cfd5616bf7f7910d6b \ No newline at end of file diff --git a/docs/doxygen/latex/classTranslateOp__inherit__graph.pdf b/docs/doxygen/latex/classTranslateOp__inherit__graph.pdf deleted file mode 100644 index 4a806795..00000000 Binary files a/docs/doxygen/latex/classTranslateOp__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classUnion.tex b/docs/doxygen/latex/classUnion.tex deleted file mode 100644 index fc2aba61..00000000 --- a/docs/doxygen/latex/classUnion.tex +++ /dev/null @@ -1,119 +0,0 @@ -\hypertarget{classUnion}{}\section{Union$<$ T $>$ Class Template Reference} -\label{classUnion}\index{Union$<$ T $>$@{Union$<$ T $>$}} - - -Distance function union. Computes the signed distance to the closest object of N non-\/overlapping objects. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Union.\+hpp$>$} - - - -Inheritance diagram for Union$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classUnion__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Union$<$ T $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classUnion__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnion_a9e9d1d95ae54fa471c6f29e778239021}\label{classUnion_a9e9d1d95ae54fa471c6f29e778239021}} -using \hyperlink{classUnion_a9e9d1d95ae54fa471c6f29e778239021}{S\+DF} = \hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnion_a2dea7d7ed6d5456f87feff0e02c99453}\label{classUnion_a2dea7d7ed6d5456f87feff0e02c99453}} -\hyperlink{classUnion_a2dea7d7ed6d5456f87feff0e02c99453}{Union} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed, use the full constructor. \end{DoxyCompactList}\item -\hyperlink{classUnion_a7f1a9e850f8965dc35e221b23a55e451}{Union} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classUnion_a9e9d1d95ae54fa471c6f29e778239021}{S\+DF} $>$ $>$ \&a\+\_\+distance\+Functions, const bool a\+\_\+flip\+Sign) -\begin{DoxyCompactList}\small\item\em Full constructor. Computes the signed distance. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnion_a5c4f15da1b35f6f6643d49ed18faa386}\label{classUnion_a5c4f15da1b35f6f6643d49ed18faa386}} -virtual \hyperlink{classUnion_a5c4f15da1b35f6f6643d49ed18faa386}{$\sim$\+Union} ()=default -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -T \hyperlink{classUnion_a08beffd354ca261e3d31bcb453951810}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept override -\begin{DoxyCompactList}\small\item\em Value function. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnion_a5d2f543272ab5fe25f6f5945ad1ef27f}\label{classUnion_a5d2f543272ab5fe25f6f5945ad1ef27f}} -std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classUnion_a9e9d1d95ae54fa471c6f29e778239021}{S\+DF} $>$ $>$ \hyperlink{classUnion_a5d2f543272ab5fe25f6f5945ad1ef27f}{m\+\_\+distance\+Functions} -\begin{DoxyCompactList}\small\item\em List of distance functions. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnion_a53b9705419030572836a540e7fa3752f}\label{classUnion_a53b9705419030572836a540e7fa3752f}} -bool \hyperlink{classUnion_a53b9705419030572836a540e7fa3752f}{m\+\_\+flip\+Sign} -\begin{DoxyCompactList}\small\item\em Hook for turning inside to outside. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Additional Inherited Members} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Union$<$ T $>$} - -Distance function union. Computes the signed distance to the closest object of N non-\/overlapping objects. - -\begin{DoxyNote}{Note} -This class only makes sense if the object do not overlap. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classUnion_a7f1a9e850f8965dc35e221b23a55e451}\label{classUnion_a7f1a9e850f8965dc35e221b23a55e451}} -\index{Union@{Union}!Union@{Union}} -\index{Union@{Union}!Union@{Union}} -\subsubsection{\texorpdfstring{Union()}{Union()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classUnion}{Union}$<$ T $>$\+::\hyperlink{classUnion}{Union} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classUnion_a9e9d1d95ae54fa471c6f29e778239021}{S\+DF} $>$ $>$ \&}]{a\+\_\+distance\+Functions, }\item[{const bool}]{a\+\_\+flip\+Sign }\end{DoxyParamCaption})} - - - -Full constructor. Computes the signed distance. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+distance\+Functions} & Distance functions \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Sign} & Hook for turning inside to outside \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classUnion_a08beffd354ca261e3d31bcb453951810}\label{classUnion_a08beffd354ca261e3d31bcb453951810}} -\index{Union@{Union}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Union@{Union}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classUnion}{Union}$<$ T $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}} - - - -Value function. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point. \\ -\hline -\end{DoxyParams} - - -Implements \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{Signed\+Distance\+Function$<$ T $>$}. - - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp}\item -Source/\hyperlink{EBGeometry__UnionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classUnionBVH.tex b/docs/doxygen/latex/classUnionBVH.tex deleted file mode 100644 index 07590de3..00000000 --- a/docs/doxygen/latex/classUnionBVH.tex +++ /dev/null @@ -1,180 +0,0 @@ -\hypertarget{classUnionBVH}{}\section{Union\+B\+VH$<$ T, BV, K $>$ Class Template Reference} -\label{classUnionBVH}\index{Union\+B\+V\+H$<$ T, B\+V, K $>$@{Union\+B\+V\+H$<$ T, B\+V, K $>$}} - - -Distance function union using B\+V\+Hs. Computes the signed distance to the closest object of N non-\/overlapping objects. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp$>$} - - - -Inheritance diagram for Union\+B\+VH$<$ T, BV, K $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classUnionBVH__inherit__graph} -\end{center} -\end{figure} - - -Collaboration diagram for Union\+B\+VH$<$ T, BV, K $>$\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=227pt]{classUnionBVH__coll__graph} -\end{center} -\end{figure} -\subsection*{Public Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}\label{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}} -using \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} = \hyperlink{classSignedDistanceFunction}{Signed\+Distance\+Function}$<$ T $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}\label{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}} -using \hyperlink{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}{B\+V\+Constructor} = E\+B\+Geometry\+::\+B\+V\+H\+::\+B\+V\+ConstructorT$<$ \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF}, BV $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. This is a std\+::function$<$\+B\+V(\+S\+D\+F)$>$, i.\+e. a function which returns a bounding volume for an S\+DF. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnionBVH_aa2d9a2e95e58a0d7dfb2b92283626cac}\label{classUnionBVH_aa2d9a2e95e58a0d7dfb2b92283626cac}} -\hyperlink{classUnionBVH_aa2d9a2e95e58a0d7dfb2b92283626cac}{Union\+B\+VH} ()=delete -\begin{DoxyCompactList}\small\item\em Disallowed, use the full constructor. \end{DoxyCompactList}\item -\hyperlink{classUnionBVH_a6a0a50fcddc59dbb1c9b9444b0fce117}{Union\+B\+VH} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} $>$ $>$ \&a\+\_\+distance\+Functions, const bool a\+\_\+flip\+Sign) -\begin{DoxyCompactList}\small\item\em Partial constructor. Associates distance functions but does not build \hyperlink{namespaceBVH}{B\+VH} tree. \end{DoxyCompactList}\item -\hyperlink{classUnionBVH_a9eb2c19a0fdc645e068c09398d3dd0f3}{Union\+B\+VH} (const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} $>$ $>$ \&a\+\_\+distance\+Functions, const bool a\+\_\+flip\+Sign, const \hyperlink{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}{B\+V\+Constructor} \&a\+\_\+bv\+Constructor) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -void \hyperlink{classUnionBVH_a97769f4c449610b681a70b93c99a40ca}{build\+Tree} (const \hyperlink{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}{B\+V\+Constructor} \&a\+\_\+bv\+Constructor) -\begin{DoxyCompactList}\small\item\em Build \hyperlink{namespaceBVH}{B\+VH} tree for the input objects. User must supply a partitioner and a BV constructor for the S\+DF objects. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_aac0a1f16ad0a273e72c8bcd15b80f336}\label{classUnionBVH_aac0a1f16ad0a273e72c8bcd15b80f336}} -virtual \hyperlink{classUnionBVH_aac0a1f16ad0a273e72c8bcd15b80f336}{$\sim$\+Union\+B\+VH} ()=default -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -T \hyperlink{classUnionBVH_a9681fdc161e2e077a33caaddb78fb4ba}{signed\+Distance} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+point) const noexcept override -\begin{DoxyCompactList}\small\item\em Value function. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Types} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnionBVH_ac23ace50239fbe00130df2a7e42af995}\label{classUnionBVH_ac23ace50239fbe00130df2a7e42af995}} -using \hyperlink{classUnionBVH_ac23ace50239fbe00130df2a7e42af995}{S\+D\+F\+List} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} $>$ $>$ -\begin{DoxyCompactList}\small\item\em Alias for cutting down on typing. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_a9fd434576440274a81c0251962d7ff7e}\label{classUnionBVH_a9fd434576440274a81c0251962d7ff7e}} -using \hyperlink{classUnionBVH_a9fd434576440274a81c0251962d7ff7e}{Builder\+Node} = E\+B\+Geometry\+::\+B\+V\+H\+::\+NodeT$<$ T, \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF}, BV, K $>$ -\begin{DoxyCompactList}\small\item\em Builder node type in \hyperlink{namespaceBVH}{B\+VH} tree. Tree is constructed in \char`\"{}full\char`\"{}. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_a25cac5a9dc5396299f06399434ebe212}\label{classUnionBVH_a25cac5a9dc5396299f06399434ebe212}} -using \hyperlink{classUnionBVH_a25cac5a9dc5396299f06399434ebe212}{Linear\+Node} = E\+B\+Geometry\+::\+B\+V\+H\+::\+Linear\+B\+VH$<$ T, \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF}, BV, K $>$ -\begin{DoxyCompactList}\small\item\em Node type in \hyperlink{namespaceBVH}{B\+VH} tree. We use a flattened tree. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classUnionBVH_a026a103a13d0b04bedb6dabd50e4da69}\label{classUnionBVH_a026a103a13d0b04bedb6dabd50e4da69}} -std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} $>$ $>$ \hyperlink{classUnionBVH_a026a103a13d0b04bedb6dabd50e4da69}{m\+\_\+distance\+Functions} -\begin{DoxyCompactList}\small\item\em List of distance functions. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_ad59be4f96e0f020c28f4677dcb94a004}\label{classUnionBVH_ad59be4f96e0f020c28f4677dcb94a004}} -std\+::shared\+\_\+ptr$<$ \hyperlink{classUnionBVH_a25cac5a9dc5396299f06399434ebe212}{Linear\+Node} $>$ \hyperlink{classUnionBVH_ad59be4f96e0f020c28f4677dcb94a004}{m\+\_\+root\+Node} -\begin{DoxyCompactList}\small\item\em Root node for \hyperlink{namespaceBVH}{B\+VH} tree. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_a2c3a008bd61f225a83c959f2280b9649}\label{classUnionBVH_a2c3a008bd61f225a83c959f2280b9649}} -bool \hyperlink{classUnionBVH_a2c3a008bd61f225a83c959f2280b9649}{m\+\_\+is\+Good} -\begin{DoxyCompactList}\small\item\em Is good or not. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classUnionBVH_a0782d93bd0a7bff7580a99e6fef285c7}\label{classUnionBVH_a0782d93bd0a7bff7580a99e6fef285c7}} -bool \hyperlink{classUnionBVH_a0782d93bd0a7bff7580a99e6fef285c7}{m\+\_\+flip\+Sign} -\begin{DoxyCompactList}\small\item\em Hook for turning inside to outside. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Additional Inherited Members} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T, class BV, int K$>$\newline -class Union\+B\+V\+H$<$ T, B\+V, K $>$} - -Distance function union using B\+V\+Hs. Computes the signed distance to the closest object of N non-\/overlapping objects. - -\begin{DoxyNote}{Note} -This class only makes sense if the object do not overlap. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classUnionBVH_a6a0a50fcddc59dbb1c9b9444b0fce117}\label{classUnionBVH_a6a0a50fcddc59dbb1c9b9444b0fce117}} -\index{Union\+B\+VH@{Union\+B\+VH}!Union\+B\+VH@{Union\+B\+VH}} -\index{Union\+B\+VH@{Union\+B\+VH}!Union\+B\+VH@{Union\+B\+VH}} -\subsubsection{\texorpdfstring{Union\+B\+V\+H()}{UnionBVH()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T , class BV , int K$>$ \\ -\hyperlink{classUnionBVH}{Union\+B\+VH}$<$ T, BV, K $>$\+::\hyperlink{classUnionBVH}{Union\+B\+VH} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} $>$ $>$ \&}]{a\+\_\+distance\+Functions, }\item[{const bool}]{a\+\_\+flip\+Sign }\end{DoxyParamCaption})} - - - -Partial constructor. Associates distance functions but does not build \hyperlink{namespaceBVH}{B\+VH} tree. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+distance\+Functions} & Signed distance functions. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Sign} & Hook for turning inside to outside \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classUnionBVH_a9eb2c19a0fdc645e068c09398d3dd0f3}\label{classUnionBVH_a9eb2c19a0fdc645e068c09398d3dd0f3}} -\index{Union\+B\+VH@{Union\+B\+VH}!Union\+B\+VH@{Union\+B\+VH}} -\index{Union\+B\+VH@{Union\+B\+VH}!Union\+B\+VH@{Union\+B\+VH}} -\subsubsection{\texorpdfstring{Union\+B\+V\+H()}{UnionBVH()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T , class BV , int K$>$ \\ -\hyperlink{classUnionBVH}{Union\+B\+VH}$<$ T, BV, K $>$\+::\hyperlink{classUnionBVH}{Union\+B\+VH} (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \hyperlink{classUnionBVH_a5d1d64d7cabf1000fc1a804d06e103cc}{S\+DF} $>$ $>$ \&}]{a\+\_\+distance\+Functions, }\item[{const bool}]{a\+\_\+flip\+Sign, }\item[{const \hyperlink{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}{B\+V\+Constructor} \&}]{a\+\_\+bv\+Constructor }\end{DoxyParamCaption})} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+distance\+Functions} & Signed distance functions. \\ -\hline -\mbox{\tt in} & {\em a\+\_\+flip\+Sign} & Hook for turning inside to outside \\ -\hline -\mbox{\tt in} & {\em a\+\_\+bv\+Constructor} & Bounding volume constructor. \\ -\hline -\end{DoxyParams} - - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classUnionBVH_a97769f4c449610b681a70b93c99a40ca}\label{classUnionBVH_a97769f4c449610b681a70b93c99a40ca}} -\index{Union\+B\+VH@{Union\+B\+VH}!build\+Tree@{build\+Tree}} -\index{build\+Tree@{build\+Tree}!Union\+B\+VH@{Union\+B\+VH}} -\subsubsection{\texorpdfstring{build\+Tree()}{buildTree()}} -{\footnotesize\ttfamily template$<$class T , class BV , int K$>$ \\ -void \hyperlink{classUnionBVH}{Union\+B\+VH}$<$ T, BV, K $>$\+::build\+Tree (\begin{DoxyParamCaption}\item[{const \hyperlink{classUnionBVH_a09561e026cd6a7da1a7dbdbad5eea2c2}{B\+V\+Constructor} \&}]{a\+\_\+bv\+Constructor }\end{DoxyParamCaption})} - - - -Build \hyperlink{namespaceBVH}{B\+VH} tree for the input objects. User must supply a partitioner and a BV constructor for the S\+DF objects. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+bv\+Constructor} & Constructor for building a bounding volume that encloses an object. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classUnionBVH_a9681fdc161e2e077a33caaddb78fb4ba}\label{classUnionBVH_a9681fdc161e2e077a33caaddb78fb4ba}} -\index{Union\+B\+VH@{Union\+B\+VH}!signed\+Distance@{signed\+Distance}} -\index{signed\+Distance@{signed\+Distance}!Union\+B\+VH@{Union\+B\+VH}} -\subsubsection{\texorpdfstring{signed\+Distance()}{signedDistance()}} -{\footnotesize\ttfamily template$<$class T , class BV , int K$>$ \\ -T \hyperlink{classUnionBVH}{Union\+B\+VH}$<$ T, BV, K $>$\+::signed\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+point }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}} - - - -Value function. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+point} & 3D point. \\ -\hline -\end{DoxyParams} - - -Implements \hyperlink{classSignedDistanceFunction_af5912280ca51dc21a2d6949a30ec7d21}{Signed\+Distance\+Function$<$ T $>$}. - - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp}\item -Source/\hyperlink{EBGeometry__UnionBVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classUnionBVH__coll__graph.md5 b/docs/doxygen/latex/classUnionBVH__coll__graph.md5 deleted file mode 100644 index bf81be02..00000000 --- a/docs/doxygen/latex/classUnionBVH__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c4e0f8455553a7f5c13f73c010407e34 \ No newline at end of file diff --git a/docs/doxygen/latex/classUnionBVH__coll__graph.pdf b/docs/doxygen/latex/classUnionBVH__coll__graph.pdf deleted file mode 100644 index 6d09f1bf..00000000 Binary files a/docs/doxygen/latex/classUnionBVH__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classUnionBVH__inherit__graph.md5 b/docs/doxygen/latex/classUnionBVH__inherit__graph.md5 deleted file mode 100644 index 5526dae2..00000000 --- a/docs/doxygen/latex/classUnionBVH__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -4882037545377e04a18daa266ede5211 \ No newline at end of file diff --git a/docs/doxygen/latex/classUnionBVH__inherit__graph.pdf b/docs/doxygen/latex/classUnionBVH__inherit__graph.pdf deleted file mode 100644 index 6d09f1bf..00000000 Binary files a/docs/doxygen/latex/classUnionBVH__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classUnion__coll__graph.md5 b/docs/doxygen/latex/classUnion__coll__graph.md5 deleted file mode 100644 index c67dff12..00000000 --- a/docs/doxygen/latex/classUnion__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -83cc046ffd0eec0795792bfa552653b9 \ No newline at end of file diff --git a/docs/doxygen/latex/classUnion__coll__graph.pdf b/docs/doxygen/latex/classUnion__coll__graph.pdf deleted file mode 100644 index 2ce2ca18..00000000 Binary files a/docs/doxygen/latex/classUnion__coll__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classUnion__inherit__graph.md5 b/docs/doxygen/latex/classUnion__inherit__graph.md5 deleted file mode 100644 index 82ceb939..00000000 --- a/docs/doxygen/latex/classUnion__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6d11435472018ef2dd3f298b7cde409d \ No newline at end of file diff --git a/docs/doxygen/latex/classUnion__inherit__graph.pdf b/docs/doxygen/latex/classUnion__inherit__graph.pdf deleted file mode 100644 index 2ce2ca18..00000000 Binary files a/docs/doxygen/latex/classUnion__inherit__graph.pdf and /dev/null differ diff --git a/docs/doxygen/latex/classVec2T.tex b/docs/doxygen/latex/classVec2T.tex deleted file mode 100644 index 36d2fc53..00000000 --- a/docs/doxygen/latex/classVec2T.tex +++ /dev/null @@ -1,323 +0,0 @@ -\hypertarget{classVec2T}{}\section{Vec2T$<$ T $>$ Class Template Reference} -\label{classVec2T}\index{Vec2\+T$<$ T $>$@{Vec2\+T$<$ T $>$}} - - -Two-\/dimensional vector class with arithmetic operators. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Vec.\+hpp$>$} - -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classVec2T_a4aa6e0bd3922abd84449278429a03418}\label{classVec2T_a4aa6e0bd3922abd84449278429a03418}} -\hyperlink{classVec2T_a4aa6e0bd3922abd84449278429a03418}{Vec2T} () -\begin{DoxyCompactList}\small\item\em Default constructor. Sets the vector to the zero vector. \end{DoxyCompactList}\item -\hyperlink{classVec2T_a15e8a7710ad0a1de03a34660ae54e96e}{Vec2T} (const \hyperlink{classVec2T}{Vec2T} \&u) -\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item -\hyperlink{classVec2T_a0721d6450bab8361f76ee63826f9e8f4}{Vec2T} (const T \&a\+\_\+x, const T \&a\+\_\+y) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_a15a9bac13b94b58f0907443bc551dbee}\label{classVec2T_a15a9bac13b94b58f0907443bc551dbee}} -\hyperlink{classVec2T_a15a9bac13b94b58f0907443bc551dbee}{$\sim$\+Vec2T} ()=default -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T_ab44f1c41a9a73757430403ea47e1ff33}{operator=} (const \hyperlink{classVec2T}{Vec2T} \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Assignment operator. Sets this.\+x = a\+\_\+other.\+x and this.\+y = a\+\_\+other.\+y. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a0ea1e944e722dfdc3a37ebd7ef922eea}{operator+} (const \hyperlink{classVec2T}{Vec2T} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Addition operator. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a788b057579c3c92068e15595d7781734}{operator-\/} (const \hyperlink{classVec2T}{Vec2T} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Subtraction operator. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_aa8176b9c1a1331f1b0358188cd04883f}\label{classVec2T_aa8176b9c1a1331f1b0358188cd04883f}} -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_aa8176b9c1a1331f1b0358188cd04883f}{operator-\/} () const noexcept -\begin{DoxyCompactList}\small\item\em Negation operator. Returns a new Vec2\+T$<$\+T$>$ with negated components. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a1047f21e704d25c4bc5980cd13c00e1c}{operator$\ast$} (const T \&s) const noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a3cc96a6930ed713df486d177490e1e5c}{operator/} (const T \&s) const noexcept -\begin{DoxyCompactList}\small\item\em Division operator. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T_a6f5fbfd88dc2eac09f17fb999c76e5b0}{operator+=} (const \hyperlink{classVec2T}{Vec2T} \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Addition operator. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T_a6c98f1e7b2bb5479e3616fbda7124313}{operator-\/=} (const \hyperlink{classVec2T}{Vec2T} \&a\+\_\+other) noexcept -\begin{DoxyCompactList}\small\item\em Subtraction operator. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T_ad7525f66bf0c609e79e1d2590af6be0c}{operator$\ast$=} (const T \&s) noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator. \end{DoxyCompactList}\item -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T_a84e4a2ee2d84fbb42c84d0638ff929f8}{operator/=} (const T \&s) noexcept -\begin{DoxyCompactList}\small\item\em Division operator operator. \end{DoxyCompactList}\item -T \hyperlink{classVec2T_ab7ed0195847b7a1037051402967780a3}{dot} (const \hyperlink{classVec2T}{Vec2T} \&a\+\_\+other) const noexcept -\begin{DoxyCompactList}\small\item\em Dot product operator. \end{DoxyCompactList}\item -T \hyperlink{classVec2T_ad7965b8d549a5f9d08cab43760dab56b}{length} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute length of vector. \end{DoxyCompactList}\item -T \hyperlink{classVec2T_a9beb3ae1b8b76926f8864686cb6a2ace}{length2} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute square of vector. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Static Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classVec2T_a3c243787a7817ce09946691cdf14d0e0}\label{classVec2T_a3c243787a7817ce09946691cdf14d0e0}} -static constexpr \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a3c243787a7817ce09946691cdf14d0e0}{zero} () noexcept -\begin{DoxyCompactList}\small\item\em Return av vector with x = y = 0. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_a9103ce94a3efa9e85cb732fb68af744e}\label{classVec2T_a9103ce94a3efa9e85cb732fb68af744e}} -static constexpr \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a9103ce94a3efa9e85cb732fb68af744e}{one} () noexcept -\begin{DoxyCompactList}\small\item\em Return av vector with x = y = 1. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_aca5161a674a3546a8c9d5543537548a3}\label{classVec2T_aca5161a674a3546a8c9d5543537548a3}} -static constexpr \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_aca5161a674a3546a8c9d5543537548a3}{min} () noexcept -\begin{DoxyCompactList}\small\item\em Return minimum possible representative vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_a1211175344f9ee8bc0fd4ac2589799d8}\label{classVec2T_a1211175344f9ee8bc0fd4ac2589799d8}} -static constexpr \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a1211175344f9ee8bc0fd4ac2589799d8}{max} () noexcept -\begin{DoxyCompactList}\small\item\em Return maximum possible representative vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_a28b453ff4fd4ede74e401454b67f73d6}\label{classVec2T_a28b453ff4fd4ede74e401454b67f73d6}} -static constexpr \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T_a28b453ff4fd4ede74e401454b67f73d6}{infinity} () noexcept -\begin{DoxyCompactList}\small\item\em Return a vector with inf components. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Public Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classVec2T_a66ea295b52114b22de1f76cce1aa7f51}\label{classVec2T_a66ea295b52114b22de1f76cce1aa7f51}} -T \hyperlink{classVec2T_a66ea295b52114b22de1f76cce1aa7f51}{x} -\begin{DoxyCompactList}\small\item\em First component in the vector. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec2T_a71ce5251d618a6dbd4e0e7a0f867b6cf}\label{classVec2T_a71ce5251d618a6dbd4e0e7a0f867b6cf}} -T \hyperlink{classVec2T_a71ce5251d618a6dbd4e0e7a0f867b6cf}{y} -\begin{DoxyCompactList}\small\item\em Second component in the vector. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Vec2\+T$<$ T $>$} - -Two-\/dimensional vector class with arithmetic operators. - -The class has a public-\/only interface. To change it\textquotesingle{}s components one can call the member functions, or set components directly, e.\+g. vec.\+x = 5.\+0 \begin{DoxyNote}{Note} -\hyperlink{classVec2T}{Vec2T} is a templated class primarily used with D\+C\+EL grids. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classVec2T_a15e8a7710ad0a1de03a34660ae54e96e}\label{classVec2T_a15e8a7710ad0a1de03a34660ae54e96e}} -\index{Vec2T@{Vec2T}!Vec2T@{Vec2T}} -\index{Vec2T@{Vec2T}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{Vec2\+T()}{Vec2T()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::\hyperlink{classVec2T}{Vec2T} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Copy constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector\\ -\hline -\end{DoxyParams} -Sets $\ast$this = u \mbox{\Hypertarget{classVec2T_a0721d6450bab8361f76ee63826f9e8f4}\label{classVec2T_a0721d6450bab8361f76ee63826f9e8f4}} -\index{Vec2T@{Vec2T}!Vec2T@{Vec2T}} -\index{Vec2T@{Vec2T}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{Vec2\+T()}{Vec2T()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::\hyperlink{classVec2T}{Vec2T} (\begin{DoxyParamCaption}\item[{const T \&}]{a\+\_\+x, }\item[{const T \&}]{a\+\_\+y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x} & First vector component \\ -\hline -\mbox{\tt in} & {\em a\+\_\+y} & Second vector component\\ -\hline -\end{DoxyParams} -Sets this-\/$>$x = a\+\_\+x and this-\/$>$y = a\+\_\+y - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classVec2T_ab7ed0195847b7a1037051402967780a3}\label{classVec2T_ab7ed0195847b7a1037051402967780a3}} -\index{Vec2T@{Vec2T}!dot@{dot}} -\index{dot@{dot}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{dot()}{dot()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::dot (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Dot product operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & other vector\\ -\hline -\end{DoxyParams} -Returns the dot product, i.\+e. this-\/$>$x$\ast$a\+\_\+other.x + this-\/$>$y+a\+\_\+other.y \mbox{\Hypertarget{classVec2T_ad7965b8d549a5f9d08cab43760dab56b}\label{classVec2T_ad7965b8d549a5f9d08cab43760dab56b}} -\index{Vec2T@{Vec2T}!length@{length}} -\index{length@{length}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{length()}{length()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::length (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute length of vector. - -\begin{DoxyReturn}{Returns} -Returns length of vector, i.\+e. sqrt\mbox{[}(this-\/$>$x)$\ast$(this-\/$>$x) + (this-\/$>$y)$\ast$(this-\/$>$y)\mbox{]} -\end{DoxyReturn} -\mbox{\Hypertarget{classVec2T_a9beb3ae1b8b76926f8864686cb6a2ace}\label{classVec2T_a9beb3ae1b8b76926f8864686cb6a2ace}} -\index{Vec2T@{Vec2T}!length2@{length2}} -\index{length2@{length2}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{length2()}{length2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::length2 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute square of vector. - -\begin{DoxyReturn}{Returns} -Returns length of vector, i.\+e. (this-\/$>$x)$\ast$(this-\/$>$x) + (this-\/$>$y)$\ast$(this-\/$>$y) -\end{DoxyReturn} -\mbox{\Hypertarget{classVec2T_a1047f21e704d25c4bc5980cd13c00e1c}\label{classVec2T_a1047f21e704d25c4bc5980cd13c00e1c}} -\index{Vec2T@{Vec2T}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator$\ast$ (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to be multiplied\\ -\hline -\end{DoxyParams} -Returns a new Vec2\+T$<$\+T$>$ with components x = s$\ast$this-\/$>$x (and same for y) \mbox{\Hypertarget{classVec2T_ad7525f66bf0c609e79e1d2590af6be0c}\label{classVec2T_ad7525f66bf0c609e79e1d2590af6be0c}} -\index{Vec2T@{Vec2T}!operator$\ast$=@{operator$\ast$=}} -\index{operator$\ast$=@{operator$\ast$=}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator$\ast$=()}{operator*=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator$\ast$= (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to multiply by\\ -\hline -\end{DoxyParams} -Returns ($\ast$this) with components this-\/$>$x = s$\ast$this-\/$>$x (and same for y) \mbox{\Hypertarget{classVec2T_a0ea1e944e722dfdc3a37ebd7ef922eea}\label{classVec2T_a0ea1e944e722dfdc3a37ebd7ef922eea}} -\index{Vec2T@{Vec2T}!operator+@{operator+}} -\index{operator+@{operator+}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator+()}{operator+()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator+ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Addition operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other vector\\ -\hline -\end{DoxyParams} -Returns a new object with component x = this-\/$>$x + a\+\_\+other.\+x (same for y-\/component) \mbox{\Hypertarget{classVec2T_a6f5fbfd88dc2eac09f17fb999c76e5b0}\label{classVec2T_a6f5fbfd88dc2eac09f17fb999c76e5b0}} -\index{Vec2T@{Vec2T}!operator+=@{operator+=}} -\index{operator+=@{operator+=}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator+=()}{operator+=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator+= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Addition operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other vector to add\\ -\hline -\end{DoxyParams} -Returns ($\ast$this) with components this-\/$>$x = this-\/$>$x + a\+\_\+other.\+x (and same for y) \mbox{\Hypertarget{classVec2T_a788b057579c3c92068e15595d7781734}\label{classVec2T_a788b057579c3c92068e15595d7781734}} -\index{Vec2T@{Vec2T}!operator-\/@{operator-\/}} -\index{operator-\/@{operator-\/}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator-\/()}{operator-()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator-\/ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Subtraction operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other vector\\ -\hline -\end{DoxyParams} -Returns a new object with component x = this-\/$>$x -\/ a\+\_\+other.\+x (same for y-\/component) \mbox{\Hypertarget{classVec2T_a6c98f1e7b2bb5479e3616fbda7124313}\label{classVec2T_a6c98f1e7b2bb5479e3616fbda7124313}} -\index{Vec2T@{Vec2T}!operator-\/=@{operator-\/=}} -\index{operator-\/=@{operator-\/=}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator-\/=()}{operator-=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator-\/= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Subtraction operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other vector to subtract\\ -\hline -\end{DoxyParams} -Returns ($\ast$this) with components this-\/$>$x = this-\/$>$x -\/ a\+\_\+other.\+x (and same for y) \mbox{\Hypertarget{classVec2T_a3cc96a6930ed713df486d177490e1e5c}\label{classVec2T_a3cc96a6930ed713df486d177490e1e5c}} -\index{Vec2T@{Vec2T}!operator/@{operator/}} -\index{operator/@{operator/}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator/ (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to be multiplied\\ -\hline -\end{DoxyParams} -Returns a new Vec2\+T$<$\+T$>$ with components x = (1/s)$\ast$this-\/$>$x (and same for y) \mbox{\Hypertarget{classVec2T_a84e4a2ee2d84fbb42c84d0638ff929f8}\label{classVec2T_a84e4a2ee2d84fbb42c84d0638ff929f8}} -\index{Vec2T@{Vec2T}!operator/=@{operator/=}} -\index{operator/=@{operator/=}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator/=()}{operator/=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator/= (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to divide by\\ -\hline -\end{DoxyParams} -Returns ($\ast$this) with components this-\/$>$x = (1/s)$\ast$this-\/$>$x (and same for y) \mbox{\Hypertarget{classVec2T_ab44f1c41a9a73757430403ea47e1ff33}\label{classVec2T_ab44f1c41a9a73757430403ea47e1ff33}} -\index{Vec2T@{Vec2T}!operator=@{operator=}} -\index{operator=@{operator=}!Vec2T@{Vec2T}} -\subsubsection{\texorpdfstring{operator=()}{operator=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec2T}{Vec2T}$<$ T $>$ \& \hyperlink{classVec2T}{Vec2T}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec2T}{Vec2T}$<$ T $>$ \&}]{a\+\_\+other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Assignment operator. Sets this.\+x = a\+\_\+other.\+x and this.\+y = a\+\_\+other.\+y. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+other} & Other vector \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp}\item -Source/\hyperlink{EBGeometry__VecImplem_8hpp}{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/classVec3T.tex b/docs/doxygen/latex/classVec3T.tex deleted file mode 100644 index 4510d308..00000000 --- a/docs/doxygen/latex/classVec3T.tex +++ /dev/null @@ -1,622 +0,0 @@ -\hypertarget{classVec3T}{}\section{Vec3T$<$ T $>$ Class Template Reference} -\label{classVec3T}\index{Vec3\+T$<$ T $>$@{Vec3\+T$<$ T $>$}} - - -Three-\/dimensional vector class with arithmetic operators. - - - - -{\ttfamily \#include $<$E\+B\+Geometry\+\_\+\+Vec.\+hpp$>$} - -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classVec3T_a919b1cabc678f8d71763e03fab500334}\label{classVec3T_a919b1cabc678f8d71763e03fab500334}} -\hyperlink{classVec3T_a919b1cabc678f8d71763e03fab500334}{Vec3T} () -\begin{DoxyCompactList}\small\item\em Default constructor. Sets the vector to the zero vector. \end{DoxyCompactList}\item -\hyperlink{classVec3T_ab328767434f527b25c110dc83a0cb7ee}{Vec3T} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&a\+\_\+u) -\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item -\hyperlink{classVec3T_acc3573bc8c3232eb14a22ca833cbce30}{Vec3T} (const T \&a\+\_\+x, const T \&a\+\_\+y, const T \&a\+\_\+z) -\begin{DoxyCompactList}\small\item\em Full constructor. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec3T_a505fc5de8e213d1fc8e0df5f3b7a3dc7}\label{classVec3T_a505fc5de8e213d1fc8e0df5f3b7a3dc7}} -\hyperlink{classVec3T_a505fc5de8e213d1fc8e0df5f3b7a3dc7}{$\sim$\+Vec3T} ()=default -\begin{DoxyCompactList}\small\item\em Destructor (does nothing) \end{DoxyCompactList}\item -T \& \hyperlink{classVec3T_a098a19968b6c7b0b76c2572e5236a71a}{operator\mbox{[}$\,$\mbox{]}} (int i) noexcept -\begin{DoxyCompactList}\small\item\em Return component in vector. (i=0 =$>$ x and so on) \end{DoxyCompactList}\item -const T \& \hyperlink{classVec3T_ad09224c5f7e142059d75772c0cbd1990}{operator\mbox{[}$\,$\mbox{]}} (int i) const noexcept -\begin{DoxyCompactList}\small\item\em Return non-\/modifiable component in vector. (i=0 =$>$ x and so on) \end{DoxyCompactList}\item -bool \hyperlink{classVec3T_a715546682c26647643148a80087c4ab4}{operator==} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em Comparison operator. Returns true if all components are the same. \end{DoxyCompactList}\item -bool \hyperlink{classVec3T_aba830919c5020bb060f39fe9df6b7ca1}{operator$<$} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em \char`\"{}\+Smaller than\char`\"{} operator. \end{DoxyCompactList}\item -bool \hyperlink{classVec3T_af99810068907e4935ac38bc397ba1102}{operator$>$} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em \char`\"{}\+Greater than\char`\"{} operator. \end{DoxyCompactList}\item -bool \hyperlink{classVec3T_a266a34a83b9f23a391151be45a4e39f8}{operator$<$=} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em \char`\"{}\+Smaller or equal to\char`\"{} operator. \end{DoxyCompactList}\item -bool \hyperlink{classVec3T_a3296f8319642088e08bd2d3e253fcd64}{operator$>$=} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em \char`\"{}\+Greater or equal to\char`\"{} operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T_a34681a81b55b4e7ae818e01b5f27a3e0}{operator=} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Assignment operator. Sets components equal to the argument vector\textquotesingle{}s components. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_af1ab895de89a1a3143f58d2ce5d78bc2}{operator+} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em Addition operator. Returns a new vector with added compoments. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_ac00a70e55a93ecd8c60d29a129f8fbf3}{operator-\/} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em Subtraction operator. Returns a new vector with subtracted compoments. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec3T_a2d32936bb5a9ddc22152d301723bc3e0}\label{classVec3T_a2d32936bb5a9ddc22152d301723bc3e0}} -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_a2d32936bb5a9ddc22152d301723bc3e0}{operator-\/} () const noexcept -\begin{DoxyCompactList}\small\item\em Negation operator. Returns a vector with negated components. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_aa4768276707889db34a716e9e476b9f1}{operator$\ast$} (const T \&s) const noexcept -\begin{DoxyCompactList}\small\item\em Multiplication operator. Returns a vector with scalar multiplied components. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_a579db6fb2bed30b3f024d1a017d7a124}{operator$\ast$} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&s) const noexcept -\begin{DoxyCompactList}\small\item\em Component-\/wise multiplication operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_acc5973c1c82e51c597b47ba39870f528}{operator/} (const T \&s) const noexcept -\begin{DoxyCompactList}\small\item\em Division operator. Returns a vector with scalar divided components. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_a3c48111d27fb16cc3304e7aa2b4603fc}{operator/} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&v) const noexcept -\begin{DoxyCompactList}\small\item\em Component-\/wise division operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T_a7d06c56d8579d8b3695f43f62544f999}{operator+=} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Vector addition operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T_a8a580094450e167248f4ee089027fa40}{operator-\/=} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Vector subtraction operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T_a0448e51b7f785b14df47092929cb73a3}{operator$\ast$=} (const T \&s) noexcept -\begin{DoxyCompactList}\small\item\em Vector multiplication operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T_a9446e83162d3daee6133d12b354a3a41}{operator/=} (const T \&s) noexcept -\begin{DoxyCompactList}\small\item\em Vector division operator. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_ad0a0c9754ef8df1fa28abdaa01c246c4}{min} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Vector minimum function. Returns a new vector with componentwise minimums. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_ac126bbdaeff79e475327887bfa8aa62c}{max} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) noexcept -\begin{DoxyCompactList}\small\item\em Vector maximum function. Returns a new vector with componentwise maximums. \end{DoxyCompactList}\item -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_af628d2d42a93200a929bd54a1fe8353f}{cross} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em Vector cross product. \end{DoxyCompactList}\item -T \hyperlink{classVec3T_ab4bebdfbdc863826a1a7e86cad130ff8}{dot} (const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&u) const noexcept -\begin{DoxyCompactList}\small\item\em Vector dot product. \end{DoxyCompactList}\item -int \hyperlink{classVec3T_add4db9b06b01f85ce492742acae86545}{min\+Dir} (const bool a\+\_\+do\+Abs) const noexcept -\begin{DoxyCompactList}\small\item\em Return the direction which has the smallest component (can be absolute) \end{DoxyCompactList}\item -int \hyperlink{classVec3T_a292391c1f72ca66e100e7e70512ff9b1}{max\+Dir} (const bool a\+\_\+do\+Abs) const noexcept -\begin{DoxyCompactList}\small\item\em Return the direction which has the largest component (can be absolute) \end{DoxyCompactList}\item -T \hyperlink{classVec3T_a93c868b181e24a4f74702a8b8a36f815}{length} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute vector length. \end{DoxyCompactList}\item -T \hyperlink{classVec3T_aaed89aee434cfa0abd86fe33bff49b4e}{length2} () const noexcept -\begin{DoxyCompactList}\small\item\em Compute vector length squared. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Static Public Member Functions} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classVec3T_af438ba5c8990b07e566bf7e48dcbcfb2}\label{classVec3T_af438ba5c8990b07e566bf7e48dcbcfb2}} -static constexpr \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_af438ba5c8990b07e566bf7e48dcbcfb2}{zero} () noexcept -\begin{DoxyCompactList}\small\item\em Return av vector with x = y = z = 0. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec3T_a82237dfeed4017e952c893817afc3827}\label{classVec3T_a82237dfeed4017e952c893817afc3827}} -static constexpr \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_a82237dfeed4017e952c893817afc3827}{one} () noexcept -\begin{DoxyCompactList}\small\item\em Return av vector with x = y = z = 1. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec3T_a4f27fdac2e6ac4feffe148bb8857f8bc}\label{classVec3T_a4f27fdac2e6ac4feffe148bb8857f8bc}} -static constexpr \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_a4f27fdac2e6ac4feffe148bb8857f8bc}{min} () noexcept -\begin{DoxyCompactList}\small\item\em Return a vector with minimum representable components. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec3T_af06b99bd905435060149a61a13f61546}\label{classVec3T_af06b99bd905435060149a61a13f61546}} -static constexpr \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_af06b99bd905435060149a61a13f61546}{max} () noexcept -\begin{DoxyCompactList}\small\item\em Return a vector with maximum representable components. \end{DoxyCompactList}\item -\mbox{\Hypertarget{classVec3T_ad88913a21fd56327b28092c2e39ebc3e}\label{classVec3T_ad88913a21fd56327b28092c2e39ebc3e}} -static constexpr \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T_ad88913a21fd56327b28092c2e39ebc3e}{infinity} () noexcept -\begin{DoxyCompactList}\small\item\em Return a vector with inf components. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Protected Attributes} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{classVec3T_a0643a9f9a68edf5d4656f2e613c9624f}\label{classVec3T_a0643a9f9a68edf5d4656f2e613c9624f}} -T \hyperlink{classVec3T_a0643a9f9a68edf5d4656f2e613c9624f}{X} \mbox{[}3\mbox{]} -\begin{DoxyCompactList}\small\item\em Vector components. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -\subsubsection*{template$<$class T$>$\newline -class Vec3\+T$<$ T $>$} - -Three-\/dimensional vector class with arithmetic operators. - -The class has a public-\/only interface. To change it\textquotesingle{}s components one can call the member functions, or set components directly, e.\+g. vec.\+x = 5.\+0 \begin{DoxyNote}{Note} -\hyperlink{classVec3T}{Vec3T} is a templated class primarily used with D\+C\+EL grids. It is always 3D, i.\+e. independent of Chombo configuration settings. This lets one use D\+C\+EL functionality even though the simulation might only be 2D. -\end{DoxyNote} - - -\subsection{Constructor \& Destructor Documentation} -\mbox{\Hypertarget{classVec3T_ab328767434f527b25c110dc83a0cb7ee}\label{classVec3T_ab328767434f527b25c110dc83a0cb7ee}} -\index{Vec3T@{Vec3T}!Vec3T@{Vec3T}} -\index{Vec3T@{Vec3T}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{Vec3\+T()}{Vec3T()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::\hyperlink{classVec3T}{Vec3T} (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{a\+\_\+u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Copy constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+u} & Other vector\\ -\hline -\end{DoxyParams} -Sets $\ast$this = u \mbox{\Hypertarget{classVec3T_acc3573bc8c3232eb14a22ca833cbce30}\label{classVec3T_acc3573bc8c3232eb14a22ca833cbce30}} -\index{Vec3T@{Vec3T}!Vec3T@{Vec3T}} -\index{Vec3T@{Vec3T}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{Vec3\+T()}{Vec3T()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::\hyperlink{classVec3T}{Vec3T} (\begin{DoxyParamCaption}\item[{const T \&}]{a\+\_\+x, }\item[{const T \&}]{a\+\_\+y, }\item[{const T \&}]{a\+\_\+z }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} - - - -Full constructor. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+x} & First vector component \\ -\hline -\mbox{\tt in} & {\em a\+\_\+y} & Second vector component \\ -\hline -\mbox{\tt in} & {\em a\+\_\+z} & Third vector component\\ -\hline -\end{DoxyParams} -Sets this-\/$>$x = a\+\_\+x, this-\/$>$y = a\+\_\+y, and this-\/$>$z = a\+\_\+z - -\subsection{Member Function Documentation} -\mbox{\Hypertarget{classVec3T_af628d2d42a93200a929bd54a1fe8353f}\label{classVec3T_af628d2d42a93200a929bd54a1fe8353f}} -\index{Vec3T@{Vec3T}!cross@{cross}} -\index{cross@{cross}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{cross()}{cross()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::cross (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector cross product. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the cross product between ($\ast$this) and u -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_ab4bebdfbdc863826a1a7e86cad130ff8}\label{classVec3T_ab4bebdfbdc863826a1a7e86cad130ff8}} -\index{Vec3T@{Vec3T}!dot@{dot}} -\index{dot@{dot}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{dot()}{dot()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::dot (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector dot product. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns the dot product between ($\ast$this) and u -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_a93c868b181e24a4f74702a8b8a36f815}\label{classVec3T_a93c868b181e24a4f74702a8b8a36f815}} -\index{Vec3T@{Vec3T}!length@{length}} -\index{length@{length}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{length()}{length()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::length (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute vector length. - -\begin{DoxyReturn}{Returns} -Returns the vector length, i.\+e. sqrt(X\mbox{[}0\mbox{]}$\ast$X\mbox{[}0\mbox{]} + X\mbox{[}1\mbox{]}$\ast$X\mbox{[}1\mbox{]} + Y\mbox{[}0\mbox{]}$\ast$Y\mbox{[}0\mbox{]}) -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_aaed89aee434cfa0abd86fe33bff49b4e}\label{classVec3T_aaed89aee434cfa0abd86fe33bff49b4e}} -\index{Vec3T@{Vec3T}!length2@{length2}} -\index{length2@{length2}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{length2()}{length2()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::length2 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Compute vector length squared. - -\begin{DoxyReturn}{Returns} -Returns the vector length squared, i.\+e. (X\mbox{[}0\mbox{]}$\ast$X\mbox{[}0\mbox{]} + X\mbox{[}1\mbox{]}$\ast$X\mbox{[}1\mbox{]} + Y\mbox{[}0\mbox{]}$\ast$Y\mbox{[}0\mbox{]}) -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_ac126bbdaeff79e475327887bfa8aa62c}\label{classVec3T_ac126bbdaeff79e475327887bfa8aa62c}} -\index{Vec3T@{Vec3T}!max@{max}} -\index{max@{max}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{max()}{max()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::max (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector maximum function. Returns a new vector with componentwise maximums. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with X\mbox{[}0\mbox{]} = std\+::minmax-\/$>$X\mbox{[}0\mbox{]}, u.\+X\mbox{[}0\mbox{]}) (and same for the other components) -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_a292391c1f72ca66e100e7e70512ff9b1}\label{classVec3T_a292391c1f72ca66e100e7e70512ff9b1}} -\index{Vec3T@{Vec3T}!max\+Dir@{max\+Dir}} -\index{max\+Dir@{max\+Dir}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{max\+Dir()}{maxDir()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -int \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::max\+Dir (\begin{DoxyParamCaption}\item[{const bool}]{a\+\_\+do\+Abs }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return the direction which has the largest component (can be absolute) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+do\+Abs} & If true, evaluate component magnitudes rather than values. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Direction with the biggest component -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_ad0a0c9754ef8df1fa28abdaa01c246c4}\label{classVec3T_ad0a0c9754ef8df1fa28abdaa01c246c4}} -\index{Vec3T@{Vec3T}!min@{min}} -\index{min@{min}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{min()}{min()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::min (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector minimum function. Returns a new vector with componentwise minimums. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with X\mbox{[}0\mbox{]} = std\+::min(this-\/$>$X\mbox{[}0\mbox{]}, u.\+X\mbox{[}0\mbox{]}) (and same for the other components) -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_add4db9b06b01f85ce492742acae86545}\label{classVec3T_add4db9b06b01f85ce492742acae86545}} -\index{Vec3T@{Vec3T}!min\+Dir@{min\+Dir}} -\index{min\+Dir@{min\+Dir}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{min\+Dir()}{minDir()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -int \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::min\+Dir (\begin{DoxyParamCaption}\item[{const bool}]{a\+\_\+do\+Abs }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return the direction which has the smallest component (can be absolute) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+do\+Abs} & If true, evaluate component magnitudes rather than values. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Direction with the biggest component -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_aa4768276707889db34a716e9e476b9f1}\label{classVec3T_aa4768276707889db34a716e9e476b9f1}} -\index{Vec3T@{Vec3T}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$\ast$ (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Multiplication operator. Returns a vector with scalar multiplied components. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to multiply by \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with X\mbox{[}i\mbox{]} = this-\/$>$X\mbox{[}i\mbox{]} $\ast$ s -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_a579db6fb2bed30b3f024d1a017d7a124}\label{classVec3T_a579db6fb2bed30b3f024d1a017d7a124}} -\index{Vec3T@{Vec3T}!operator$\ast$@{operator$\ast$}} -\index{operator$\ast$@{operator$\ast$}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T$>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$T$>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$\ast$ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{s }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Component-\/wise multiplication operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to multiply by \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with X\mbox{[}i\mbox{]} = this-\/$>$X\mbox{[}i\mbox{]} $\ast$ s\mbox{[}i\mbox{]} for each component. -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_a0448e51b7f785b14df47092929cb73a3}\label{classVec3T_a0448e51b7f785b14df47092929cb73a3}} -\index{Vec3T@{Vec3T}!operator$\ast$=@{operator$\ast$=}} -\index{operator$\ast$=@{operator$\ast$=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$\ast$=()}{operator*=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$\ast$= (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector multiplication operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to multiply by \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns ($\ast$this) with multiplied compoments, e.\+g. this-\/$>$X\mbox{[}0\mbox{]} = this-\/$>$X\mbox{[}0\mbox{]} $\ast$ s -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_af1ab895de89a1a3143f58d2ce5d78bc2}\label{classVec3T_af1ab895de89a1a3143f58d2ce5d78bc2}} -\index{Vec3T@{Vec3T}!operator+@{operator+}} -\index{operator+@{operator+}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator+()}{operator+()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator+ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Addition operator. Returns a new vector with added compoments. - -\begin{DoxyReturn}{Returns} -Returns a new vector with x = this-\/$>$x -\/ u.\+x and so on. -\end{DoxyReturn} - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a7d06c56d8579d8b3695f43f62544f999}\label{classVec3T_a7d06c56d8579d8b3695f43f62544f999}} -\index{Vec3T@{Vec3T}!operator+=@{operator+=}} -\index{operator+=@{operator+=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator+=()}{operator+=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator+= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector addition operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Vector to add \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns ($\ast$this) with incremented compoments, e.\+g. this-\/$>$X\mbox{[}0\mbox{]} = this-\/$>$X\mbox{[}0\mbox{]} + u.\+X\mbox{[}0\mbox{]} -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_ac00a70e55a93ecd8c60d29a129f8fbf3}\label{classVec3T_ac00a70e55a93ecd8c60d29a129f8fbf3}} -\index{Vec3T@{Vec3T}!operator-\/@{operator-\/}} -\index{operator-\/@{operator-\/}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator-\/()}{operator-()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator-\/ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Subtraction operator. Returns a new vector with subtracted compoments. - -\begin{DoxyReturn}{Returns} -Returns a new vector with x = this-\/$>$x -\/ u.\+x and so on. -\end{DoxyReturn} - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a8a580094450e167248f4ee089027fa40}\label{classVec3T_a8a580094450e167248f4ee089027fa40}} -\index{Vec3T@{Vec3T}!operator-\/=@{operator-\/=}} -\index{operator-\/=@{operator-\/=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator-\/=()}{operator-=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator-\/= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector subtraction operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Vector to subtraction \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns ($\ast$this) with subtracted compoments, e.\+g. this-\/$>$X\mbox{[}0\mbox{]} = this-\/$>$X\mbox{[}0\mbox{]} -\/ u.\+X\mbox{[}0\mbox{]} -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_acc5973c1c82e51c597b47ba39870f528}\label{classVec3T_acc5973c1c82e51c597b47ba39870f528}} -\index{Vec3T@{Vec3T}!operator/@{operator/}} -\index{operator/@{operator/}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator/ (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Division operator. Returns a vector with scalar divided components. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to divided by \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with X\mbox{[}i\mbox{]} = this-\/$>$X\mbox{[}i\mbox{]} / s -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_a3c48111d27fb16cc3304e7aa2b4603fc}\label{classVec3T_a3c48111d27fb16cc3304e7aa2b4603fc}} -\index{Vec3T@{Vec3T}!operator/@{operator/}} -\index{operator/@{operator/}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator/()}{operator/()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator/ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{v }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Component-\/wise division operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em v} & Other vector \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new vector with X\mbox{[}i\mbox{]} = this-\/$>$X\mbox{[}i\mbox{]}/v\mbox{[}i\mbox{]} for each component. -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_a9446e83162d3daee6133d12b354a3a41}\label{classVec3T_a9446e83162d3daee6133d12b354a3a41}} -\index{Vec3T@{Vec3T}!operator/=@{operator/=}} -\index{operator/=@{operator/=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator/=()}{operator/=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator/= (\begin{DoxyParamCaption}\item[{const T \&}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Vector division operator. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em s} & Scalar to divide by \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns ($\ast$this) with multiplied compoments, e.\+g. this-\/$>$X\mbox{[}0\mbox{]} = this-\/$>$X\mbox{[}0\mbox{]} / s -\end{DoxyReturn} -\mbox{\Hypertarget{classVec3T_aba830919c5020bb060f39fe9df6b7ca1}\label{classVec3T_aba830919c5020bb060f39fe9df6b7ca1}} -\index{Vec3T@{Vec3T}!operator$<$@{operator$<$}} -\index{operator$<$@{operator$<$}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$<$()}{operator<()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$<$ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -\char`\"{}\+Smaller than\char`\"{} operator. - -Returns true if this-\/$>$x $<$ u.\+x A\+ND this-\/$>$y $<$ u.\+y A\+ND this-\/$>$z $<$ u.\+z and false otherwise -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a266a34a83b9f23a391151be45a4e39f8}\label{classVec3T_a266a34a83b9f23a391151be45a4e39f8}} -\index{Vec3T@{Vec3T}!operator$<$=@{operator$<$=}} -\index{operator$<$=@{operator$<$=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$<$=()}{operator<=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$<$= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -\char`\"{}\+Smaller or equal to\char`\"{} operator. - -Returns true if this-\/$>$x $<$= u.\+x A\+ND this-\/$>$y $<$= u.\+y A\+ND this-\/$>$z $<$= u.\+z -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a34681a81b55b4e7ae818e01b5f27a3e0}\label{classVec3T_a34681a81b55b4e7ae818e01b5f27a3e0}} -\index{Vec3T@{Vec3T}!operator=@{operator=}} -\index{operator=@{operator=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator=()}{operator=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -\hyperlink{classVec3T}{Vec3T}$<$ T $>$ \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Assignment operator. Sets components equal to the argument vector\textquotesingle{}s components. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a715546682c26647643148a80087c4ab4}\label{classVec3T_a715546682c26647643148a80087c4ab4}} -\index{Vec3T@{Vec3T}!operator==@{operator==}} -\index{operator==@{operator==}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator==()}{operator==()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator== (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Comparison operator. Returns true if all components are the same. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_af99810068907e4935ac38bc397ba1102}\label{classVec3T_af99810068907e4935ac38bc397ba1102}} -\index{Vec3T@{Vec3T}!operator$>$@{operator$>$}} -\index{operator$>$@{operator$>$}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$>$()}{operator>()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$>$ (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -\char`\"{}\+Greater than\char`\"{} operator. - -Returns true if this-\/$>$x $>$ u.\+x A\+ND this-\/$>$y $>$ u.\+y A\+ND this-\/$>$z $>$ u.\+z -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a3296f8319642088e08bd2d3e253fcd64}\label{classVec3T_a3296f8319642088e08bd2d3e253fcd64}} -\index{Vec3T@{Vec3T}!operator$>$=@{operator$>$=}} -\index{operator$>$=@{operator$>$=}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator$>$=()}{operator>=()}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator$>$= (\begin{DoxyParamCaption}\item[{const \hyperlink{classVec3T}{Vec3T}$<$ T $>$ \&}]{u }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -\char`\"{}\+Greater or equal to\char`\"{} operator. - -Returns true if this-\/$>$x $>$= u.\+x A\+ND this-\/$>$y $>$= u.\+y A\+ND this-\/$>$z $>$= u.\+z -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em u} & Other vector \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_a098a19968b6c7b0b76c2572e5236a71a}\label{classVec3T_a098a19968b6c7b0b76c2572e5236a71a}} -\index{Vec3T@{Vec3T}!operator\mbox{[}\mbox{]}@{operator[]}} -\index{operator\mbox{[}\mbox{]}@{operator[]}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return component in vector. (i=0 =$>$ x and so on) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em i} & Index. Must be $<$ 3 \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{classVec3T_ad09224c5f7e142059d75772c0cbd1990}\label{classVec3T_ad09224c5f7e142059d75772c0cbd1990}} -\index{Vec3T@{Vec3T}!operator\mbox{[}\mbox{]}@{operator[]}} -\index{operator\mbox{[}\mbox{]}@{operator[]}!Vec3T@{Vec3T}} -\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -const T \& \hyperlink{classVec3T}{Vec3T}$<$ T $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} - - - -Return non-\/modifiable component in vector. (i=0 =$>$ x and so on) - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em i} & Index. Must be $<$ 3 \\ -\hline -\end{DoxyParams} - - -The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} -\item -Source/\hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp}\item -Source/\hyperlink{EBGeometry__VecImplem_8hpp}{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/dir_74389ed8173ad57b461b9d623a1f3867.tex b/docs/doxygen/latex/dir_74389ed8173ad57b461b9d623a1f3867.tex deleted file mode 100644 index fa21f3fc..00000000 --- a/docs/doxygen/latex/dir_74389ed8173ad57b461b9d623a1f3867.tex +++ /dev/null @@ -1,71 +0,0 @@ -\hypertarget{dir_74389ed8173ad57b461b9d623a1f3867}{}\section{Source Directory Reference} -\label{dir_74389ed8173ad57b461b9d623a1f3867}\index{Source Directory Reference@{Source Directory Reference}} -\subsection*{Files} -\begin{DoxyCompactItemize} -\item -file \hyperlink{EBGeometry__AnalyticDistanceFunctions_8hpp}{E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of various analytic distance functions. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a various bounding volumes used for bounding volume hierarchy. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__BoundingVolumesImplem_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a bounding volume hierarchy (\hyperlink{namespaceBVH}{B\+VH}) class. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__BVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__Dcel_8hpp}{E\+B\+Geometry\+\_\+\+Dcel.\+hpp} -\begin{DoxyCompactList}\small\item\em Namespace documentation. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelBVH_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+B\+V\+H.\+hpp} -\begin{DoxyCompactList}\small\item\em File which contains partitioners and lambdas for enclosing dcel\+\_\+face in bounding volume heirarchies. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a half-\/edge class for use in D\+C\+EL descriptions of polygon tesselations. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelEdgeImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a polygon face class for use in D\+C\+EL descriptions of polygon tesselations. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelFaceImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of iterators for D\+C\+EL surface Tesselations. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelIteratorImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a mesh class which stores a D\+C\+EL mesh (with signed distance functions) \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelMeshImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of utilities for passing data into D\+C\+EL structures. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelParserImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelPolygon2D_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a two-\/dimensional polygon class for embedding 3D polygon faces. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelPolygon2DImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of Dcel\+Polygon.\+hpp. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a vertex class for use in D\+C\+EL descriptions of polygon tesselations. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__DcelVertexImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__NamespaceFooter_8hpp}{E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp} -\begin{DoxyCompactList}\small\item\em Name space footer. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__NamespaceHeader_8hpp}{E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp} -\begin{DoxyCompactList}\small\item\em Name space header. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__SignedDistanceFunction_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp} -\begin{DoxyCompactList}\small\item\em Abstract base class for representing a signed distance function. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of transformation operators for signed distance fields. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__TransformOpsImplem_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a union operator for creating multi-\/object scenes. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of a union operator for creating multi-\/object scenes. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__UnionBVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__UnionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp}. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp} -\begin{DoxyCompactList}\small\item\em Declaration of 2D and 3D point/vector classes with templated precision. Used with D\+C\+EL tools. \end{DoxyCompactList}\item -file \hyperlink{EBGeometry__VecImplem_8hpp}{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp} -\begin{DoxyCompactList}\small\item\em Implementation of \hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp}. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/docs/doxygen/latex/doxygen.sty b/docs/doxygen/latex/doxygen.sty deleted file mode 100644 index e457acc1..00000000 --- a/docs/doxygen/latex/doxygen.sty +++ /dev/null @@ -1,503 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} - -% Packages used by this style file -\RequirePackage{alltt} -\RequirePackage{array} -\RequirePackage{calc} -\RequirePackage{float} -\RequirePackage{ifthen} -\RequirePackage{verbatim} -\RequirePackage[table]{xcolor} -\RequirePackage{longtable} -\RequirePackage{tabu} -\RequirePackage{tabularx} -\RequirePackage{multirow} - -%---------- Internal commands used in this style file ---------------- - -\newcommand{\ensurespace}[1]{% - \begingroup% - \setlength{\dimen@}{#1}% - \vskip\z@\@plus\dimen@% - \penalty -100\vskip\z@\@plus -\dimen@% - \vskip\dimen@% - \penalty 9999% - \vskip -\dimen@% - \vskip\z@skip% hide the previous |\vskip| from |\addvspace| - \endgroup% -} - -\newcommand{\DoxyLabelFont}{} -\newcommand{\entrylabel}[1]{% - {% - \parbox[b]{\labelwidth-4pt}{% - \makebox[0pt][l]{\DoxyLabelFont#1}% - \vspace{1.5\baselineskip}% - }% - }% -} - -\newenvironment{DoxyDesc}[1]{% - \ensurespace{4\baselineskip}% - \begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -\newsavebox{\xrefbox} -\newlength{\xreflength} -\newcommand{\xreflabel}[1]{% - \sbox{\xrefbox}{#1}% - \setlength{\xreflength}{\wd\xrefbox}% - \ifthenelse{\xreflength>\labelwidth}{% - \begin{minipage}{\textwidth}% - \setlength{\parindent}{0pt}% - \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% - \end{minipage}% - }{% - \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% - }% -} - -%---------- Commands used by doxygen LaTeX output generator ---------- - -% Used by
 ... 
-\newenvironment{DoxyPre}{% - \small% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} - -% Used by @code ... @endcode -\newenvironment{DoxyCode}{% - \par% - \scriptsize% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} - -% Used by @example, @include, @includelineno and @dontinclude -\newenvironment{DoxyCodeInclude}{% - \DoxyCode% -}{% - \endDoxyCode% -} - -% Used by @verbatim ... @endverbatim -\newenvironment{DoxyVerb}{% - \footnotesize% - \verbatim% -}{% - \endverbatim% - \normalsize% -} - -% Used by @verbinclude -\newenvironment{DoxyVerbInclude}{% - \DoxyVerb% -}{% - \endDoxyVerb% -} - -% Used by numbered lists (using '-#' or
    ...
) -\newenvironment{DoxyEnumerate}{% - \enumerate% -}{% - \endenumerate% -} - -% Used by bullet lists (using '-', @li, @arg, or
    ...
) -\newenvironment{DoxyItemize}{% - \itemize% -}{% - \enditemize% -} - -% Used by description lists (using
...
) -\newenvironment{DoxyDescription}{% - \description% -}{% - \enddescription% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if caption is specified) -\newenvironment{DoxyImage}{% - \begin{figure}[H]% - \begin{center}% -}{% - \end{center}% - \end{figure}% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if no caption is specified) -\newenvironment{DoxyImageNoCaption}{% - \begin{center}% -}{% - \end{center}% -} - -% Used by @attention -\newenvironment{DoxyAttention}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @author and @authors -\newenvironment{DoxyAuthor}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @date -\newenvironment{DoxyDate}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @invariant -\newenvironment{DoxyInvariant}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @note -\newenvironment{DoxyNote}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @post -\newenvironment{DoxyPostcond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @pre -\newenvironment{DoxyPrecond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @copyright -\newenvironment{DoxyCopyright}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @remark -\newenvironment{DoxyRemark}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @return and @returns -\newenvironment{DoxyReturn}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @since -\newenvironment{DoxySince}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @see -\newenvironment{DoxySeeAlso}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @version -\newenvironment{DoxyVersion}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @warning -\newenvironment{DoxyWarning}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @internal -\newenvironment{DoxyInternal}[1]{% - \paragraph*{#1}% -}{% -} - -% Used by @par and @paragraph -\newenvironment{DoxyParagraph}[1]{% - \begin{list}{}{% - \settowidth{\labelwidth}{40pt}% - \setlength{\leftmargin}{\labelwidth}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{-4pt}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -% Used by parameter lists -\newenvironment{DoxyParams}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{}}% - {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description - {\ifthenelse{\equal{#1}{1}}% - {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc - {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc - } - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for fields of simple structs -\newenvironment{DoxyFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for fields simple class style enums -\newenvironment{DoxyEnumFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for parameters within a detailed function description -\newenvironment{DoxyParamCaption}{% - \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% -}{% -} - -% Used by return value lists -\newenvironment{DoxyRetVals}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used by exception lists -\newenvironment{DoxyExceptions}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used by template parameter lists -\newenvironment{DoxyTemplParams}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for member lists -\newenvironment{DoxyCompactItemize}{% - \begin{itemize}% - \setlength{\itemsep}{-3pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \setlength{\partopsep}{0pt}% -}{% - \end{itemize}% -} - -% Used for member descriptions -\newenvironment{DoxyCompactList}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - \setlength{\itemsep}{0pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \renewcommand{\makelabel}{\hfill}% - }% -}{% - \end{list}% -} - -% Used for reference lists (@bug, @deprecated, @todo, etc.) -\newenvironment{DoxyRefList}{% - \begin{list}{}{% - \setlength{\labelwidth}{10pt}% - \setlength{\leftmargin}{\labelwidth}% - \addtolength{\leftmargin}{\labelsep}% - \renewcommand{\makelabel}{\xreflabel}% - }% -}{% - \end{list}% -} - -% Used by @bug, @deprecated, @todo, etc. -\newenvironment{DoxyRefDesc}[1]{% - \begin{list}{}{% - \renewcommand\makelabel[1]{\textbf{##1}}% - \settowidth\labelwidth{\makelabel{#1}}% - \setlength\leftmargin{\labelwidth+\labelsep}% - }% -}{% - \end{list}% -} - -% Used by parameter lists and simple sections -\newenvironment{Desc} -{\begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - } -}{% - \end{list}% -} - -% Used by tables -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% -\newenvironment{TabularC}[1]% -{\tabulinesep=1mm -\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}% -{\end{longtabu}\par}% - -\newenvironment{TabularNC}[1]% -{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}% -{\end{tabu}\par}% - -% Used for member group headers -\newenvironment{Indent}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - }% - \item[]\ignorespaces% -}{% - \unskip% - \end{list}% -} - -% Used when hyperlinks are turned off -\newcommand{\doxyref}[3]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used to link to a table when hyperlinks are turned on -\newcommand{\doxytablelink}[2]{% - \ref{#1}% -} - -% Used to link to a table when hyperlinks are turned off -\newcommand{\doxytableref}[3]{% - \ref{#3}% -} - -% Used by @addindex -\newcommand{\lcurly}{\{} -\newcommand{\rcurly}{\}} - -% Colors used for syntax highlighting -\definecolor{comment}{rgb}{0.5,0.0,0.0} -\definecolor{keyword}{rgb}{0.0,0.5,0.0} -\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} -\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} -\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} -\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} -\definecolor{charliteral}{rgb}{0.0,0.5,0.5} -\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} -\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} -\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} -\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} - -% Color used for table heading -\newcommand{\tableheadbgcolor}{lightgray}% - -% Version of hypertarget with correct landing location -\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} - -% Define caption that is also suitable in a table -\makeatletter -\def\doxyfigcaption{% -\refstepcounter{figure}% -\@dblarg{\@caption{figure}}} -\makeatother diff --git a/docs/doxygen/latex/files.tex b/docs/doxygen/latex/files.tex deleted file mode 100644 index 658295c4..00000000 --- a/docs/doxygen/latex/files.tex +++ /dev/null @@ -1,37 +0,0 @@ -\section{File List} -Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{{\bfseries E\+B\+Geometry.\+hpp} }{\pageref{EBGeometry_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__AnalyticDistanceFunctions_8hpp}{E\+B\+Geometry\+\_\+\+Analytic\+Distance\+Functions.\+hpp} \\*Declaration of various analytic distance functions }{\pageref{EBGeometry__AnalyticDistanceFunctions_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp} \\*Declaration of a various bounding volumes used for bounding volume hierarchy }{\pageref{EBGeometry__BoundingVolumes_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__BoundingVolumesImplem_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__BoundingVolumes_8hpp}{E\+B\+Geometry\+\_\+\+Bounding\+Volumes.\+hpp} }{\pageref{EBGeometry__BoundingVolumesImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp} \\*Declaration of a bounding volume hierarchy (\hyperlink{namespaceBVH}{B\+VH}) class }{\pageref{EBGeometry__BVH_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__BVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__BVH_8hpp}{E\+B\+Geometry\+\_\+\+B\+V\+H.\+hpp} }{\pageref{EBGeometry__BVHImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__Dcel_8hpp}{E\+B\+Geometry\+\_\+\+Dcel.\+hpp} \\*Namespace documentation }{\pageref{EBGeometry__Dcel_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelBVH_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+B\+V\+H.\+hpp} \\*File which contains partitioners and lambdas for enclosing dcel\+\_\+face in bounding volume heirarchies }{\pageref{EBGeometry__DcelBVH_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp} \\*Declaration of a half-\/edge class for use in D\+C\+EL descriptions of polygon tesselations }{\pageref{EBGeometry__DcelEdge_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelEdgeImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__DcelEdge_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge.\+hpp} }{\pageref{EBGeometry__DcelEdgeImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp} \\*Declaration of a polygon face class for use in D\+C\+EL descriptions of polygon tesselations }{\pageref{EBGeometry__DcelFace_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelFaceImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__DcelFace_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Face.\+hpp} }{\pageref{EBGeometry__DcelFaceImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp} \\*Declaration of iterators for D\+C\+EL surface Tesselations }{\pageref{EBGeometry__DcelIterator_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelIteratorImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__DcelIterator_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Iterator.\+hpp} }{\pageref{EBGeometry__DcelIteratorImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp} \\*Declaration of a mesh class which stores a D\+C\+EL mesh (with signed distance functions) }{\pageref{EBGeometry__DcelMesh_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelMeshImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__DcelMesh_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Mesh.\+hpp} }{\pageref{EBGeometry__DcelMeshImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp} \\*Declaration of utilities for passing data into D\+C\+EL structures }{\pageref{EBGeometry__DcelParser_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelParserImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__DcelParser_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Parser.\+hpp} }{\pageref{EBGeometry__DcelParserImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelPolygon2D_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D.\+hpp} \\*Declaration of a two-\/dimensional polygon class for embedding 3D polygon faces }{\pageref{EBGeometry__DcelPolygon2D_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelPolygon2DImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Polygon2\+D\+Implem.\+hpp} \\*Implementation of Dcel\+Polygon.\+hpp }{\pageref{EBGeometry__DcelPolygon2DImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp} \\*Declaration of a vertex class for use in D\+C\+EL descriptions of polygon tesselations }{\pageref{EBGeometry__DcelVertex_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__DcelVertexImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__DcelVertex_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Vertex.\+hpp} }{\pageref{EBGeometry__DcelVertexImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__NamespaceFooter_8hpp}{E\+B\+Geometry\+\_\+\+Namespace\+Footer.\+hpp} \\*Name space footer }{\pageref{EBGeometry__NamespaceFooter_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__NamespaceHeader_8hpp}{E\+B\+Geometry\+\_\+\+Namespace\+Header.\+hpp} \\*Name space header }{\pageref{EBGeometry__NamespaceHeader_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__SignedDistanceFunction_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function.\+hpp} \\*Abstract base class for representing a signed distance function }{\pageref{EBGeometry__SignedDistanceFunction_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__SignedDistanceFunctionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Signed\+Distance\+Function\+Implem.\+hpp} }{\pageref{EBGeometry__SignedDistanceFunctionImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp} \\*Declaration of transformation operators for signed distance fields }{\pageref{EBGeometry__TransformOps_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__TransformOpsImplem_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__TransformOps_8hpp}{E\+B\+Geometry\+\_\+\+Transform\+Ops.\+hpp} }{\pageref{EBGeometry__TransformOpsImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp} \\*Declaration of a union operator for creating multi-\/object scenes }{\pageref{EBGeometry__Union_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp} \\*Declaration of a union operator for creating multi-\/object scenes }{\pageref{EBGeometry__UnionBVH_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__UnionBVHImplem_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__UnionBVH_8hpp}{E\+B\+Geometry\+\_\+\+Union\+B\+V\+H.\+hpp} }{\pageref{EBGeometry__UnionBVHImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__UnionImplem_8hpp}{E\+B\+Geometry\+\_\+\+Union\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__Union_8hpp}{E\+B\+Geometry\+\_\+\+Union.\+hpp} }{\pageref{EBGeometry__UnionImplem_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp} \\*Declaration of 2D and 3D point/vector classes with templated precision. Used with D\+C\+EL tools }{\pageref{EBGeometry__Vec_8hpp}}{} -\item\contentsline{section}{Source/\hyperlink{EBGeometry__VecImplem_8hpp}{E\+B\+Geometry\+\_\+\+Vec\+Implem.\+hpp} \\*Implementation of \hyperlink{EBGeometry__Vec_8hpp}{E\+B\+Geometry\+\_\+\+Vec.\+hpp} }{\pageref{EBGeometry__VecImplem_8hpp}}{} -\end{DoxyCompactList} diff --git a/docs/doxygen/latex/hierarchy.tex b/docs/doxygen/latex/hierarchy.tex deleted file mode 100644 index 16740215..00000000 --- a/docs/doxygen/latex/hierarchy.tex +++ /dev/null @@ -1,31 +0,0 @@ -\section{Class Hierarchy} -This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList} -\item \contentsline{section}{Bounding\+Volumes\+:\+:A\+A\+B\+BT$<$ T $>$}{\pageref{classBoundingVolumes_1_1AABBT}}{} -\item \contentsline{section}{Bounding\+Volumes\+:\+:Bounding\+SphereT$<$ T $>$}{\pageref{classBoundingVolumes_1_1BoundingSphereT}}{} -\item \contentsline{section}{Dcel\+:\+:Edge\+IteratorT$<$ T $>$}{\pageref{classDcel_1_1EdgeIteratorT}}{} -\item \contentsline{section}{Dcel\+:\+:EdgeT$<$ T $>$}{\pageref{classDcel_1_1EdgeT}}{} -\item \contentsline{section}{Dcel\+:\+:FaceT$<$ T $>$}{\pageref{classDcel_1_1FaceT}}{} -\item \contentsline{section}{B\+VH\+:\+:Linear\+B\+VH$<$ T, P, BV, K $>$}{\pageref{classBVH_1_1LinearBVH}}{} -\item \contentsline{section}{B\+VH\+:\+:Linear\+NodeT$<$ T, P, BV, K $>$}{\pageref{classBVH_1_1LinearNodeT}}{} -\item \contentsline{section}{Dcel\+:\+:MeshT$<$ T $>$}{\pageref{classDcel_1_1MeshT}}{} -\item \contentsline{section}{B\+VH\+:\+:NodeT$<$ T, P, BV, K $>$}{\pageref{classBVH_1_1NodeT}}{} -\item \contentsline{section}{Dcel\+:\+:Parser\+:\+:P\+LY$<$ T $>$}{\pageref{classDcel_1_1Parser_1_1PLY}}{} -\item \contentsline{section}{Dcel\+:\+:Polygon2D$<$ T $>$}{\pageref{classDcel_1_1Polygon2D}}{} -\item \contentsline{section}{Signed\+Distance\+Function$<$ T $>$}{\pageref{classSignedDistanceFunction}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{Box\+S\+DF$<$ T $>$}{\pageref{classBoxSDF}}{} -\item \contentsline{section}{Cylinder\+S\+DF$<$ T $>$}{\pageref{classCylinderSDF}}{} -\item \contentsline{section}{Sphere\+S\+DF$<$ T $>$}{\pageref{classSphereSDF}}{} -\item \contentsline{section}{Torus\+S\+DF$<$ T $>$}{\pageref{classTorusSDF}}{} -\item \contentsline{section}{Union$<$ T $>$}{\pageref{classUnion}}{} -\item \contentsline{section}{Union\+B\+VH$<$ T, BV, K $>$}{\pageref{classUnionBVH}}{} -\end{DoxyCompactList} -\item \contentsline{section}{Transform\+Op$<$ T $>$}{\pageref{classTransformOp}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{Rotate\+Op$<$ T $>$}{\pageref{classRotateOp}}{} -\item \contentsline{section}{Translate\+Op$<$ T $>$}{\pageref{classTranslateOp}}{} -\end{DoxyCompactList} -\item \contentsline{section}{Vec2T$<$ T $>$}{\pageref{classVec2T}}{} -\item \contentsline{section}{Vec3T$<$ T $>$}{\pageref{classVec3T}}{} -\item \contentsline{section}{Dcel\+:\+:VertexT$<$ T $>$}{\pageref{classDcel_1_1VertexT}}{} -\end{DoxyCompactList} diff --git a/docs/doxygen/latex/index.tex b/docs/doxygen/latex/index.tex deleted file mode 100644 index 11d50911..00000000 --- a/docs/doxygen/latex/index.tex +++ /dev/null @@ -1,55 +0,0 @@ -\hyperlink{namespaceEBGeometry}{E\+B\+Geometry} is a code for computing signed distance functions to watertight and orientable surface grids. It was written to be used with embedded-\/boundary (EB) codes like Chombo or A\+M\+ReX. - -Tesselations must consist of planar polygons (not necessarily triangles). Internally, the surface mesh is stored in a doubly-\/connected edge list (D\+C\+EL), i.\+e. a half-\/edge data structure. On watertight and orientable grids, the distance to any feature (facet, edge, vertex) is well defined, and can naively be computed in various ways\+: - - -\begin{DoxyItemize} -\item Directly, by iterating through all facets. -\item With conventional bounding volume hierarchies (B\+V\+Hs). -\item With compact (linearized) B\+V\+Hs. -\end{DoxyItemize} - -The B\+V\+Hs in \hyperlink{namespaceEBGeometry}{E\+B\+Geometry} are not limited to facets. Users can also embed entire objects (e.\+g., analytic functions) in the B\+V\+Hs, e.\+g. the \hyperlink{namespaceBVH}{B\+VH} accelerator can be used to accelerate the signed distance computation when geometries contain many objects. B\+V\+Hs can also be nested so that the \hyperlink{namespaceBVH}{B\+VH} accelerator is used to embed objects that are themselves contained in a \hyperlink{namespaceBVH}{B\+VH}. For example, a scene consisting of many objects described by surface grids can be embedded as a B\+V\+H-\/of-\/\+B\+VH type of scene. In addition, \hyperlink{namespaceEBGeometry}{E\+B\+Geometry} provides standard operators for signed distance fields like rotations, translations, and scalings. - - - -\subsection*{Requirements } - - -\begin{DoxyItemize} -\item A C++ compiler which supports C++14. -\item An analytic signed distance function or a Watertight and orientable surface (only P\+LY files currently supported). -\end{DoxyItemize} - -\subsection*{Basic usage } - -\hyperlink{namespaceEBGeometry}{E\+B\+Geometry} is a header-\/only library in C++. To use it, simply make \hyperlink{EBGeometry_8hpp_source}{E\+B\+Geometry.\+hpp} visible to your code and include it. - -To clone \hyperlink{namespaceEBGeometry}{E\+B\+Geometry}\+: \begin{DoxyVerb}git clone git@github.com:rmrsk/EBGeometry.git -\end{DoxyVerb} - - -Various examples are given in the Examples folder. To run one of the examples, navigate to the example and compile and run it. E.\+g., \begin{DoxyVerb}cd Examples/Basic -g++ -O3 -std=c++14 main.cpp -./a.out porsche.ply -\end{DoxyVerb} - - -The examples take the following steps that are specific to \hyperlink{namespaceEBGeometry}{E\+B\+Geometry}\+: - - -\begin{DoxyEnumerate} -\item Define an analytic signed distance function or parse a surface mesh into a D\+C\+EL mesh object. -\item Partition using B\+V\+Hs. -\item Compute the signed distance function. -\end{DoxyEnumerate} - -More complex examples that use Chombo or A\+M\+ReX will also include application-\/specific code. - -\subsection*{Advanced usage } - -For more advanced usage, users can supply their own file parsers (only P\+LY files are currently supported), provide their own bounding volumes, or their own \hyperlink{namespaceBVH}{B\+VH} partitioners. \hyperlink{namespaceEBGeometry}{E\+B\+Geometry} is not too strict about these things, and uses rigorous templating for ensuring that the \hyperlink{namespaceEBGeometry}{E\+B\+Geometry} functionality can be extended. - -\subsection*{License } - -See L\+I\+C\+E\+N\+SE and Copyright.\+txt for redistribution rights. \ No newline at end of file diff --git a/docs/doxygen/latex/namespaceBVH.tex b/docs/doxygen/latex/namespaceBVH.tex deleted file mode 100644 index 18d55ace..00000000 --- a/docs/doxygen/latex/namespaceBVH.tex +++ /dev/null @@ -1,123 +0,0 @@ -\hypertarget{namespaceBVH}{}\section{B\+VH Namespace Reference} -\label{namespaceBVH}\index{B\+VH@{B\+VH}} - - -Namespace for various bounding volume heirarchy (\hyperlink{namespaceBVH}{B\+VH}) functionality. - - -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classBVH_1_1LinearBVH}{Linear\+B\+VH} -\begin{DoxyCompactList}\small\item\em Forward declare linear \hyperlink{namespaceBVH}{B\+VH} class. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1LinearNodeT}{Linear\+NodeT} -\begin{DoxyCompactList}\small\item\em Forward declare linear node class. \end{DoxyCompactList}\item -class \hyperlink{classBVH_1_1NodeT}{NodeT} -\begin{DoxyCompactList}\small\item\em Forward declare the \hyperlink{namespaceBVH}{B\+VH} node since it is needed for the polymorphic lambdas. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Typedefs} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class P $>$ }\\using \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const P $>$ $>$ -\begin{DoxyCompactList}\small\item\em Alias to cut down on typing. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , class P , class BV , int K$>$ }\\using \hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{Stop\+FunctionT} = std\+::function$<$ bool(const \hyperlink{classBVH_1_1NodeT}{NodeT}$<$ T, P, BV, K $>$ \&a\+\_\+node)$>$ -\begin{DoxyCompactList}\small\item\em Stop function for deciding when a \hyperlink{namespaceBVH}{B\+VH} node can\textquotesingle{}t be divided into sub-\/volumes. \end{DoxyCompactList}\item -{\footnotesize template$<$class P , int K$>$ }\\using \hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{PartitionerT} = std\+::function$<$ std\+::array$<$ \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$ P $>$, K $>$(const \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$ P $>$ \&a\+\_\+primitives)$>$ -\begin{DoxyCompactList}\small\item\em Polymorphic partitioner for splitting a list of primitives into K new lists of primitives. \end{DoxyCompactList}\item -{\footnotesize template$<$class P , class BV $>$ }\\using \hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+ConstructorT} = std\+::function$<$ BV(const std\+::shared\+\_\+ptr$<$ const P $>$ \&a\+\_\+primitive)$>$ -\begin{DoxyCompactList}\small\item\em Constructor method for creating bounding volumes from a list of primitives. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Enumerations} -\begin{DoxyCompactItemize} -\item -enum \hyperlink{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}{Prune} \{ {\bfseries Stack}, -{\bfseries Ordered}, -{\bfseries Unordered} - \}\begin{DoxyCompactList}\small\item\em Typename for identifying algorithms various algorithms during tree traversel. \end{DoxyCompactList} -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Namespace for various bounding volume heirarchy (\hyperlink{namespaceBVH}{B\+VH}) functionality. - -\subsection{Typedef Documentation} -\mbox{\Hypertarget{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}\label{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}} -\index{B\+VH@{B\+VH}!B\+V\+ConstructorT@{B\+V\+ConstructorT}} -\index{B\+V\+ConstructorT@{B\+V\+ConstructorT}!B\+VH@{B\+VH}} -\subsubsection{\texorpdfstring{B\+V\+ConstructorT}{BVConstructorT}} -{\footnotesize\ttfamily template$<$class P , class BV $>$ \\ -using \hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+H\+::\+B\+V\+ConstructorT} = typedef std\+::function$<$BV(const std\+::shared\+\_\+ptr$<$const P$>$\& a\+\_\+primitive)$>$} - - - -Constructor method for creating bounding volumes from a list of primitives. - -P is the primitive type bound in the \hyperlink{namespaceBVH}{B\+VH} and BV is the bounding volume type. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & List of primitives. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a new bounding volumes which is guaranteed to enclose all the input primitives. -\end{DoxyReturn} -\mbox{\Hypertarget{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}\label{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}} -\index{B\+VH@{B\+VH}!PartitionerT@{PartitionerT}} -\index{PartitionerT@{PartitionerT}!B\+VH@{B\+VH}} -\subsubsection{\texorpdfstring{PartitionerT}{PartitionerT}} -{\footnotesize\ttfamily template$<$class P , int K$>$ \\ -using \hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT} = typedef std\+::function$<$std\+::array$<$\hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$P$>$, K$>$(const \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{Primitive\+ListT}$<$P$>$\& a\+\_\+primitives)$>$} - - - -Polymorphic partitioner for splitting a list of primitives into K new lists of primitives. - -P is the primitive type bound in the \hyperlink{namespaceBVH}{B\+VH} and K is the \hyperlink{namespaceBVH}{B\+VH} degree. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & List of primitives to be subdivided into sub-\/bounding volumes. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a list (std\+::array) of new primitives which make up the new bounding volumes. -\end{DoxyReturn} -\mbox{\Hypertarget{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}\label{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}} -\index{B\+VH@{B\+VH}!Primitive\+ListT@{Primitive\+ListT}} -\index{Primitive\+ListT@{Primitive\+ListT}!B\+VH@{B\+VH}} -\subsubsection{\texorpdfstring{Primitive\+ListT}{PrimitiveListT}} -{\footnotesize\ttfamily template$<$class P $>$ \\ -using \hyperlink{namespaceBVH_aa1e753bda451b85cd5b948722a2ad7c7}{B\+V\+H\+::\+Primitive\+ListT} = typedef std\+::vector$<$std\+::shared\+\_\+ptr$<$const P$>$ $>$} - - - -Alias to cut down on typing. - -P is the primitive bounded by the \hyperlink{namespaceBVH}{B\+VH}. \mbox{\Hypertarget{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}\label{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}} -\index{B\+VH@{B\+VH}!Stop\+FunctionT@{Stop\+FunctionT}} -\index{Stop\+FunctionT@{Stop\+FunctionT}!B\+VH@{B\+VH}} -\subsubsection{\texorpdfstring{Stop\+FunctionT}{StopFunctionT}} -{\footnotesize\ttfamily template$<$class T , class P , class BV , int K$>$ \\ -using \hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{B\+V\+H\+::\+Stop\+FunctionT} = typedef std\+::function$<$bool(const \hyperlink{classBVH_1_1NodeT}{NodeT}$<$T, P, BV, K$>$\& a\+\_\+node)$>$} - - - -Stop function for deciding when a \hyperlink{namespaceBVH}{B\+VH} node can\textquotesingle{}t be divided into sub-\/volumes. - -T is the precision used in the \hyperlink{namespaceBVH}{B\+VH} computations, P is the enclosing primitive and BV is the bounding volume used in the \hyperlink{namespaceBVH}{B\+VH}. K is the tree degree. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+node} & \hyperlink{namespaceBVH}{B\+VH} node \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -True if the node can\textquotesingle{}t be divided into subvolumes and false otherwise. -\end{DoxyReturn} - - -\subsection{Enumeration Type Documentation} -\mbox{\Hypertarget{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}\label{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}} -\index{B\+VH@{B\+VH}!Prune@{Prune}} -\index{Prune@{Prune}!B\+VH@{B\+VH}} -\subsubsection{\texorpdfstring{Prune}{Prune}} -{\footnotesize\ttfamily enum \hyperlink{namespaceBVH_a3ddb7b34ac1deb3baed2f32d9eacbe5b}{B\+V\+H\+::\+Prune}\hspace{0.3cm}{\ttfamily [strong]}} - - - -Typename for identifying algorithms various algorithms during tree traversel. - -Stack =$>$ Use stack/priority queue (ordered traversal). Ordered =$>$ Use recursive ordered traversal. Unordered =$>$ Use recursive unordered traversal. \ No newline at end of file diff --git a/docs/doxygen/latex/namespaceBoundingVolumes.tex b/docs/doxygen/latex/namespaceBoundingVolumes.tex deleted file mode 100644 index 7b6ad019..00000000 --- a/docs/doxygen/latex/namespaceBoundingVolumes.tex +++ /dev/null @@ -1,103 +0,0 @@ -\hypertarget{namespaceBoundingVolumes}{}\section{Bounding\+Volumes Namespace Reference} -\label{namespaceBoundingVolumes}\index{Bounding\+Volumes@{Bounding\+Volumes}} - - -Namespace for encapsulating various bounding volumes for usage with B\+V\+Hs. - - -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT} -\begin{DoxyCompactList}\small\item\em Axis-\/aligned bounding box as bounding volume. \end{DoxyCompactList}\item -class \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT} -\begin{DoxyCompactList}\small\item\em Class which encloses a set of points using a bounding sphere. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -{\footnotesize template$<$class T $>$ }\\bool \hyperlink{namespaceBoundingVolumes_af35f33c5f319a466550d9ad1040beced}{intersects} (const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&a\+\_\+u, const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Intersection method for testing if two bounding spheres overlap. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\bool \hyperlink{namespaceBoundingVolumes_a5c360ccd42017c01acbe1caf2cfd1efe}{intersects} (const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+u, const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Intersection method for testing if two bounding boxes overlap. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\T \hyperlink{namespaceBoundingVolumes_a4f159289c317e02beedb4b38136ad692}{get\+Overlapping\+Volume} (const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&a\+\_\+u, const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between two bounding spheres. \end{DoxyCompactList}\item -{\footnotesize template$<$class T $>$ }\\T \hyperlink{namespaceBoundingVolumes_ae5716e39e88aaeec0c204f453cac2acd}{get\+Overlapping\+Volume} (const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+u, const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&a\+\_\+v) noexcept -\begin{DoxyCompactList}\small\item\em Compute the overlapping volume between two bounding boxes. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Namespace for encapsulating various bounding volumes for usage with B\+V\+Hs. - -\subsection{Function Documentation} -\mbox{\Hypertarget{namespaceBoundingVolumes_a4f159289c317e02beedb4b38136ad692}\label{namespaceBoundingVolumes_a4f159289c317e02beedb4b38136ad692}} -\index{Bounding\+Volumes@{Bounding\+Volumes}!get\+Overlapping\+Volume@{get\+Overlapping\+Volume}} -\index{get\+Overlapping\+Volume@{get\+Overlapping\+Volume}!Bounding\+Volumes@{Bounding\+Volumes}} -\subsubsection{\texorpdfstring{get\+Overlapping\+Volume()}{getOverlappingVolume()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T Bounding\+Volumes\+::get\+Overlapping\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+u, }\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} - - - -Compute the overlapping volume between two bounding spheres. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+u} & One bounding sphere \\ -\hline -\mbox{\tt in} & {\em a\+\_\+v} & The other bounding sphere \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{namespaceBoundingVolumes_ae5716e39e88aaeec0c204f453cac2acd}\label{namespaceBoundingVolumes_ae5716e39e88aaeec0c204f453cac2acd}} -\index{Bounding\+Volumes@{Bounding\+Volumes}!get\+Overlapping\+Volume@{get\+Overlapping\+Volume}} -\index{get\+Overlapping\+Volume@{get\+Overlapping\+Volume}!Bounding\+Volumes@{Bounding\+Volumes}} -\subsubsection{\texorpdfstring{get\+Overlapping\+Volume()}{getOverlappingVolume()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -T Bounding\+Volumes\+::get\+Overlapping\+Volume (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+u, }\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} - - - -Compute the overlapping volume between two bounding boxes. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+u} & One bounding box \\ -\hline -\mbox{\tt in} & {\em a\+\_\+v} & The other bounding box \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{namespaceBoundingVolumes_af35f33c5f319a466550d9ad1040beced}\label{namespaceBoundingVolumes_af35f33c5f319a466550d9ad1040beced}} -\index{Bounding\+Volumes@{Bounding\+Volumes}!intersects@{intersects}} -\index{intersects@{intersects}!Bounding\+Volumes@{Bounding\+Volumes}} -\subsubsection{\texorpdfstring{intersects()}{intersects()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool Bounding\+Volumes\+::intersects (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+u, }\item[{const \hyperlink{classBoundingVolumes_1_1BoundingSphereT}{Bounding\+SphereT}$<$ T $>$ \&}]{a\+\_\+v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} - - - -Intersection method for testing if two bounding spheres overlap. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+u} & One bounding sphere \\ -\hline -\mbox{\tt in} & {\em a\+\_\+v} & The other bounding sphere \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{namespaceBoundingVolumes_a5c360ccd42017c01acbe1caf2cfd1efe}\label{namespaceBoundingVolumes_a5c360ccd42017c01acbe1caf2cfd1efe}} -\index{Bounding\+Volumes@{Bounding\+Volumes}!intersects@{intersects}} -\index{intersects@{intersects}!Bounding\+Volumes@{Bounding\+Volumes}} -\subsubsection{\texorpdfstring{intersects()}{intersects()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} -{\footnotesize\ttfamily template$<$class T $>$ \\ -bool Bounding\+Volumes\+::intersects (\begin{DoxyParamCaption}\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+u, }\item[{const \hyperlink{classBoundingVolumes_1_1AABBT}{A\+A\+B\+BT}$<$ T $>$ \&}]{a\+\_\+v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} - - - -Intersection method for testing if two bounding boxes overlap. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+u} & One bounding box \\ -\hline -\mbox{\tt in} & {\em a\+\_\+v} & The other bounding box \\ -\hline -\end{DoxyParams} diff --git a/docs/doxygen/latex/namespaceDcel.tex b/docs/doxygen/latex/namespaceDcel.tex deleted file mode 100644 index e76e0d3c..00000000 --- a/docs/doxygen/latex/namespaceDcel.tex +++ /dev/null @@ -1,139 +0,0 @@ -\hypertarget{namespaceDcel}{}\section{Dcel Namespace Reference} -\label{namespaceDcel}\index{Dcel@{Dcel}} - - -Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. - - -\subsection*{Namespaces} -\begin{DoxyCompactItemize} -\item - \hyperlink{namespaceDcel_1_1Parser}{Parser} -\begin{DoxyCompactList}\small\item\em Namespace which encapsulates possible file parsers for building D\+C\+EL meshes. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1EdgeIteratorT}{Edge\+IteratorT} -\begin{DoxyCompactList}\small\item\em Class which can iterate through edges and vertices around a D\+C\+EL polygon face. \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1EdgeT}{EdgeT} -\begin{DoxyCompactList}\small\item\em Class which represents a half-\/edge in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1FaceT}{FaceT} -\begin{DoxyCompactList}\small\item\em Class which represents a polygon face in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1MeshT}{MeshT} -\begin{DoxyCompactList}\small\item\em Mesh class which stores a full D\+C\+EL mesh (with signed distance functions) \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1Polygon2D}{Polygon2D} -\begin{DoxyCompactList}\small\item\em Class for embedding a D\+C\+EL polygon face into 2D. \end{DoxyCompactList}\item -class \hyperlink{classDcel_1_1VertexT}{VertexT} -\begin{DoxyCompactList}\small\item\em Class which represents a vertex node in a double-\/edge connected list (D\+C\+EL). \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Typedefs} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{namespaceDcel_a69f60bf0111d66715bf4f7a8e22645e6}\label{namespaceDcel_a69f60bf0111d66715bf4f7a8e22645e6}} -{\footnotesize template$<$class T $>$ }\\using \hyperlink{namespaceDcel_a69f60bf0111d66715bf4f7a8e22645e6}{Primitive\+List} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ const \hyperlink{classDcel_1_1FaceT}{Dcel\+::\+FaceT}$<$ T $>$ $>$ $>$ -\begin{DoxyCompactList}\small\item\em Alias for which primitives are used in the \hyperlink{namespaceBVH}{B\+VH}. For D\+C\+EL meshes the primitive is a polygon face. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Variables} -\begin{DoxyCompactItemize} -\item -\mbox{\Hypertarget{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}\label{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}} -constexpr int \hyperlink{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}{primitives\+Per\+Leaf\+Node} = 1 -\begin{DoxyCompactList}\small\item\em This is the lowest number of a primitives that a \hyperlink{namespaceBVH}{B\+VH} node is allowed to enclose. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , class BV $>$ }\\\hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+H\+::\+B\+V\+ConstructorT}$<$ \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$, BV $>$ \hyperlink{namespaceDcel_a628449c42ce3f2784ca018f2a3c88a11}{default\+B\+V\+Constructor} -\begin{DoxyCompactList}\small\item\em Bounding volume constructor for a D\+C\+EL face. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , class BV , int K$>$ }\\\hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{B\+V\+H\+::\+Stop\+FunctionT}$<$ T, \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$, BV, K $>$ \hyperlink{namespaceDcel_a45e9f2554a8d9ea01164cd51f787f989}{default\+Stop\+Function} -\begin{DoxyCompactList}\small\item\em Default stop function. This function terminates the division process if a \hyperlink{namespaceBVH}{B\+VH} node has only one primitive. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , int K$>$ }\\\hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT}$<$ \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$, K $>$ \hyperlink{namespaceDcel_ab4f869248e23d47bb01ad06c76288fef}{spatial\+Split\+Partitioner} -\begin{DoxyCompactList}\small\item\em Default partitioner function for subdividing into K sub-\/volumes. \end{DoxyCompactList}\item -{\footnotesize template$<$class T , int K$>$ }\\\hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT}$<$ \hyperlink{classDcel_1_1FaceT}{FaceT}$<$ T $>$, K $>$ \hyperlink{namespaceDcel_a08217ffcd4cfc6f58a3b0b3f780fc611}{spatial\+Split\+Binary\+Partitioner} -\begin{DoxyCompactList}\small\item\em Binary partitioner based on spatial splits. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Namespace containing various double-\/connected edge list (D\+C\+EL) functionality. - -\subsection{Variable Documentation} -\mbox{\Hypertarget{namespaceDcel_a628449c42ce3f2784ca018f2a3c88a11}\label{namespaceDcel_a628449c42ce3f2784ca018f2a3c88a11}} -\index{Dcel@{Dcel}!default\+B\+V\+Constructor@{default\+B\+V\+Constructor}} -\index{default\+B\+V\+Constructor@{default\+B\+V\+Constructor}!Dcel@{Dcel}} -\subsubsection{\texorpdfstring{default\+B\+V\+Constructor}{defaultBVConstructor}} -{\footnotesize\ttfamily template$<$class T , class BV $>$ \\ -\hyperlink{namespaceBVH_a245702d7eff40cdaedb5dff68c25a88a}{B\+V\+H\+::\+B\+V\+ConstructorT}$<$\hyperlink{classDcel_1_1FaceT}{FaceT}$<$T$>$, BV$>$ Dcel\+::default\+B\+V\+Constructor} - -{\bfseries Initial value\+:} -\begin{DoxyCode} -= [](\textcolor{keyword}{const} std::shared\_ptr >& a\_primitive)\{ - \textcolor{keywordflow}{return} BV(a\_primitive->getAllVertexCoordinates()); - \} -\end{DoxyCode} - - -Bounding volume constructor for a D\+C\+EL face. - -With B\+V\+Hs and D\+C\+EL, the object to be bounded is the polygon face (e.\+g., triangle). We assume that our BV constructor can enclose points, so we return an object that encloses all the vertices of the polygon. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitive} & Primitive (facet) to be bounded. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns a bounding volume which encloses the input face. -\end{DoxyReturn} -\mbox{\Hypertarget{namespaceDcel_a45e9f2554a8d9ea01164cd51f787f989}\label{namespaceDcel_a45e9f2554a8d9ea01164cd51f787f989}} -\index{Dcel@{Dcel}!default\+Stop\+Function@{default\+Stop\+Function}} -\index{default\+Stop\+Function@{default\+Stop\+Function}!Dcel@{Dcel}} -\subsubsection{\texorpdfstring{default\+Stop\+Function}{defaultStopFunction}} -{\footnotesize\ttfamily template$<$class T , class BV , int K$>$ \\ -\hyperlink{namespaceBVH_afef1c5979c34a11d23b756cc09654bf9}{B\+V\+H\+::\+Stop\+FunctionT}$<$T, \hyperlink{classDcel_1_1FaceT}{FaceT}$<$T$>$, BV, K$>$ Dcel\+::default\+Stop\+Function} - -{\bfseries Initial value\+:} -\begin{DoxyCode} -= [](\textcolor{keyword}{const} \hyperlink{classBVH_1_1NodeT}{BVH::NodeT}, BV, K>& a\_node)\{ - \textcolor{keyword}{const} \textcolor{keyword}{auto}& primitives = a\_node.getPrimitives(); - \textcolor{keyword}{const} \textcolor{keywordtype}{int} numPrims = primitives.size(); - - \textcolor{keywordflow}{return} numPrims <= \hyperlink{namespaceDcel_a4db11eb50441e7c4e6c3ae796a202024}{primitivesPerLeafNode} || numPrims < K; - \} -\end{DoxyCode} - - -Default stop function. This function terminates the division process if a \hyperlink{namespaceBVH}{B\+VH} node has only one primitive. - -In this function, \hyperlink{classBVH_1_1NodeT}{B\+V\+H\+::\+NodeT}$<$T, Face\+T$<$\+T$>$, \hyperlink{namespaceBVH}{B\+VH} $>$ is a \hyperlink{namespaceBVH}{B\+VH} node. The interpretation of the parameters are\+: T is the precision, Face\+T$<$\+T$>$ is the primitive type in the \hyperlink{namespaceBVH}{B\+VH} tree, and BV is the bounding volume type. -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+node} & Bounding volume hierarchy node. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Returns true if the bounding volume shouldn\textquotesingle{}t be split more and false otherwise. -\end{DoxyReturn} -\mbox{\Hypertarget{namespaceDcel_a08217ffcd4cfc6f58a3b0b3f780fc611}\label{namespaceDcel_a08217ffcd4cfc6f58a3b0b3f780fc611}} -\index{Dcel@{Dcel}!spatial\+Split\+Binary\+Partitioner@{spatial\+Split\+Binary\+Partitioner}} -\index{spatial\+Split\+Binary\+Partitioner@{spatial\+Split\+Binary\+Partitioner}!Dcel@{Dcel}} -\subsubsection{\texorpdfstring{spatial\+Split\+Binary\+Partitioner}{spatialSplitBinaryPartitioner}} -{\footnotesize\ttfamily template$<$class T , int K$>$ \\ -\hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT}$<$\hyperlink{classDcel_1_1FaceT}{FaceT}$<$T$>$, K$>$ Dcel\+::spatial\+Split\+Binary\+Partitioner} - - - -Binary partitioner based on spatial splits. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & List of primitives to partition into sub-\/bounding volumes\\ -\hline -\end{DoxyParams} -This is a partitioner that calls the spatial\+Split\+Partitioner in order to recursively subdivided volumes into 2$^\wedge$K subvolumes. \mbox{\Hypertarget{namespaceDcel_ab4f869248e23d47bb01ad06c76288fef}\label{namespaceDcel_ab4f869248e23d47bb01ad06c76288fef}} -\index{Dcel@{Dcel}!spatial\+Split\+Partitioner@{spatial\+Split\+Partitioner}} -\index{spatial\+Split\+Partitioner@{spatial\+Split\+Partitioner}!Dcel@{Dcel}} -\subsubsection{\texorpdfstring{spatial\+Split\+Partitioner}{spatialSplitPartitioner}} -{\footnotesize\ttfamily template$<$class T , int K$>$ \\ -\hyperlink{namespaceBVH_a7c33d54da9893d506709b2ca96b76f55}{B\+V\+H\+::\+PartitionerT}$<$\hyperlink{classDcel_1_1FaceT}{FaceT}$<$T$>$, K$>$ Dcel\+::spatial\+Split\+Partitioner} - - - -Default partitioner function for subdividing into K sub-\/volumes. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\tt in} & {\em a\+\_\+primitives} & List of primitives to partition into sub-\/bounding volumes\\ -\hline -\end{DoxyParams} -This is a very stupid partitioner which splits into equal chunks along the longest coordinate. \ No newline at end of file diff --git a/docs/doxygen/latex/namespaceDcel_1_1Parser.tex b/docs/doxygen/latex/namespaceDcel_1_1Parser.tex deleted file mode 100644 index b9e88cb9..00000000 --- a/docs/doxygen/latex/namespaceDcel_1_1Parser.tex +++ /dev/null @@ -1,16 +0,0 @@ -\hypertarget{namespaceDcel_1_1Parser}{}\section{Dcel\+:\+:Parser Namespace Reference} -\label{namespaceDcel_1_1Parser}\index{Dcel\+::\+Parser@{Dcel\+::\+Parser}} - - -Namespace which encapsulates possible file parsers for building D\+C\+EL meshes. - - -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -class \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} -\begin{DoxyCompactList}\small\item\em Class for generation a Dcel\+::\+Mesh\+T$<$\+T$>$ from the Stanford \hyperlink{classDcel_1_1Parser_1_1PLY}{P\+LY} file format. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Namespace which encapsulates possible file parsers for building D\+C\+EL meshes. \ No newline at end of file diff --git a/docs/doxygen/latex/namespaceEBGeometry.tex b/docs/doxygen/latex/namespaceEBGeometry.tex deleted file mode 100644 index e7568ea8..00000000 --- a/docs/doxygen/latex/namespaceEBGeometry.tex +++ /dev/null @@ -1,11 +0,0 @@ -\hypertarget{namespaceEBGeometry}{}\section{E\+B\+Geometry Namespace Reference} -\label{namespaceEBGeometry}\index{E\+B\+Geometry@{E\+B\+Geometry}} - - -Name space for all of \hyperlink{namespaceEBGeometry}{E\+B\+Geometry}. - - - - -\subsection{Detailed Description} -Name space for all of \hyperlink{namespaceEBGeometry}{E\+B\+Geometry}. \ No newline at end of file diff --git a/docs/doxygen/latex/namespaces.tex b/docs/doxygen/latex/namespaces.tex deleted file mode 100644 index 9fcc6077..00000000 --- a/docs/doxygen/latex/namespaces.tex +++ /dev/null @@ -1,8 +0,0 @@ -\section{Namespace List} -Here is a list of all documented namespaces with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{\hyperlink{namespaceBoundingVolumes}{Bounding\+Volumes} \\*Namespace for encapsulating various bounding volumes for usage with B\+V\+Hs }{\pageref{namespaceBoundingVolumes}}{} -\item\contentsline{section}{\hyperlink{namespaceBVH}{B\+VH} \\*Namespace for various bounding volume heirarchy (\hyperlink{namespaceBVH}{B\+VH}) functionality }{\pageref{namespaceBVH}}{} -\item\contentsline{section}{\hyperlink{namespaceDcel}{Dcel} \\*Namespace containing various double-\/connected edge list (D\+C\+EL) functionality }{\pageref{namespaceDcel}}{} -\item\contentsline{section}{\hyperlink{namespaceDcel_1_1Parser}{Dcel\+::\+Parser} \\*Namespace which encapsulates possible file parsers for building D\+C\+EL meshes }{\pageref{namespaceDcel_1_1Parser}}{} -\item\contentsline{section}{\hyperlink{namespaceEBGeometry}{E\+B\+Geometry} \\*Name space for all of \hyperlink{namespaceEBGeometry}{E\+B\+Geometry} }{\pageref{namespaceEBGeometry}}{} -\end{DoxyCompactList} diff --git a/docs/doxygen/latex/refman.tex b/docs/doxygen/latex/refman.tex deleted file mode 100644 index 3e96ff4e..00000000 --- a/docs/doxygen/latex/refman.tex +++ /dev/null @@ -1,230 +0,0 @@ -\documentclass[twoside]{book} - -% Packages required by doxygen -\usepackage{fixltx2e} -\usepackage{calc} -\usepackage{doxygen} -\usepackage[export]{adjustbox} % also loads graphicx -\usepackage{graphicx} -\usepackage[utf8]{inputenc} -\usepackage{makeidx} -\usepackage{multicol} -\usepackage{multirow} -\PassOptionsToPackage{warn}{textcomp} -\usepackage{textcomp} -\usepackage[nointegrals]{wasysym} -\usepackage[table]{xcolor} - -% Font selection -\usepackage[T1]{fontenc} -\usepackage[scaled=.90]{helvet} -\usepackage{courier} -\usepackage{amssymb} -\usepackage{sectsty} -\renewcommand{\familydefault}{\sfdefault} -\allsectionsfont{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\renewcommand{\DoxyLabelFont}{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} - -% Page & text layout -\usepackage{geometry} -\geometry{% - a4paper,% - top=2.5cm,% - bottom=2.5cm,% - left=2.5cm,% - right=2.5cm% -} -\tolerance=750 -\hfuzz=15pt -\hbadness=750 -\setlength{\emergencystretch}{15pt} -\setlength{\parindent}{0cm} -\setlength{\parskip}{3ex plus 2ex minus 2ex} -\makeatletter -\renewcommand{\paragraph}{% - \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@parafont% - }% -} -\renewcommand{\subparagraph}{% - \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@subparafont% - }% -} -\makeatother - -% Headers & footers -\usepackage{fancyhdr} -\pagestyle{fancyplain} -\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} -\fancyhead[CE]{\fancyplain{}{}} -\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} -\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} -\fancyhead[CO]{\fancyplain{}{}} -\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} -\fancyfoot[LE]{\fancyplain{}{}} -\fancyfoot[CE]{\fancyplain{}{}} -\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} -\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} -\fancyfoot[CO]{\fancyplain{}{}} -\fancyfoot[RO]{\fancyplain{}{}} -\renewcommand{\footrulewidth}{0.4pt} -\renewcommand{\chaptermark}[1]{% - \markboth{#1}{}% -} -\renewcommand{\sectionmark}[1]{% - \markright{\thesection\ #1}% -} - -% Indices & bibliography -\usepackage{natbib} -\usepackage[titles]{tocloft} -\setcounter{tocdepth}{3} -\setcounter{secnumdepth}{5} -\makeindex - -% Hyperlinks (required, but should be loaded last) -\usepackage{ifpdf} -\ifpdf - \usepackage[pdftex,pagebackref=true]{hyperref} -\else - \usepackage[ps2pdf,pagebackref=true]{hyperref} -\fi -\hypersetup{% - colorlinks=true,% - linkcolor=blue,% - citecolor=blue,% - unicode% -} - -% Custom commands -\newcommand{\clearemptydoublepage}{% - \newpage{\pagestyle{empty}\cleardoublepage}% -} - -\usepackage{caption} -\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} - -%===== C O N T E N T S ===== - -\begin{document} - -% Titlepage & ToC -\hypersetup{pageanchor=false, - bookmarksnumbered=true, - pdfencoding=unicode - } -\pagenumbering{alph} -\begin{titlepage} -\vspace*{7cm} -\begin{center}% -{\Large E\+B\+Geometry \\[1ex]\large 1.\+0 }\\ -\vspace*{1cm} -{\large Generated by Doxygen 1.8.13}\\ -\end{center} -\end{titlepage} -\clearemptydoublepage -\pagenumbering{roman} -\tableofcontents -\clearemptydoublepage -\pagenumbering{arabic} -\hypersetup{pageanchor=true} - -%--- Begin generated contents --- -\chapter{E\+B\+Geometry} -\label{index}\hypertarget{index}{}\input{index} -\chapter{Todo List} -\label{todo} -\Hypertarget{todo} -\input{todo} -\chapter{Namespace Index} -\input{namespaces} -\chapter{Hierarchical Index} -\input{hierarchy} -\chapter{Class Index} -\input{annotated} -\chapter{File Index} -\input{files} -\chapter{Namespace Documentation} -\input{namespaceBoundingVolumes} -\input{namespaceBVH} -\input{namespaceDcel} -\input{namespaceDcel_1_1Parser} -\input{namespaceEBGeometry} -\chapter{Class Documentation} -\input{classBoundingVolumes_1_1AABBT} -\input{classBoundingVolumes_1_1BoundingSphereT} -\input{classBoxSDF} -\input{classCylinderSDF} -\input{classDcel_1_1EdgeIteratorT} -\input{classDcel_1_1EdgeT} -\input{classDcel_1_1FaceT} -\input{classBVH_1_1LinearBVH} -\input{classBVH_1_1LinearNodeT} -\input{classDcel_1_1MeshT} -\input{classBVH_1_1NodeT} -\input{classDcel_1_1Parser_1_1PLY} -\input{classDcel_1_1Polygon2D} -\input{classRotateOp} -\input{classSignedDistanceFunction} -\input{classSphereSDF} -\input{classTorusSDF} -\input{classTransformOp} -\input{classTranslateOp} -\input{classUnion} -\input{classUnionBVH} -\input{classVec2T} -\input{classVec3T} -\input{classDcel_1_1VertexT} -\chapter{File Documentation} -\input{EBGeometry__AnalyticDistanceFunctions_8hpp} -\input{EBGeometry__BoundingVolumes_8hpp} -\input{EBGeometry__BoundingVolumesImplem_8hpp} -\input{EBGeometry__BVH_8hpp} -\input{EBGeometry__BVHImplem_8hpp} -\input{EBGeometry__Dcel_8hpp} -\input{EBGeometry__DcelBVH_8hpp} -\input{EBGeometry__DcelEdge_8hpp} -\input{EBGeometry__DcelEdgeImplem_8hpp} -\input{EBGeometry__DcelFace_8hpp} -\input{EBGeometry__DcelFaceImplem_8hpp} -\input{EBGeometry__DcelIterator_8hpp} -\input{EBGeometry__DcelIteratorImplem_8hpp} -\input{EBGeometry__DcelMesh_8hpp} -\input{EBGeometry__DcelMeshImplem_8hpp} -\input{EBGeometry__DcelParser_8hpp} -\input{EBGeometry__DcelParserImplem_8hpp} -\input{EBGeometry__DcelPolygon2D_8hpp} -\input{EBGeometry__DcelPolygon2DImplem_8hpp} -\input{EBGeometry__DcelVertex_8hpp} -\input{EBGeometry__DcelVertexImplem_8hpp} -\input{EBGeometry__NamespaceFooter_8hpp} -\input{EBGeometry__NamespaceHeader_8hpp} -\input{EBGeometry__SignedDistanceFunction_8hpp} -\input{EBGeometry__SignedDistanceFunctionImplem_8hpp} -\input{EBGeometry__TransformOps_8hpp} -\input{EBGeometry__TransformOpsImplem_8hpp} -\input{EBGeometry__Union_8hpp} -\input{EBGeometry__UnionBVH_8hpp} -\input{EBGeometry__UnionBVHImplem_8hpp} -\input{EBGeometry__UnionImplem_8hpp} -\input{EBGeometry__Vec_8hpp} -\input{EBGeometry__VecImplem_8hpp} -%--- End generated contents --- - -% Index -\backmatter -\newpage -\phantomsection -\clearemptydoublepage -\addcontentsline{toc}{chapter}{Index} -\printindex - -\end{document} diff --git a/docs/doxygen/latex/todo.tex b/docs/doxygen/latex/todo.tex deleted file mode 100644 index a55f733b..00000000 --- a/docs/doxygen/latex/todo.tex +++ /dev/null @@ -1,9 +0,0 @@ - -\begin{DoxyRefList} -\item[\label{todo__todo000001}% -\Hypertarget{todo__todo000001}% -Class \hyperlink{classBVH_1_1LinearNodeT}{B\+VH\+:\+:Linear\+NodeT$<$ T, P, BV, K $>$} ]There\textquotesingle{}s a minor optimization that can be made to the memory alignment, which is as follows\+: For a leaf node we never really need the m\+\_\+child\+Offsets array, and for a regular node we never really need the m\+\_\+primitives\+Offset member. Moreover, m\+\_\+child\+Offsets could be made into a K-\/1 sized array because we happen to know that the linearized hierarchy will store the first child node immediately after the regular node. We could shave off 16 bytes of storage, which would mean that a double-\/precision binary tree only takes up one word of C\+PU memory. -\item[\label{todo__todo000002}% -\Hypertarget{todo__todo000002}% -File \hyperlink{EBGeometry__DcelEdgeImplem_8hpp}{E\+B\+Geometry\+\_\+\+Dcel\+Edge\+Implem.hpp} ]Include m\+\_\+face in constructors -\end{DoxyRefList} \ No newline at end of file diff --git a/docs/genindex.html b/docs/genindex.html deleted file mode 100644 index b6735ea6..00000000 --- a/docs/genindex.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - Index — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- -
    - -
  • Docs »
  • - -
  • Index
  • - - -
  • - - - -
  • - -
- - -
-
-
-
- - -

Index

- -
- -
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index dcb28ec6..00000000 --- a/docs/index.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - EBGeometry’s user documentation — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- - - - -
-
-
-
- -
-

EBGeometry’s user documentation

-

This is the user documentation for EBGeometry, a small C++ package for computing signed distance fields from surface tesselations and analytic shapes. -Although EBGeometry is a self-contained package, it is was originally written for usage with embedded boundary (EB) and immersed boundary (IB) codes. -EBGeometry does not involve itself with the discrete geometry generation, i.e. the generation of cut-cells. -It only takes care of the geometry representation, i.e. the creation of complex geometries as numerically efficient signed distance fields.

-
-

Important

-

A separate Doxygen-generated API of EBGeometry is found here.

-
-
-

Introduction

-
-
-
-
-

Concepts

-
-
-
-
-

Implementation

-
-
-
-
-

Guided examples

-
-
-
-
-

References

-
-
-
-
- - -
- -
- - -
-
- -
- -
- - - - - - - - - - - - \ No newline at end of file diff --git a/docs/objects.inv b/docs/objects.inv deleted file mode 100644 index 3a1e00ff..00000000 --- a/docs/objects.inv +++ /dev/null @@ -1,10 +0,0 @@ -# Sphinx inventory version 2 -# Project: EBGeometry -# Version: -# The remainder of this file is compressed using zlib. -xڍV]6}K75B $e٤K Ƕ,|w/!пѿ_чm쓭sȇ۷`lR%~}k;5ȊNJ BQ3]WJ[X` -*n,8Ee7W)ɍg:4-PAcq|`]/n%hfpm >7I善Od*j.CGn}"D1ORV;L7KOl~|I {6+p@bS0@* H@iXcfmZUC%qoRkHmSi([ֿb奩jOx_(xwjsqۃK?vGf\3XJ4B0‰OSd0In(N;IwTq-v4e )M ɫU%3Œ<`_y:ދs.n8A-o4Tl -]Fu#g/u -f֕h,;ZuJ;RKtgŖ$iV]6(WYiV 2ޘnm'+|UQI[ (lqK!0#. jP"ŒI;m2AwI?!,s \ No newline at end of file diff --git a/docs/search.html b/docs/search.html deleted file mode 100644 index 3dc97c16..00000000 --- a/docs/search.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - Search — EBGeometry 1.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - -
- -
- - - - - - - - - - - - - - - - - -
- -
    - -
  • Docs »
  • - -
  • Search
  • - - -
  • - - - -
  • - -
- - -
-
-
-
- - - - -
- -
- -
- -
- - -
-
- -
- -
- - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/searchindex.js b/docs/searchindex.js deleted file mode 100644 index 15bd997a..00000000 --- a/docs/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({docnames:["BVH","Concepts","DCEL","Example_AMReX","Example_Basic","Example_Union","Examples","ImplemBVH","ImplemDCEL","ImplemSDF","ImplemUnion","ImplemVec","Implementation","Introduction","ZZReferences","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinxcontrib.bibtex":9,sphinx:56},filenames:["BVH.rst","Concepts.rst","DCEL.rst","Example_AMReX.rst","Example_Basic.rst","Example_Union.rst","Examples.rst","ImplemBVH.rst","ImplemDCEL.rst","ImplemSDF.rst","ImplemUnion.rst","ImplemVec.rst","Implementation.rst","Introduction.rst","ZZReferences.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"003527":5,"100":5,"1109":14,"2005":14,"243":14,"253":14,"7353":5,"7500":5,"7580":5,"abstract":9,"case":[0,1,2,7,8],"char":4,"class":[3,7,9,10,11],"const":[3,5,7,8,9,10],"default":2,"final":4,"float":[7,8,9],"function":[1,2,4,5,7,8,10,11,13],"import":[1,2],"int":[3,4,5,7,8,9,10],"new":[0,7,8],"public":[3,7,8,9,10,11],"return":[1,3,4,5,7,8,9,10],"short":[0,7],"static":8,"true":[1,7],"void":9,For:[0,1,2,5,6,7,8,9],One:4,That:[7,10],The:[0,1,2,4,5,7,8,9,10,13],Then:8,There:[0,7],These:[0,7],Using:3,a_angl:9,a_axi:9,a_bvconstructor:10,a_chunk:[],a_distancefunct:10,a_filenam:[3,8],a_flipsign:[3,10],a_nod:[7,8],a_otherbv:7,a_point:[7,8,9,10],a_prim:5,a_primit:[7,8],a_sdf:7,a_transl:9,aabb:[0,5,7],aabbconstructor:5,aabbt:[7,8],aana:14,abl:8,about:[5,9],abov:[0,4,5,7,8,9],abs:10,acceler:[0,3,7,9,13],access:2,addit:[1,7,9,10,11],advantag:0,after:[0,2,10],aggreg:7,algorithm:[0,2],alia:8,align:[0,5,7],all:[0,2,4,6,8,10],allow:7,almost:[0,7],almostequalchunks:[],along:[7,8],alpha_i:2,alreadi:7,also:[0,1,2,4,5,7,8,9],altern:[0,9],although:[0,7,8,15],alwai:[1,10],amrex:13,amrex_d_decl:3,analyt:[0,7,13,15],angl:[2,9,14],ani:0,anoth:[0,7],api:[7,8,9,12,15],appear:7,appli:[7,9],appropri:5,approxim:0,argc:4,argument:[0,7],argv:4,ari:0,arithmet:11,around:[0,5,9],arrai:[5,7],ascii:8,associ:0,assum:[3,7,8],auto:[3,4,7,8,10],automat:[7,8],avail:[2,7,8],avoid:8,axi:[0,5,7,8,9],back:0,baerentzen:14,balanc:0,base:[7,10],basic:[4,7,12,13],becaus:8,becom:[0,7],been:7,begin:[1,4,7],being:[0,9],belong:2,below:[6,7,12],benefit:7,best:8,between:[0,1,2,4,5],beyond:0,binari:[0,4,7],blender:8,block:[4,5],bool:[3,7,8,10],both:[2,7],bottom:[0,7],bound:[3,4,5,8,10,13],boundari:[13,15],boundingspher:7,boundingspheret:7,boundingvolum:[7,8],box:[0,5,7,9],boxsdf:9,branch:[0,4,7],brief:[3,12],build:[7,8],builder:7,builderbvh:7,buildernod:3,built:7,bvconstructor:[7,10],bvconstructort:[5,7,8,10],bvh:[0,7,9,12,13],bvhsdf:4,bvpartition:[],calcul:13,call:[0,4,7,8,9],can:[0,1,2,4,5,7,8,9,10,13],capabl:3,care:15,cartesian:[9,11],cdot:2,cell:15,center:[1,5],centroid:[7,8,10],check:7,child:[0,7],children:[0,7],chombo:13,choos:7,chunk:[7,8],chunkpartition:[7,8],circul:2,clone:13,closer:0,closest:[0,1,2,10],code:[3,4,5,7,9,11,13,15],com:13,common:[9,11],compact:[3,4,8,10,13],compactbvh:[7,8],compar:[0,2,13],comparison:4,compil:[3,6,13],complet:0,complex:15,complic:7,compon:[11,12],compos:5,composit:1,comput:[0,2,4,5,7,8,13,14,15],concept:9,connect:[2,13],consid:[0,6,8,12],consist:[2,5],const_iter:[],constexpr:[5,8],constraint:8,construct:[9,10,13],constructor:[3,7,8,9,10],contain:[0,7,8,15],convent:[1,7],convert:8,coordin:[2,7,8,9],could:[0,5],coupl:13,cours:7,cpp:[3,4,5],cpu:7,creat:[0,3,4,7,8,10,13],creation:[5,7,15],criteria:0,cross:2,cur:10,current:[7,8],cut:15,cylind:9,cylindersdf:9,dash:0,data:[0,2,8],dcel:[3,4,7,9,10,11,12,13],dealloc:7,decl:3,defaultbvconstructor:[3,4,8],defaultpartition:[3,4,8],defaultstopfunct:[3,4,8],defin:[1,2,4,5,7,8,9,10],degre:[3,7,9,10],delet:8,delta:[],depth:[0,7],descend:0,describ:7,descript:4,destroi:7,detail:[4,5,7,8,12],determin:[0,2,7,11],differ:[1,4,8],dimension:[2,5,11],direct:7,directli:[3,4],directsdf:4,discret:15,discuss:[7,10],distanc:[4,5,8,10,13,14,15],distinguish:2,document:8,doe:[0,2,15],doi:14,done:[0,2,7,8],dot:11,doubl:7,doubli:[2,13],down:0,downward:7,doxygen:[7,8,15],duplic:0,dure:4,each:[0,2,5,7],easili:[2,8],eb2:3,ebgeometri:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],ebgeometry_analyticsigneddistancefunct:9,ebgeometry_boundingvolum:7,ebgeometry_dcelbvh:8,edg:[2,8,13],edget:8,effici:[7,15],eikon:1,either:[2,8],emb:13,embed:[0,2,7,8,13,15],emplace_back:5,empti:[],encapsul:[7,9],enclos:[0,5,7],end:[1,2,7],endindic:[],enough:8,enoughprimit:0,ensur:1,entir:[0,8],entri:9,equal:[7,8],equalcount:7,error:4,etc:8,evalu:1,everi:[0,4,5,10],everywher:1,exact:1,exampl:[0,1,3,4,5,6,7,9,13],except:10,exist:[0,2,8,9,13],expand:[3,7],extent:[],exterior:[1,11],extern:9,extra:[7,8],extrem:0,f_i:2,face:[0,2,3,4,8],facet:[2,3,4,7,8],fals:5,fast:5,faster:[5,7],fastunion:5,featur:2,fetch:2,few:6,fewer:8,field:[2,4,9,10,13,15],fig:[0,2],figur:7,file:[3,6,9],file_format:8,find:[0,10],finit:8,first:[0,2,4,5,7,9,11],fit:7,flatten:[3,4,7,8,10],flattentre:[3,4,7,8],flexibl:[0,13],flip:2,fluctuat:8,focu:[3,4,5],folder:[6,13],follow:[0,1,2,3,4,5,7,8,9,10,13],footprint:7,foral:0,form:13,format:8,formul:7,found:[1,7,15],frac:2,free:7,from:[0,2,3,4,7,8,10,13,15],front:7,fulfil:[7,8],full:[4,7,8,13],fullbvh:7,fundament:[0,8,9],further:[0,7],gener:[7,15],geometr:[0,7],geometri:[8,15],get:[0,7],getallvertexcoordin:8,getcent:[5,7],getcentroid:7,getdist:7,getfac:[3,4,8],getnumprimit:7,getprimit:8,getradiu:[5,7],git:13,github:13,give:[4,7],given:[2,3,4,5,7,8],goal:0,graphic:14,greater:7,greatli:0,grid:[8,13],half:[2,8],has:[0,1,3,5,7,8,11],have:[0,5,7,8,9],header:[12,13],heavi:13,here:[0,3,4,5,8,12,15],heurist:0,hierarc:0,hierarchi:[3,4,8,10,13],higher:13,highli:0,hold:7,hole:[2,8],how:[3,4,6,9,13],hpp:[7,8,9,13],http:8,ident:10,ieee:14,ignor:2,illustr:0,immedi:0,immers:15,implement:[2,3,5,7,8,9,10,12,13],implicit:1,importantli:7,impos:7,includ:[7,8,13],incomplet:8,index:[1,7],indic:[3,7,10],ineffici:0,infin:10,inherit:10,inlin:[3,7],input:[0,7,8,9],insert:0,insertchildnod:0,insid:[1,2],instal:3,instanti:5,instruct:6,integr:[4,7,10],interior:[0,1,7,11],intern:10,intersect:1,introduct:12,invers:8,investig:[0,7],involv:[2,15],issu:4,iter:[0,4,5,8,10],its:[0,10],itself:[7,15],jump:2,just:[2,7,8],laid:7,lambda:[0,5],last:[],lattic:5,ldot:[0,1],leaf:[0,7,8],least:0,leav:7,left:[0,1,2,9],length:[8,11],less:7,let:[0,7],level:13,librari:[12,13],lie:[0,5],lies:[2,7],like:[5,7,8,9,11,12,13],likewis:7,limit:[0,8],line:2,linear:[7,13],linearbvh:[3,7,9,10],linearnod:[3,7,10],linearnodet:7,linsdf:4,list:[0,2,7,10,13],live:7,locat:[6,7],longest:8,look:10,m_bvh:9,m_childoffset:7,m_distancefunct:10,m_flipsign:[3,10],m_linearnod:7,m_mesh:9,m_numprim:7,m_numprimit:7,m_primit:7,m_primitivesoffset:7,m_rootnod:[3,10],macro:3,magnitud:0,mai:7,main:[3,4,5,8],major:12,make:[0,5,8,13],make_shar:[3,4,5,7,8],manipul:9,mathbb:1,mathbf:[0,1,2,9],matter:7,max:7,maxdir:7,mean:[0,7],member:[7,8],memori:[3,7],mesh:[3,8,9,10,11,13],meshlab:8,mesht:[4,8,9],metaprogram:13,method:[0,5],metric:4,might:2,million:5,min:7,minim:0,minimum:7,mix:7,more:[0,2,7],moreov:[0,8],most:[2,7,11],move:0,multi:13,multipl:11,must:[5,7,8,9],mydistancefunct:9,myfil:8,myprimit:7,mysigneddistancefunct:9,nabla:1,namespac:[2,3,7,8,11,12],navig:13,necessari:[0,2],need:[5,8,11],neighbor:2,newli:0,newobject:0,next:[2,3,4,8],node:[0,4,7,8],nodet:[3,4,7,8],noexcept:[3,7,8,9,10],non:1,normal:8,note:[0,3,4,5,7,8,9,10],nullptr:[7,8],number:[0,2,7,8],numdistancefunct:10,numer:[11,15],numeric_limit:10,numprim:[],numprimit:[],object:[0,1,2,4,5,7,9,10,13],obtain:[2,7,8,13],offset:7,old:8,one:[0,2,5,7,8,9,10],onli:[0,7,8,12,13,15],onto:[3,8,10,11],oper:[3,9,11],optim:5,order:[0,7,9,10,13],org:8,orient:[2,4,13],origin:[0,7,10,13,15],other:[0,5,7,9],otherwis:2,our:[4,5],ourselv:5,out:[4,7,9],outgo:[2,8],outsid:[1,2],over:[0,2],overlap:[0,1,10],overrid:[9,10],own:[2,7,10,11,12],pack:[],packag:15,pair:[2,8],param:[],paramet:[7,10],parametr:2,pars:[4,8],parser:[3,4],part:[3,4,5,7],partit:[0,4,5,7,8,10,13],partition:[7,8],partitionedobject:0,partitionert:[7,8],perform:[0,3,4,7,8,9,11,13],permit:[0,2,7,13],planar:[2,11],plane:2,plugin:8,ply:[3,4,8],ply_:8,point:[0,1,2,4,7,8,9,11],pointer:[2,7,8],polygon:[0,2,8,11],polymorph:[0,7],posit:[2,8],possibl:[0,2,9],practic:0,pre:[4,8],precis:[3,4,7,10,11],previou:[2,8],prime:[2,9],primit:[0,7,8,10],primitivelist:7,primitivelistt:7,primitivesperleafnod:[],primsandbv:[],principl:[0,7],procedur:0,product:11,project:[2,11],properti:[0,1],protect:[7,9,10],provid:[0,1,4,5,7,8,10],prune:[0,4,10],pseudonorm:[2,8,14],put:[7,8],quad:1,queri:0,radiu:[1,5],rather:[7,10],ratio:7,rational:7,reach:7,read:[3,8],readascii:[3,4,8],readm:6,real:3,realarrai:3,reason:8,rectangl:0,recurs:[0,7],ree:3,refer:[0,2,6,7,8],regard:[0,5,8],regular:[0,7],relat:11,releas:7,reli:10,reliant:0,remain:[],remaind:[],reorgan:7,replic:7,repres:[0,1,4,13],represent:[2,3,4,7,8,10,13,15],requir:[0,2,3,7,8],respons:7,restrict:8,result:[4,7],ret:10,retain:1,revers:1,right:[0,1,2,9],rightarrow:[0,1],rmrsk:13,root:[3,4,7,8],rotat:[1,9,13],routin:[0,8,11],rule:0,run:[2,5,6,11],s_1:1,s_2:1,s_i:1,s_k:1,same:[0,1,4,7],scale:13,scene:[5,7,13],sdf:[4,5,7,9,10],search:0,second:[4,5,7,11],see:[2,4,5,7,8,10,11],seemingli:7,self:15,sens:0,separ:15,sequenti:9,set:[0,1,7,8],shape:[9,15],share:2,shared_ptr:[4,5,7,8,9,10],shorter:0,should:7,shouldn:[],show:[0,3,4,5,6,13],shown:[0,2,9],side:8,sign:[4,5,8,10,13,14,15],signeddist:[3,7,8,9,10],signeddistancebvh:3,signeddistancefunct:[9,10],simpl:[0,8,13],simpli:[2,5,7,8],simplist:8,sinc:[0,1],singl:[0,2,7],size:[7,8,10],slow:5,slowunion:5,small:[0,15],smaller:7,smart:7,some:8,someth:5,somewher:7,sophist:0,sort:7,sortedprimit:7,sourc:[8,9],spatial:[],spatialsplitpartition:8,speak:7,speedup:5,sph:[1,5,7],sphere:[0,1,7,9],spherecent:7,sphereradiu:7,spheresdf:[7,9],split:[7,8],splitdir:7,stack:7,standard:[2,3,7],start:[2,8],startindic:[],statement:1,static_cast:[5,7],std:[3,4,5,7,8,9,10],step:[0,3,4,5,7],stop:8,stopfunc:7,stopfunct:7,stopfunctiont:[7,8],storag:7,store:[0,2,7,8,13],straightforward:13,strictli:7,string:[3,8],structur:[0,8,9,11,13],sub:[],subdivid:[],subset:0,subtend:2,subtract:11,subtre:0,subvolumeprimit:[],success:8,suffici:8,sum:2,sum_i:2,supplement:[0,2],suppli:[4,7,9],support:[0,7,8,13],surfac:[2,8,13,15],take:[0,7,10,15],templat:[3,8,9,10,11],tend:7,termin:[0,7,8],tertiari:7,tessel:[0,15],textrm:[0,1],than:[0,2,5,7,8,10],thei:[0,4,7,8],them:[0,8,13],themselv:7,therefor:[2,7,8],theta:9,thi:[0,2,3,4,5,7,8,9,15],think:2,third:5,three:[2,5,11],through:[0,4,5,7,9,10],thu:[0,7,8,10],tight:[0,13],tighter:[3,7,8],tightli:0,time:5,togeth:[],took:5,top:[0,7,13],topdownconstruct:0,topdownsortandpartitionprimit:[3,4,7,8],toru:9,torussdf:9,touch:[1,10],transact:14,transform:13,transformpoint:9,translat:[1,9,13],travers:[0,4,7],tree:[0,3,4,7,8,10,13],tri:0,triangl:[0,8],triangul:[0,7],tvcg:14,two:[0,2,5,7,10,11,13],type:[0,4,5,7,8,10],typenam:[],typic:8,under:[8,12],union:[7,13],unionbvh:[5,7,10],uniqu:[0,2],unlik:2,unord:7,unsigneddistance2:8,usag:[13,15],use:[1,2,3,5,6,8,13],used:[0,5,10,13],useful:0,user:[3,7,8,9],uses:[2,4,13],using:[2,3,4,5,7,8,9,10,14],usual:[0,7],validchunk:[],valu:7,vari:0,variabl:7,variou:[2,7,9,12],vec2t:11,vec3:[3,5,7,8],vec3t:[3,7,8,9,10,11],vec:0,vector:[5,7,8,9,10],versa:7,version:3,vertex:[2,8],vertext:8,vertic:[2,8],vice:7,visibl:13,visit:0,visual:14,volum:[3,4,5,8,10,13],wai:[0,5,7],water:13,watertight:[2,4,13],weight:14,well:[0,1,2,5,8],what:0,when:[0,2,3,5,7,8,9,11],where:[0,1,2,5,7,9,10],which:[0,1,2,3,4,5,7,8,9,10,13],whose:0,wide:4,wiki:8,wikipedia:8,wind:2,within:7,without:9,word:7,written:[1,11,13,15],yield:[2,7],you:3,your:[8,13],zero:7},titles:["Bounding volume hierarchies","Signed distance fields","DCEL mesh structure","Integration with AMReX","Reading mesh files","Unions","<no title>","Bounding volume hierarchy","DCEL","Signed distance function","Unions","Vector types","<no title>","Requirements","References","EBGeometry\u2019s user documentation"],titleterms:{"class":8,"function":[0,3,9],amrex:3,analyt:9,basic:[0,2],bound:[0,7],bvh:[3,4,5,8,10],code:8,compact:7,concept:[0,2,15],constraint:7,construct:[0,3,4,7,8],creat:5,dcel:[2,8],distanc:[0,1,2,3,7,9],document:15,ebgeometri:15,enabl:[5,10],exampl:[8,15],expos:3,featur:13,field:1,file:[4,8],form:7,guid:15,hierarchi:[0,7],implement:15,integr:[3,8],introduct:15,mesh:[2,4],method:8,normal:2,output:5,parser:8,quickstart:13,read:4,refer:[14,15],requir:13,sign:[0,1,2,3,7,9],sphere:5,standard:[5,10],structur:2,summari:4,surfac:4,templat:7,transform:[1,9],type:11,typic:5,union:[1,5,10],user:15,vector:[2,11],volum:[0,7]}}) \ No newline at end of file