Files
manigraph/README.md
2024-12-04 10:32:38 -06:00

59 lines
2.1 KiB
Markdown

# Manigraph
Manigraph is a cutting-edge tool for multidimentional surface visualization,
capable of handling over a hundred dimensions. It allows users to interactively
explore each dimension in an intuitive and dynamic way.
Import your .klein files, which represents multidimentional surface.
# Building
Manigraph is written in C99, and uses OpenGL 2.0 for the rendering. So you just
need a C compiler to build this project.
## Source code
```
git clone https://gitea.axiolutions.top/software/manigraph.git
cd manigraph
git submodule update --init --recursive
```
## Dependecies
You may need system specific dependecies to build *Manigraph*.
[Reference](https://www.glfw.org/docs/3.3/compile.html#compile_deps)
### Linux
- `x11`: libXcursor-devel libXi-devel libXinerama-devel libXrandr-devel
- `wayland`: libwayland-dev libxkbcommon-dev wayland-protocols
## Commands
A C compiler is needed for building *Manigraph*. and any of those commands
```
make windows
./compile.bat
make linux-x11
make linux-wayland
make cocoa
make CC=emcc wasm
```
# Design
Manigraph is a program designed with sustainability in mind. It is built to be
portable, resource-efficient, and easy to maintain and scale. The program
follows a Data-Oriented Programming (DOP) paradigm, where each file is
responsible for a specific data type and manages its own dependencies. Each
function is named after the file it resides in, ensuring a clear organization
and structure.
The independence of data types allows for efficient scaling and maintenance.
The main file is a special case in this design: it is responsible for combining
all the data types in a comprehensive manner, actng as the workflow of the program.
# Contributing
Before commiting use `clang-format`, for coding style consistency. Your
contribution must be whitin the design principles and the concept of Manigraph.
The following diagram illustrates the relationships between files, showing how
they are connected through dependencies. It also highlights the scenarios where
files are not independent of one another,
![File layout](doc/file_layout.svg)