diff --git a/README.org b/README.org index c22d38b..88ced58 100644 --- a/README.org +++ b/README.org @@ -2,52 +2,45 @@ #+AUTHOR: Charles Kralapp #+OPTIONS: toc:nil num:nil -This project combines a raytracer and an N-body solar system simulation to learn modern C++ (C++03โ€“C++23) through practical implementation. +This project combines a raytracing in one weekend style raytracer and an N-body solar system simulation to learn modern C++ (C++03โ€“C++23) through practical implementation. * โœ… Project Goals -- [ ] Simulate solar system using an N-body gravitational algorithm. -- [ ] Implement a raytracer for rendering bodies and backgrounds. +- [X] Simulate solar system using an N-body gravitational algorithm. +- [X] Implement a raytracer for rendering bodies and backgrounds. - [ ] Learn and demonstrate features from every major C++ standard. -- [ ] Use open-source tooling: GNU Emacs, Org-mode, GCC, GNU Make. - -* ๐Ÿš€ Toolchain -- Editor: Emacs + Org Mode -- Compiler: GCC/g++ -- Build System: GNU Make (no CMake) -- Version Control: Git (optional but recommended) * ๐Ÿ“š C++ Learning Checklist ** C++03 (Baseline) -- [ ] Classes & Constructors -- [ ] Operator Overloading (`+`, `*`, `[]`) -- [ ] Manual memory management (`new` / `delete`) -- [ ] STL containers: `std::vector`, `std::map` +- [X] Classes & Constructors +- [X] Operator Overloading (`+`, `*`, `[]`) +- [X] Manual memory management (`new` / `delete`) +- [X] STL containers: `std::vector`, `std::map` - [ ] Function overloading -- [ ] Templates (vector math, utility classes) -- [ ] Pointers, references, and const correctness +- [X] Templates (vector math, utility classes) +- [X] Pointers, references, and const correctness - [ ] Namespaces -- [ ] RAII pattern with destructors -- [ ] `std::string`, `std::stringstream` +- [X] RAII pattern with destructors +- [X] `std::string`, `std::stringstream` ** C++11 (Modern C++ begins) -- [ ] `auto` type deduction -- [ ] Range-based for loops +- [X] `auto` type deduction +- [X] Range-based for loops - [ ] Lambda expressions -- [ ] `nullptr` +- [X] `nullptr` - [ ] `enum class` -- [ ] Smart pointers: `std::unique_ptr`, `std::shared_ptr` +- [X] Smart pointers: `std::unique_ptr`, `std::shared_ptr` - [ ] `override`, `final` specifiers - [ ] `move` semantics and rvalue references -- [ ] `std::array`, `std::tuple` -- [ ] Thread support: `std::thread` +- [X] `std::array`, `std::tuple` +- [X] Thread support: `std::thread` ** C++14 (Polish & convenience) - [ ] Generic lambdas (`auto` in lambda parameters) - [ ] `decltype(auto)` and improved return type inference - [ ] `std::make_unique` - [ ] Binary literals and digit separators (`0b1010`, `1'000'000`) -- [ ] Relaxed constexpr functions +- [X] Relaxed constexpr functions - [ ] Using `auto` in lambda captures ** C++17 (Simpler and more expressive) @@ -70,7 +63,7 @@ This project combines a raytracer and an N-body solar system simulation to learn - [ ] Expanded constexpr support (e.g., STL algorithms) ** C++23 (Final polish) -- [ ] `std::expected` (like Rust's Result) +- [X] `std::expected` (like Rust's Result) - [ ] `std::mdspan` for multidimensional array views - [ ] `explicit` lambdas - [ ] More constexpr in the standard library @@ -102,22 +95,3 @@ This project combines a raytracer and an N-body solar system simulation to learn - [ ] Use `std::expected` for config file errors or simulation errors (C++23) - [ ] Add diagnostics/metrics via coroutines or logging views - [ ] Final cleanup using `consteval`, `mdspan`, or advanced features - -* ๐Ÿงช Testing Ideas -- [ ] Unit tests for vector math and physics (can use C++11 `assert`) -- [ ] Visual verification of orbits and raytraced scene -- [ ] Compare numerical stability over long time steps - -* ๐Ÿ“‚ Directory Layout (suggested) -#+BEGIN_SRC -project-root/ -โ”œโ”€โ”€ Makefile -โ”œโ”€โ”€ README.org (this file) -โ””โ”€โ”€โ”€ src/ - โ”œโ”€โ”€ main.cpp - โ”œโ”€โ”€ vec3.cpp / .h - โ”œโ”€โ”€ body.cpp / .h - โ””โ”€โ”€โ”€ raytracer/ - โ””โ”€โ”€ ray.cpp / .h ... -#+END_SRC -