# Path: Software/Raytracer/universe.py
# class Universe:
#     def __init__(self, spin=0.999, innerDiskRadius=9, outerDiskRadius=20):
#     def update(self):
#     def computeTrappedOrbits(self):
#     def _b0(self, r):
#     def computeBConstants(self):
#     def computeHorizonRadius(self):
#     def spin(self):
#     def spin(self, value):


from .universe import universe
from .Utils.logging_utils import LoggingClass
from numpy import pi as Pi
from matplotlib import pyplot as plt
from matplotlib.patches import Circle
from pycuda import driver, compiler, gpuarray
import os
import numpy as np
import mpl_toolkits.mplot3d.art3d as art3d
import jinja2
import pycuda.autoinit



# When importing this module we are initializing the device.
# Now, we can call the device and send information using
# the apropiate tools in the pycuda module.

__logmodule__ = True

# Set directories for correct handling of paths
selfDir = os.path.dirname(os.path.abspath(__file__))
softwareDir = os.path.abspath(os.path.join(selfDir, os.pardir))


def spher2cart(points):
    # Retrieve the actual data
    r = points[:, 0]
    theta = points[:, 1]
    phi = points[:, 2]

    cosT = np.cos(theta)
    sinT = np.sin(theta)
    cosP = np.cos(phi)

# Path: Software/Raytracer/universe.py
# class Universe:
#     def __init__(self, spin=0.999, innerDiskRadius=9, outerDiskRadius=20):
#     def update(self):
#     def computeTrappedOrbits(self):
#     def _b0(self, r):
#     def computeBConstants(self):
#     def computeHorizonRadius(self):
#     def spin(self):
#     def spin(self, value):


# Path: Software/Raytracer/raytracer.py
from .universe import universe
from .Utils.logging_utils import LoggingClass
from numpy import pi as Pi
from matplotlib import pyplot as plt
from matplotlib.patches import Circle
from pycuda import driver, compiler, gpuarray
import os
import numpy as np
import mpl_toolkits.mplot3d.art3d as art3d
import jinja2
import pycuda.autoinit




# When importing this module we are initializing the device.
# Now, we can call the device and send information using
# the apropiate tools in the pycuda module.

__logmodule__ = True

# Set directories for correct handling of paths
selfDir = os.path.dirname(os.path.abspath(__file__))
softwareDir = os.path.abspath(os.path.join(selfDir, os.pardir))


def spher2cart(points):
    # Retrieve the actual data
    r = points[:, 0]
    theta = points[:, 1]
    phi = points[:, 2]

    cosT = np.cos(theta)
    sinT = np.sin(theta)
    cosP = np.cos(phi)

    sinP = np.sin(phi)