Safe HaskellSafe-Inferred

Figuras

Synopsis

Documentation

data Point2D Source #

Tipo de dato básico, se usa para representar las coordenadas U V de texturas.

Constructors

Point2D 

Fields

  • uP :: Float
     
  • vP :: Float
     

Instances

Instances details
Show Point2D Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Point2D -> ShowS

show :: Point2D -> String

showList :: [Point2D] -> ShowS

data Camara Source #

Tipo compuesto, este representa la base de la camara y su posición tridimensional sobre dicha base.

Constructors

Camara Point3D Base 

data Esfera Source #

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 

Fields

Instances

Instances details
Show Esfera Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Esfera -> ShowS

show :: Esfera -> String

showList :: [Esfera] -> ShowS

data Plano Source #

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 

Fields

Instances

Instances details
Show Plano Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Plano -> ShowS

show :: Plano -> String

showList :: [Plano] -> ShowS

data Triangulo Source #

Tipo compuesto, representa un triángulo, tiene sus 3 vertices, el color, las propiedades del material y su indice de reflexión.

Constructors

Triangulo 

Fields

Instances

Instances details
Show Triangulo Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Triangulo -> ShowS

show :: Triangulo -> String

showList :: [Triangulo] -> ShowS

data Cilindro Source #

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.

Constructors

Cilindro Point3D Direction Float RGB (Float, Float, Float) Float Int 

Instances

Instances details
Show Cilindro Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Cilindro -> ShowS

show :: Cilindro -> String

showList :: [Cilindro] -> ShowS

data Cono Source #

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 

Fields

Instances

Instances details
Show Cono Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Cono -> ShowS

show :: Cono -> String

showList :: [Cono] -> ShowS

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 

Fields

Instances

Instances details
Show Rectangulo Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Rectangulo -> ShowS

show :: Rectangulo -> String

showList :: [Rectangulo] -> ShowS

data AABB Source #

Tipo compuesto, representa una hitbox 3D de forma rectangular, tiene dos puntos que representan los vertices de cada extremo.

Constructors

AABB 

Fields

Instances

Instances details
Show AABB Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> AABB -> ShowS

show :: AABB -> String

showList :: [AABB] -> ShowS

data BVH Source #

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.

Constructors

BVH 

Fields

Instances

Instances details
Show BVH Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> BVH -> ShowS

show :: BVH -> String

showList :: [BVH] -> ShowS

data TrianglePos Source #

Tipo auxiliar, representa la posición de un triángulo, solo tiene sus 3 vértices.

Constructors

TrianglePos 

Fields

  • v1 :: Int
     
  • v2 :: Int
     
  • v3 :: Int
     

Instances

Instances details
Show TrianglePos Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> TrianglePos -> ShowS

show :: TrianglePos -> String

showList :: [TrianglePos] -> ShowS

data Shape Source #

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.

Instances

Instances details
Show Shape Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Shape -> ShowS

show :: Shape -> String

showList :: [Shape] -> ShowS

Eq Shape Source # 
Instance details

Defined in Figuras

Methods

(==) :: Shape -> Shape -> Bool

(/=) :: Shape -> Shape -> Bool

Ord Shape Source # 
Instance details

Defined in Figuras

Methods

compare :: Shape -> Shape -> Ordering

(<) :: Shape -> Shape -> Bool

(<=) :: Shape -> Shape -> Bool

(>) :: Shape -> Shape -> Bool

(>=) :: Shape -> Shape -> Bool

max :: Shape -> Shape -> Shape

min :: Shape -> Shape -> Shape

data Obj Source #

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 

Fields

Instances

Instances details
Show Obj Source # 
Instance details

Defined in Figuras

Methods

showsPrec :: Int -> Obj -> ShowS

show :: Obj -> String

showList :: [Obj] -> ShowS

Eq Obj Source # 
Instance details

Defined in Figuras

Methods

(==) :: Obj -> Obj -> Bool

(/=) :: Obj -> Obj -> Bool

Ord Obj Source # 
Instance details

Defined in Figuras

Methods

compare :: Obj -> Obj -> Ordering

(<) :: Obj -> Obj -> Bool

(<=) :: Obj -> Obj -> Bool

(>) :: Obj -> Obj -> Bool

(>=) :: Obj -> Obj -> Bool

max :: Obj -> Obj -> Obj

min :: Obj -> Obj -> 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.

addFigMult :: [Shape] -> [Shape] -> [Shape] Source #

Función básica, junta 2 listas 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).