- type Model attr = [ModeledSurface attr]
- type Modeling attr = ModelingM attr ()
- data ModelingM attr a
- data MaterialM attr a
- data IntermediateModel
- generalSurface :: Monoid attr => Either (Surface Point3D) (Surface (Point3D, Vector3D)) -> Modeling attr
- extractModel :: Modeling attr -> Model attr
- class ModelType m where
- toIntermediateModel :: m -> IntermediateModel
- data BakedModel
- bakeModel :: IntermediateModel -> IO BakedModel
- freeModel :: BakedModel -> IO ()
- buildIntermediateModel :: Integer -> Modeling attr -> IntermediateModel
- modelInfo :: IntermediateModel -> String
- intermediateModelToOpenGL :: IntermediateModel -> IO ()
- intermediateModelToVertexCloud :: IntermediateModel -> [SurfaceVertex3D]
- splitOpaques :: IntermediateModel -> (IntermediateModel, [IntermediateModel])
- modelingToOpenGL :: Integer -> Modeling attr -> IO ()
- sphere :: Monoid attr => Point3D -> RSdouble -> Modeling attr
- skySphere :: Monoid attr => Point3D -> RSdouble -> Modeling attr
- hemisphere :: Monoid attr => Point3D -> Vector3D -> RSdouble -> Modeling attr
- skyHemisphere :: Monoid attr => Point3D -> Vector3D -> RSdouble -> Modeling attr
- perspectiveSphere :: Monoid attr => Point3D -> RSdouble -> Point3D -> Modeling attr
- torus :: Monoid attr => RSdouble -> RSdouble -> Modeling attr
- openCone :: Monoid attr => (Point3D, RSdouble) -> (Point3D, RSdouble) -> Modeling attr
- closedCone :: Monoid attr => (Point3D, RSdouble) -> (Point3D, RSdouble) -> Modeling attr
- openDisc :: Monoid attr => Point3D -> Vector3D -> RSdouble -> RSdouble -> Modeling attr
- closedDisc :: Monoid attr => Point3D -> Vector3D -> RSdouble -> Modeling attr
- quadralateral :: Monoid attr => Point3D -> Point3D -> Point3D -> Point3D -> Modeling attr
- triangle :: Monoid attr => Point3D -> Point3D -> Point3D -> Modeling attr
- box :: Monoid attr => Point3D -> Point3D -> Modeling attr
- sor :: Monoid attr => Curve Point3D -> Modeling attr
- tube :: Monoid attr => Curve (RSdouble, Point3D) -> Modeling attr
- prism :: Monoid attr => Vector3D -> (Point3D, RSdouble) -> (Point3D, RSdouble) -> Curve Point3D -> Modeling attr
- adaptive :: Modeling attr
- fixed :: (Integer, Integer) -> Modeling attr
- tesselationHintComplexity :: Monoid attr => Integer -> Modeling attr
- twoSided :: Monoid attr => Bool -> Modeling attr
- reverseOrientation :: Monoid attr => Modeling attr -> Modeling attr
- regenerateNormals :: Monoid attr => Modeling attr
- attribute :: Monoid attr => attr -> Modeling attr
- withAttribute :: (attr -> Bool) -> Modeling attr -> Modeling attr
- model :: Modeling attr -> Modeling attr
- type RGBFunction = ApplicativeWrapper ((->) SurfaceVertex3D) RGB
- type RGBAFunction = ApplicativeWrapper ((->) SurfaceVertex3D) RGBA
- material :: MonadMaterial m => MaterialM attr () -> m attr ()
- pigment :: RGBFunction -> MaterialM attr ()
- specular :: GLfloat -> RGBFunction -> MaterialM attr ()
- emissive :: RGBFunction -> MaterialM attr ()
- transparent :: RGBAFunction -> MaterialM attr ()
- filtering :: RGBFunction -> MaterialM attr ()
- class MonadAffine m where
- affine :: AffineTransformation -> m ()
- turbulence :: (SurfaceVertex3D -> SurfaceVertex3D) -> MaterialM attr ()
- deform :: DeformationClass dc => dc -> Modeling attr
Documentation
MonadMaterial ModelingM | |
Monad (ModelingM attr) | |
MonadAffine (ModelingM attr) | |
MonadState [ModeledSurface attr] (ModelingM attr) | |
AffineTransformable (ModelingM attr ()) |
MonadMaterial MaterialM | |
Monad (MaterialM attr) | |
MonadAffine (MaterialM attr) | |
MonadState [Quasimaterial] (MaterialM attr) | |
AffineTransformable (MaterialM attr ()) |
data IntermediateModel Source
generalSurface :: Monoid attr => Either (Surface Point3D) (Surface (Point3D, Vector3D)) -> Modeling attrSource
extractModel :: Modeling attr -> Model attrSource
freeModel :: BakedModel -> IO ()Source
buildIntermediateModel :: Integer -> Modeling attr -> IntermediateModelSource
perspectiveSphere :: Monoid attr => Point3D -> RSdouble -> Point3D -> Modeling attrSource
A perspectiveSphere
is rendered anticipating the point from which it is to be viewed.
Only the part of the surface of the sphere that would be visible from a vantage point is
rendered, and otherwise the sphere seems clipped.
This is the appropriate geometry to model the curvature of a planet from 200 kilometers altitude, for example.
openDisc :: Monoid attr => Point3D -> Vector3D -> RSdouble -> RSdouble -> Modeling attrSource
A flat disc with a hole in the middle, defined in terms of it's center, normal vector, inner (hole) radius and outer radius.
prism :: Monoid attr => Vector3D -> (Point3D, RSdouble) -> (Point3D, RSdouble) -> Curve Point3D -> Modeling attrSource
tesselationHintComplexity :: Monoid attr => Integer -> Modeling attrSource
reverseOrientation :: Monoid attr => Modeling attr -> Modeling attrSource
Swap inside and outside surfaces and reverse normal vectors. This shouldn't effect twoSided
surfaces in any visible way.
regenerateNormals :: Monoid attr => Modeling attrSource
withAttribute :: (attr -> Bool) -> Modeling attr -> Modeling attrSource
type RGBFunction = ApplicativeWrapper ((->) SurfaceVertex3D) RGBSource
type RGBAFunction = ApplicativeWrapper ((->) SurfaceVertex3D) RGBASource
pigment :: RGBFunction -> MaterialM attr ()Source
emissive :: RGBFunction -> MaterialM attr ()Source
transparent :: RGBAFunction -> MaterialM attr ()Source
filtering :: RGBFunction -> MaterialM attr ()Source
class MonadAffine m whereSource
affine :: AffineTransformation -> m ()Source
MonadAffine (MaterialM attr) | |
MonadAffine (ModelingM attr) |
turbulence :: (SurfaceVertex3D -> SurfaceVertex3D) -> MaterialM attr ()Source
deform :: DeformationClass dc => dc -> Modeling attrSource