2024-12-15 19:58:58 -06:00
2024-12-05 21:38:59 -06:00
2024-12-09 00:40:40 -06:00
2024-10-24 11:21:07 -06:00
2024-10-24 11:21:07 -06:00
2024-10-22 11:45:51 -06:00
2024-12-05 21:38:59 -06:00

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

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

Flow of Manigraph

Flow of Manigraph

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

Description
No description provided
Readme 859 KiB
Languages
C 98.8%
Makefile 1.1%