update docs
This commit is contained in:
parent
138db9bda3
commit
4198468b4a
64
README.org
64
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<T, E>)
|
||||
- [X] `std::expected` (like Rust's Result<T, E>)
|
||||
- [ ] `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
|
||||
|
||||
|
|
Loading…
Reference in New Issue