Safe Haskell | Safe-Inferred |
---|
Figuras
Synopsis
- data Point2D = Point2D {}
- data Camara = Camara Point3D Base
- data Esfera = Esfera {}
- data Plano = Plano {}
- data Triangulo = Triangulo {}
- data Cilindro = Cilindro Point3D Direction Float RGB (Float, Float, Float) Float Int
- data Cono = Cono {}
- data Rectangulo = Rectangulo {}
- data AABB = AABB {}
- data BVH = BVH {}
- data TrianglePos = TrianglePos {}
- data Shape
- data Obj = Obj {}
- getUV :: Shape -> Point3D -> (Float, Float)
- calculateBoundingBox :: [Triangulo] -> AABB
- splitTriangles :: Int -> [Triangulo] -> [[Triangulo]]
- buildBVH :: Int -> [Triangulo] -> BVH
- rayIntersectsAABB :: Ray -> AABB -> Bool
- closestIntersection :: Ray -> [Triangulo] -> (Float, Triangulo)
- addFig :: Shape -> [Shape] -> [Shape]
- addFigMult :: [Shape] -> [Shape] -> [Shape]
- encenderShapes :: [Shape] -> [Shape]
- encenderShape :: Shape -> Shape
- parametricShapeCollision :: Set Shape -> [Ray] -> [Set Obj]
- oneCollision :: Shape -> Ray -> Obj
- getShapeID :: Shape -> Int
- ray1TriangleIntersection :: Point3D -> Direction -> Point3D -> Point3D -> Point3D -> Maybe (Float, Point3D)
- triangleToTriangulo :: RGB -> (Float, Float, Float) -> Float -> Int -> ([Point3D], TrianglePos, [Point2D], TrianglePos) -> Triangulo
- convertToCustomFormat :: RGB -> (Float, Float, Float) -> Float -> Int -> ([Point3D], [TrianglePos], [Point2D], [TrianglePos]) -> [Triangulo]
- parseTriangle :: String -> Maybe [TrianglePos]
- parsePoint3D :: String -> Maybe Point3D
- parsePoint2D :: String -> Maybe Point2D
- loadObjFile :: FilePath -> IO ([Point2D], [Point3D], [[TrianglePos]])
- vertexToPoint3D :: Point3D -> Point3D
- findMinPositive :: Float -> Float -> Float
Documentation
Tipo de dato básico, se usa para representar las coordenadas U V de texturas.
Tipo compuesto, este representa la base de la camara y su posición tridimensional sobre dicha base.
Tipo compuesto, representa una esfera, tiene un punto central, la longitud del radio, el color, las propiedades del material y su indice de reflexión.
Constructors
Esfera | |
Tipo compuesto, representa un plano, tiene un punto central, la dirección normal al plano, el color, las propiedades del material y su indice de reflexión.
Constructors
Plano | |
Tipo compuesto, representa un triángulo, tiene sus 3 vertices, el color, las propiedades del material y su indice de reflexión.
Constructors
Triangulo | |
Tipo compuesto, representa un cilindro, tiene un punto central, la longitud del radio, el color, las propiedades del material y su indice de reflexión.
Tipo compuesto, representa un cono, tiene un punto central, la longitud del radio, el color, las propiedades del material y su indice de reflexión.
Constructors
Cono | |
data Rectangulo Source #
Tipo compuesto, representa un rectángulo, tiene un punto central, las direcciones normal y tangente, longitud y anchura, el color, las propiedades del material y su indice de reflexión.
Constructors
Rectangulo | |
Instances
Show Rectangulo Source # | |
Defined in Figuras Methods showsPrec :: Int -> Rectangulo -> ShowS show :: Rectangulo -> String showList :: [Rectangulo] -> ShowS |
Tipo compuesto, representa una hitbox 3D de forma rectangular, tiene dos puntos que representan los vertices de cada extremo.
Tipo compuesto, representa una BVH, es un tipo especial dado que es recursivo, contiene un AABB que actua como Hitbox, subinstancias de si mismo y una lista de triángulos.
data TrianglePos Source #
Tipo auxiliar, representa la posición de un triángulo, solo tiene sus 3 vértices.
Constructors
TrianglePos | |
Instances
Show TrianglePos Source # | |
Defined in Figuras Methods showsPrec :: Int -> TrianglePos -> ShowS show :: TrianglePos -> String showList :: [TrianglePos] -> ShowS |
Tipo especial, sería lo equivalente a una clase virtual, esta nos permite interactuar de forma transparente con su contenido sin necesidad de saber la clase concreta que contiene.
Constructors
Sphere Esfera | |
Plane Plano | |
Triangle Triangulo | |
Cylinder Cilindro | |
Rectangle Rectangulo | |
Acelerator BVH | |
Cone Cono | |
Null |
Tipo compuesto, contiene todas las propiedades obtenidas al colisionar un rayo con un objeto, la distancia del impacto, el color, la dirección incidente, el punto de colisión, la dirección normal de ese punto para el objeto y las propiedades internas del mismo(coeficientes).
Constructors
Obj | |
getUV :: Shape -> Point3D -> (Float, Float) Source #
Función auxiliar, para dada una SHAPE y un punto3d de la misma, devolver en coordenadas UV la posición de dicho punto.(Se emplea para las texturas)
calculateBoundingBox :: [Triangulo] -> AABB Source #
Función auxiliar, dada una lista de triángulos, calcula su hitbox y la devuelve.
splitTriangles :: Int -> [Triangulo] -> [[Triangulo]] Source #
Función auxiliar, dado un entero y una lista de triángulos, genera una lista de listas de triángulos, cada sublista tiene tantos triángulos como indique el entero.
buildBVH :: Int -> [Triangulo] -> BVH Source #
Función básica, dada una lista de triángulos genera un BVH a partir de esta.
rayIntersectsAABB :: Ray -> AABB -> Bool Source #
Función auxiliar, dado un rayo y una Hitbox comprueba si estos colisionan o no, devuelve un booleano para indicarlo.
closestIntersection :: Ray -> [Triangulo] -> (Float, Triangulo) Source #
Función auxiliar, dado un rayo y una lista de triángulos, intersecta este con todos y devuelve la intersección más cercana.
addFig :: Shape -> [Shape] -> [Shape] Source #
Función auxiliar, dada una figura individual, añade esta a una lista de figuras.
encenderShapes :: [Shape] -> [Shape] Source #
Función básica, convierte las figuras en luces de área.
encenderShape :: Shape -> Shape Source #
Función auxiliar, convierte una figura a luz de área.
parametricShapeCollision :: Set Shape -> [Ray] -> [Set Obj] Source #
Función básica, dada una figuro y una lista de rayos, devuelve la lista de colisiones de cada uno de los rayos con la figura.
oneCollision :: Shape -> Ray -> Obj Source #
Función auxiliar, dada una figura y un rayo traza la colisión.
getShapeID :: Shape -> Int Source #
Función auxiliar, devuelve el id interno de las figuras.
ray1TriangleIntersection :: Point3D -> Direction -> Point3D -> Point3D -> Point3D -> Maybe (Float, Point3D) Source #
Función auxiliar, dado un rayo(descompuesto) y un triángulo(descompuesto) cálcula la intersección.
triangleToTriangulo :: RGB -> (Float, Float, Float) -> Float -> Int -> ([Point3D], TrianglePos, [Point2D], TrianglePos) -> Triangulo Source #
Función auxiliar, convierte de triangle a triangulo.
convertToCustomFormat :: RGB -> (Float, Float, Float) -> Float -> Int -> ([Point3D], [TrianglePos], [Point2D], [TrianglePos]) -> [Triangulo] Source #
Función básica, convierte los tríangulos y vértices cargados al formato deseado(color,propiedades).
parseTriangle :: String -> Maybe [TrianglePos] Source #
Función auxiliar, dada una línea del .obj parsea el triángulo que esta contiene.
parsePoint3D :: String -> Maybe Point3D Source #
Función auxiliar, parsea una línea del .obj a punto 3D.
parsePoint2D :: String -> Maybe Point2D Source #
Función auxiliar, parsea una línea del .obj a punto 3D.
loadObjFile :: FilePath -> IO ([Point2D], [Point3D], [[TrianglePos]]) Source #
Función básica, extrae los vértices y triángulos de un fichero .obj.
vertexToPoint3D :: Point3D -> Point3D Source #
Función auxiliar, convierte de punto3D a punto3D (convierte contenido a floats).
findMinPositive :: Float -> Float -> Float Source #
Función auxiliar, devuelve el mínimo(este debe ser positivo).