Safe HaskellSafe-Inferred

Elem3D

Contents

Synopsis

Documentation

data Point3D Source #

Tipo básico empleado por todo el código, este representa un punto en un espacio tridimensional, en su interior contiene un punto en el eje X otro en el Y e otro en el Z.

Constructors

Point3D 

Fields

  • xP :: Float
     
  • yP :: Float
     
  • zP :: Float
     

Instances

Instances details
Show Point3D Source # 
Instance details

Defined in Elem3D

Methods

showsPrec :: Int -> Point3D -> ShowS

show :: Point3D -> String

showList :: [Point3D] -> ShowS

Binary Point3D Source # 
Instance details

Defined in Elem3D

Methods

put :: Point3D -> Put

get :: Get Point3D

putList :: [Point3D] -> Put

Eq Point3D Source # 
Instance details

Defined in Elem3D

Methods

(==) :: Point3D -> Point3D -> Bool

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

data Direction Source #

Tipo básico, representa una dirección, de la misma forma que el punto contiene 3 valores en su interior, uno para cada eje.

Constructors

Direction 

Fields

  • xD :: Float
     
  • yD :: Float
     
  • zD :: Float
     

Instances

Instances details
Num Direction Source # 
Instance details

Defined in Elem3D

Show Direction Source # 
Instance details

Defined in Elem3D

Methods

showsPrec :: Int -> Direction -> ShowS

show :: Direction -> String

showList :: [Direction] -> ShowS

Binary Direction Source # 
Instance details

Defined in Elem3D

Methods

put :: Direction -> Put

get :: Get Direction

putList :: [Direction] -> Put

Eq Direction Source # 
Instance details

Defined in Elem3D

Methods

(==) :: Direction -> Direction -> Bool

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

data Ray Source #

Tipo compuesto, representa un tayo, este se forma de su punto de origen y la dirección en la que este se desplaza.

Constructors

Ray 

Fields

Instances

Instances details
Show Ray Source # 
Instance details

Defined in Elem3D

Methods

showsPrec :: Int -> Ray -> ShowS

show :: Ray -> String

showList :: [Ray] -> ShowS

data Base Source #

Tipo compuesto, representa la base de un espacio, se conforma por 3 direcciones.

Constructors

Base 

Fields

Instances

Instances details
Show Base Source # 
Instance details

Defined in Elem3D

Methods

showsPrec :: Int -> Base -> ShowS

show :: Base -> String

showList :: [Base] -> ShowS

data RGB Source #

Tipo básico, representa la tripleta de color RGB, la conforman por tres valores float(uno para cada canal de color) que pertenecen al rango [0,1]

Constructors

RGB 

Fields

Instances

Instances details
Num RGB Source # 
Instance details

Defined in Elem3D

Methods

(+) :: RGB -> RGB -> RGB

(-) :: RGB -> RGB -> RGB

(*) :: RGB -> RGB -> RGB

negate :: RGB -> RGB

abs :: RGB -> RGB

signum :: RGB -> RGB

fromInteger :: Integer -> RGB

Show RGB Source # 
Instance details

Defined in Elem3D

Methods

showsPrec :: Int -> RGB -> ShowS

show :: RGB -> String

showList :: [RGB] -> ShowS

Binary RGB Source # 
Instance details

Defined in Elem3D

Methods

put :: RGB -> Put

get :: Get RGB

putList :: [RGB] -> Put

Eq RGB Source # 
Instance details

Defined in Elem3D

Methods

(==) :: RGB -> RGB -> Bool

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

data Luz Source #

Tipo compuesto, representa una fuente de luz, esta se encuentra en un punto del espacio por lo que tiene un punto3D, emite una cierta tonalidad de luz por lo que tiene un RGB y emite una cierta intensidad de luz por lo que tiene el Float.

Constructors

Luz 

Fields

data Foton Source #

Tipo compuesto, representa una partícula de fotón, esta tiene un punto3D, una intensidad(float), una tonalidad(RGB), por último tiene un id(Entero) para identificarlo.

Constructors

Foton 

Fields

Instances

Instances details
Show Foton Source # 
Instance details

Defined in Elem3D

Methods

showsPrec :: Int -> Foton -> ShowS

show :: Foton -> String

showList :: [Foton] -> ShowS

Binary Foton Source # 
Instance details

Defined in Elem3D

Methods

put :: Foton -> Put

get :: Get Foton

putList :: [Foton] -> Put

roundTo :: Int -> Point3D -> Point3D Source #

Función auxiliar, redondea los valores de las posiciones de un punto hasta n dígitos.

radToDeg :: Float -> Float Source #

Función auxiliar, convierte de radianes a grados.

degToRad :: Float -> Float Source #

Función auxiliar, convierte de grados a radianes.

angleBetween :: Direction -> Direction -> Float Source #

Función auxiliar, calcula el ángulo que forman 2 direcciones dadas.

rotatePoint :: Char -> Float -> Point3D -> Point3D Source #

Función auxiliar, rota un punto en uno de los ejes X Y Z, emplea radianes como unidad de rotación.

