From ab2182d5e9c918782c7a39c3546af7b570067895 Mon Sep 17 00:00:00 2001
From: Yoel <s73017@beuth-hochschule.de>
Date: Tue, 6 Oct 2020 17:26:39 +0200
Subject: [PATCH] New files Random, which include the rand-stuff prev. in
 material

---
 RayTracer/tools/Random.cpp | 20 ++++++++++++++++++++
 RayTracer/tools/Random.h   | 15 +++++++++++++++
 2 files changed, 35 insertions(+)
 create mode 100644 RayTracer/tools/Random.cpp
 create mode 100644 RayTracer/tools/Random.h

diff --git a/RayTracer/tools/Random.cpp b/RayTracer/tools/Random.cpp
new file mode 100644
index 0000000..6e68585
--- /dev/null
+++ b/RayTracer/tools/Random.cpp
@@ -0,0 +1,20 @@
+#include "Random.h"
+
+namespace util {
+
+Vec3 rand_vec3() {
+	return Vec3(dis(gen), dis(gen), dis(gen));
+}
+
+bool in_circle(const Vec3& v) {
+	return v.length() <= 1;
+}
+
+Vec3 rand_vec3_in_circle(float r) {
+	Vec3 result;
+	do {
+		result = rand_vec3();
+	} while (!in_circle(result));
+	return result * r;
+}
+}  // namespace util
\ No newline at end of file
diff --git a/RayTracer/tools/Random.h b/RayTracer/tools/Random.h
new file mode 100644
index 0000000..dfc8b4f
--- /dev/null
+++ b/RayTracer/tools/Random.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <random>
+
+#include "Vec3.h"
+
+namespace util {
+
+static std::random_device rd;
+static std::mt19937 gen(rd());
+static std::uniform_real_distribution<> dis(-1.0, 1.0);
+Vec3 rand_vec3();
+bool in_circle(const Vec3& v);
+Vec3 rand_vec3_in_circle(float r);
+}  // namespace util
-- 
GitLab