This project aims to provide an interactive and visually compelling representation of various quantum phenomena. The primary goal of this visualization project is to provide an accessible and intuitive way for users to engage with and comprehend complex quantum principles rather than to mimic the true characteristics of quantum particles.
- git (https://git-scm.com/downloads)
- cmake (https://cmake.org/download)
- make (http://ftp.gnu.org/gnu/make)
- g++ (https://gcc.gnu.org) you can use another compiler if you want
- glfw (https://www.glfw.org/)
- glad (https://glad.dav1d.de/)
- glm (https://glm.g-truc.net/)
- imgui (https://github.com/ocornut/imgui)
- stb (https://github.com/nothings/stb/) used stb_image for icon
> git clone https://github.com/ahmedkerouat/quantum-effects.git
> cd quantum-effects
> mkdir build
> cd build
> cmake ..
> make
> ./quantum-effects
The project consists of multiple header files, each providing specific functionalities. Here's an overview of the key components:
-
quantumRepresentation.h : The header file offers OpenGL functions for rendering Quantum Effects. These functions utilize shader programs, VAOs, sphere indices, time, and colors to achieve animated visual outcomes.
-
sphere.h: This header file contains the Sphere class, which is used for rendering paritcles. It allows customization of the number of vertices and triangles that make up a sphere.
-
grid.h : This header file contains the Grid class, which is used for rendering the grid. It returns vertices and indices based width, height, rows, and columns.
-
shader.h : The shader.h file provides functions for loading and compiling OpenGL shaders and creating shader programs. For instance, it includes a utility function, loadShaderSource, to load shader source code from external files.
-
shader_config.h: This header includes the configuration data for fragment & vertex shaders.
-
camera.h: The Camera class defined in this header is responsible for controlling the view and perspective within the simulations. It manages user input for camera movements.
You can control various aspects of the simulations through the user interface.
-
Render Functions : Choose between rendering a simple particle, or quantum representations of wave-particle duality, tunneling, entaglement, superposition, uncertainty, and spin.
-
Grid Controls : Adjust grid visibility, color, rotation angle, size, and translation.
-
Function specific Controls : Adjust the diverse parameters for each phenomenon including but not limited to colors and animation durations.
Within the simulations, you can control diverse camera parameters :
-
Right Mouse Button : Controls the camera's rotation.
-
Left Mouse Button : Controls the camera's position.
-
Scroll: Zoom in and out of the simulation.
-
Space button : Resets camera position to default (you could also use the reset camera button in the menu).
On the menu Ctrl + Lmb to change precisely a simulation parameter using the slider
Your contributions are greatly appreciated! If you have any suggestions to enhance the project, please feel free to create a pull request. Alternatively, you can open an issue to discuss your ideas. Don't forget to give a star ⭐️ – it's like a virtual high-five! Thank you for your valuable input!
Project is licensed under the MIT LICENSE