59 lines
2.1 KiB
Markdown
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,
|
|
|
|

|