Skip to content

Sekqies/complex-plotter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Complex Plotter Logo

C++20 OpenGL Platform License

A high-performance, real-time visualizer for complex functions $f: \mathbb{C} \to \mathbb{C}$ in 2D and 3D.

Polynomial Fractal 2D Animation
3D Tangent 3D Natural Logarithm 3D Animation

Table of Contents

Overview

Complex Plotter is a general-purpose, GPU-accelerated visualizer for complex functions. In standard mathematics, we plot functions on 2D axis ($y = f(x)$). However, complex functions map 2D inputs to 2D outputs, making their plot four-dimensional. This tool solves this problem using Domain Coloring (mapping complex nummbers to colors) and Height Maps (mapping output magnitude to height). This tool currently supports every elementary function, complex operators, derivatives, and more.

Requirements

Quick Start

Downloading & Running

A compiled binary for both windows and linux is available in the Releases section of this repository. They are both compiled for 64-bit architectures.

Note: In Linux, you have to allow the executable to run. To do so, run chmod +x complex_plotter

Building from Source

Before building, ensure you have the following installed:

  • CMake (Version 3.15 or higher)
  • C++ Compiler with C++20 support:
    • Windows: Visual Studio 2022 (MSVC) or MinGW64
    • Linux: GCC 10+ or Clang 10+
  • Graphics Driver compatible with OpenGL 3.3+

On Linux, you will need the X11 and GL development libraries:

sudo apt-get update
sudo apt-get install build-essential cmake libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev

1. Clone the repository

git clone https://github.com/Sekqies/complex-plotter.git
cd complex-plotter

2. Configure with CMake

mkdir build && cd build
cmake ..

3. Compile

  • Unix systems
    make
  • Windows:
    cmake --build . --config Release

Then, the executable will be available in the build/ directory.

Documentation

Since this project is math-intensive and quite complex, there are three main sources of documentation (all contained within the docs/ directory)

A guide for those not familiar with the mathematical foundation of complex analysis, and would like to understand the theory behind this tool. Uses graphical imagery and animations to better explain some introductory concepts.

An exhaustive list of features supported by this tool

An architectural explanation of how this tool works, internally.