aboutsummaryrefslogtreecommitdiff
path: root/unit_circle.cc
diff options
context:
space:
mode:
Diffstat (limited to 'unit_circle.cc')
-rw-r--r--unit_circle.cc39
1 files changed, 39 insertions, 0 deletions
diff --git a/unit_circle.cc b/unit_circle.cc
new file mode 100644
index 0000000..283fb53
--- /dev/null
+++ b/unit_circle.cc
@@ -0,0 +1,39 @@
+#include <imgen.h>
+
+#include <cmath>
+#include <vector>
+#include <algorithm>
+
+int p_norm(double p, int x, int y) {
+ return static_cast<int>(std::nearbyint(
+ std::pow(
+ std::pow(std::abs(x), p) + std::pow(std::abs(y), p),
+ 1.0 / p
+ )
+ ));
+}
+
+void generate_p_unit_circle(
+ const double lower,
+ const double upper,
+ const double epsilon
+) {
+ for ( double p = lower; p < upper + epsilon; p = p + epsilon ) {
+ imgen::write_ppm(
+ "unit_circle_" + std::to_string(p) + ".ppm",
+ 128,
+ 128,
+ [p](std::ptrdiff_t x, std::ptrdiff_t y) -> imgen::color {
+ if ( p_norm(p, x, y) <= 32 ) {
+ return imgen::black();
+ } else {
+ return imgen::white();
+ }
+ }
+ );
+ }
+}
+
+int main(int, char*[]) {
+ generate_p_unit_circle(1.0, 3.0, 0.05);
+}