rotatePointt :: Char -> Float -> Point3D -> Point3D Source #

Función básica, rota un punto en uno de los ejes X Y Z, emplea grados como unidad de rotación.

rotatePoint' :: Char -> Float -> Point3D -> Point3D Source #

Función de rotación inversa, deshace la rotación de un punto en uno de los ejes X Y Z, emplea radianes como unidad de rotación.

movePoint :: Direction -> Point3D -> Point3D Source #

Función básica, aplica una dirección a un punto para desplazarlo en el espacio.

movePoint' :: Direction -> Point3D -> Point3D Source #

Función auxiliar, esta revierte el desplazamiento de una dirección a un punto para desplazarlo en el espacio.

distPoint :: Point3D -> Point3D -> Float Source #

Función básica, cálcula la distancia real entre dos puntos en el espacio.

(#) :: Point3D -> Point3D -> Point3D Source #

Función básica, cálcula la dirección del primer punto al segundo.

addPoints :: Point3D -> Point3D -> Point3D Source #

Función auxiliar, suma de puntos.

(#<) :: Point3D -> Point3D -> Direction Source #

Función básica, cálcula la dirección del primer punto al segundo.

aproxPoint :: Point3D -> Point3D -> Bool Source #

Función básica, dados dos puntos en el espacio comprueba si estos son aproximadamente(0.1 de error de posición por eje) el mismo punto.

escalatePoint' :: Float -> Point3D -> Point3D Source #

Función auxiliar, revierte el proceso de escalar un punto.

escalatePoint :: Point3D -> Float -> Point3D Source #

Función básica, reescala las dimensiones de un punto en el espacio.

escalatePointt :: Float -> Point3D -> Point3D Source #

Función básica, reescala las dimensiones de un punto en el espacio.

pointDir :: Point3D -> Direction Source #

Función básica, dado un punto traza una dirección desde el origen(0,0,0) hasta dicho punto.

dirPoint :: Direction -> Point3D Source #

Función básica, dado una dirección, la traza desde el origen(0,0,0) y devuelve el punto donde acaba.

pointToPothon :: Point3D -> Foton Source #

Función auxiliar, dado un punto en el espacio, crea un foton "vacío" en este punto.

distFot :: Point3D -> Foton -> Float Source #

Función básica, dados un punto y un fotón calcula la distancia real entre ambos.

(.*) :: Direction -> Direction -> Float Source #

Función básica, calcula el producto escalar de dos direcciones.

escalateDir :: Float -> Direction -> Direction Source #

Función básica, reescala una dirección.

escalateDir' :: Float -> Direction -> Direction Source #

Función auxiliar, deshace el reescalado de una dirección.

modd :: Direction -> Float Source #

Función auxiliar, dada una dirección calcula su módulo.

normal :: Direction -> Direction Source #

Función auxiliar, dada una dirección la normaliza.

elevateRGBPoint :: Float -> RGB -> RGB Source #

Función auxiliar, calcula el valor de un RGB elevado a 1/x.

(./) :: RGB -> RGB -> RGB Source #

Función auxiliar, dados dos RGB, calcula su división.

modRGB :: RGB -> Float -> RGB Source #

Función auxiliar, dado un RGB y un valor, multiplica el RGB por este.

divRGB :: RGB -> Float -> RGB Source #

Función auxiliar, dado un RGB y un valor, divide el RGB por este.

scale :: RGB -> RGB Source #

Función auxiliar, dado un RGB(255) lo reescala al rango[0,1].

prodRGB :: RGB -> RGB -> Float -> RGB Source #

Función auxiliar, dados dos RGBs, los multiplica y reescala.

nanRGB :: RGB -> Bool Source #

Función auxiliar, comprueba la validez de los valores internos de un RGB.

rgbFloat :: RGB -> Float Source #

Función auxiliar, Convierte un RGB a un Float.

pointToVector :: Point3D -> [Float] Source #

Función auxiliar, convierte de punto a vector.

vectorToPoint :: [Float] -> Point3D Source #

Función auxiliar, convierte de vector a punto.

generateBase :: Direction -> Direction -> Direction -> Base Source #

Función auxiliar, dadas 3 direcciones genera la base correspondiente(no comprueba que sean perpendiculares).

basePointMatrix :: Base -> [[Float]] Source #

Función auxiliar, convierte de base a matriz.

cambioBase :: Point3D -> Base -> Point3D -> Point3D Source #

Función auxiliar, realiza un cambio de base de global a local para un punto, con un nuevo origen.

cambioBase' :: Point3D -> Base -> Point3D -> Point3D Source #

Función auxiliar, realiza un cambio de base de local a global para un punto, con el origen previo.

matrixVectorProduct :: [[Float]] -> [Float] -> [Float] Source #

Función auxiliar, calcula el producto de la matriz por el vector.

transposeMatrix :: [[a]] -> [[a]] Source #

Función auxiliar, realiza una transposición de matriz.

invertMatrix :: [[Float]] -> [[Float]] Source #

Función auxiliar, invierte una matriz.