Safe Haskell | Safe-Inferred |
---|
Elem3D
Synopsis
- data Point3D = Point3D {}
- data Direction = Direction {}
- data Ray = Ray {}
- data Base = Base {}
- data RGB = RGB {}
- data Luz = Luz {}
- data Foton = Foton {}
- roundTo :: Int -> Point3D -> Point3D
- radToDeg :: Float -> Float
- degToRad :: Float -> Float
- angleBetween :: Direction -> Direction -> Float
- rotatePoint :: Char -> Float -> Point3D -> Point3D
- rotatePointt :: Char -> Float -> Point3D -> Point3D
- rotatePoint' :: Char -> Float -> Point3D -> Point3D
- movePoint :: Direction -> Point3D -> Point3D
- movePoint' :: Direction -> Point3D -> Point3D
- distPoint :: Point3D -> Point3D -> Float
- (#) :: Point3D -> Point3D -> Point3D
- addPoints :: Point3D -> Point3D -> Point3D
- (#<) :: Point3D -> Point3D -> Direction
- aproxPoint :: Point3D -> Point3D -> Bool
- escalatePoint' :: Float -> Point3D -> Point3D
- escalatePoint :: Point3D -> Float -> Point3D
- escalatePointt :: Float -> Point3D -> Point3D
- pointDir :: Point3D -> Direction
- dirPoint :: Direction -> Point3D
- pointToPothon :: Point3D -> Foton
- distFot :: Point3D -> Foton -> Float
- (.*) :: Direction -> Direction -> Float
- escalateDir :: Float -> Direction -> Direction
- escalateDir' :: Float -> Direction -> Direction
- modd :: Direction -> Float
- normal :: Direction -> Direction
- elevateRGBPoint :: Float -> RGB -> RGB
- (./) :: RGB -> RGB -> RGB
- modRGB :: RGB -> Float -> RGB
- divRGB :: RGB -> Float -> RGB
- scale :: RGB -> RGB
- prodRGB :: RGB -> RGB -> Float -> RGB
- nanRGB :: RGB -> Bool
- rgbFloat :: RGB -> Float
- pointToVector :: Point3D -> [Float]
- vectorToPoint :: [Float] -> Point3D
- generateBase :: Direction -> Direction -> Direction -> Base
- basePointMatrix :: Base -> [[Float]]
- cambioBase :: Point3D -> Base -> Point3D -> Point3D
- cambioBase' :: Point3D -> Base -> Point3D -> Point3D
- matrixVectorProduct :: [[Float]] -> [Float] -> [Float]
- transposeMatrix :: [[a]] -> [[a]]
- invertMatrix :: [[Float]] -> [[Float]]
Documentation
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.
Tipo básico, representa una dirección, de la misma forma que el punto contiene 3 valores en su interior, uno para cada eje.
Tipo compuesto, representa un tayo, este se forma de su punto de origen y la dirección en la que este se desplaza.
Tipo compuesto, representa la base de un espacio, se conforma por 3 direcciones.
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]
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.
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.
roundTo :: Int -> Point3D -> Point3D Source #
Función auxiliar, redondea los valores de las posiciones de un punto hasta n dígitos.
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.
(#<) :: 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.
elevateRGBPoint :: Float -> RGB -> RGB Source #
Función auxiliar, calcula el valor de un RGB elevado a 1/x.
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.
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.
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.