# Oranges's Math Library (omath) ## Overview Oranges's Math Library (omath) is a comprehensive, open-source library aimed at providing efficient, reliable, and versatile mathematical functions and algorithms. Developed primarily in C++, this library is designed to cater to a wide range of mathematical operations essential in scientific computing, engineering, and academic research. ## Features - **Efficiency**: Optimized for performance, ensuring quick computations. - **Versatility**: Includes a wide array of mathematical functions and algorithms. - **Ease of Use**: Simplified interface for convenient integration into various projects. ## Getting Started ### Prerequisites - C++ Compiler - CMake (for building the project) ### Installation 1. Clone the repository: ``` git clone https://github.com/orange-cpp/omath.git ``` 2. Navigate to the project directory: ``` cd omath ``` 3. Build the project using CMake: ``` cmake --preset x64-release -S . cmake --build cmake-build/build/x64-release --target server -j 6 ``` ## Usage Simple world to screen function ```c++ std::optional WorldToScreen(omath::Vector3 worldPosition, float width, float height) { auto projected = (GetViewProjectionMatrix() * worldPosition).transpose(); projected /= projected.at(0, 3); const auto out = projected * omath::matrix::to_screen_matrix(width, height); if (out.at(0, 2) <= 0.f) return std::nullopt; auto final = omath::Vector3(out.at(0, 0), out.at(0, 1), out.at(0, 3)); return {final}; } ``` ## Contributing Contributions to `omath` are welcome! Please read `CONTRIBUTING.md` for details on our code of conduct and the process for submitting pull requests. ## License This project is licensed under the GPL V3 - see the `LICENSE` file for details. ## Acknowledgments - Orange | [Telegram](https://t.me/orange_cpp)