1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

//! Careful abstraction of geometric shapes in a ray tracer is a key //! component of a clean system design, and shapes are the ideal //! candidate for an object-oriented approach. All geometric //! primitives implement a common interface, and the rest of the //! renderer can use this interface without needing any details about //! the underlying shape. This makes it possible to separate the //! geometric and the shading subsystem of pbrt. //! //! - Cone //! - Curve //! - Cylinder //! - Disk //! - Hyperboloid //! - Paraboloid //! - Sphere //! - Triangle //! //! ## Cones //! //! TODO //! //! ## Curves //! //! TODO //! //! ## Spheres //! //! Spheres are a special case of a general type of surfaces called //! quadrics. They are the simplest type of curved surfaces that is //! useful to a ray tracer and are a good starting point for general //! ray intersection routines. //! //! ## Triangle Meshes //! //! While a natural representation would be to have a **Triangle** //! shape implementation where each triangle stored the positions of //! its three vertices, a more memory-efficient representation is to //! separately store entire triangle meshes with an array of vertex //! positions where each individual triangle just stores three offsets //! into this array for its three vertices. //! //! ## Disks //! //! The disk is an interesting quadric since it has a particularly //! straightforward intersection routine that avoids solving the //! quadric equation. //! //! ## Cylinders //! //! Another useful quadric is the cylinder. Cylinder shapes are //! centered around the z axis. //! //! ## Hyperboloids //! //! TODO //! //! ## Paraboloids //! //! TODO //! pub mod curve; pub mod cylinder; pub mod disk; pub mod loopsubdiv; pub mod nurbs; pub mod plymesh; pub mod sphere; pub mod triangle;