Skip to content
Snippets Groups Projects
Verified Commit e984a1eb authored by Tóth Miklós Tibor's avatar Tóth Miklós Tibor :shrug:
Browse files

dodeka

parent 8c3d3d29
Branches
No related tags found
No related merge requests found
...@@ -3,6 +3,45 @@ ...@@ -3,6 +3,45 @@
//============================================================================================= //=============================================================================================
#include "framework.h" #include "framework.h"
vec3 objPoints[20] = {
vec3(0, 0.618, 1.618),
vec3(0, -0.618, 1.618),
vec3(0, -0.618, -1.618),
vec3(0, 0.618, -1.618),
vec3(1.618, 0, 0.618),
vec3(-1.618, 0, 0.618),
vec3(-1.618, 0, -0.618),
vec3(1.618, 0, -0.618),
vec3(0.618, 1.618, 0),
vec3(-0.618, 1.618, 0),
vec3(-0.618, -1.618, 0),
vec3(0.618, -1.618, 0),
vec3(1, 1, 1),
vec3(-1, 1, 1),
vec3(-1, -1, 1),
vec3(1, -1, 1),
vec3(1, -1, -1),
vec3(1, 1, -1),
vec3(-1, 1, -1),
vec3(-1, -1, -1)
};
int objIndex[12][5]{
{0, 1, 15, 4, 12},
{0, 12, 8, 9, 13},
{0, 13, 5, 14, 1},
{1, 14, 10, 11, 15},
{2, 3, 17, 7, 16},
{2, 16, 11, 10, 19},
{2, 19, 6, 18, 3},
{18, 9, 8, 17, 3},
{15, 11, 16, 7, 4},
{4, 7, 17, 8, 12},
{13, 9, 18, 6, 5},
{5, 6, 19, 10, 14}
};
struct Material { struct Material {
vec3 ka, kd, ks; vec3 ka, kd, ks;
float shininess; float shininess;
...@@ -58,16 +97,20 @@ struct Sphere : public Intersectable { ...@@ -58,16 +97,20 @@ struct Sphere : public Intersectable {
} }
}; };
struct Triangle : public Intersectable { struct Pentagon : public Intersectable {
vec3 r1; vec3 r1;
vec3 r2; vec3 r2;
vec3 r3; vec3 r3;
vec3 r4;
vec3 r5;
Material* material; Material* material;
Triangle(const vec3& _r1, const vec3& _r2, const vec3& _r3, Material* _material) { Pentagon(const vec3& _r1, const vec3& _r2, const vec3& _r3, const vec3& _r4, const vec3& _r5, Material* _material) {
r1 = _r1; r1 = _r1;
r2 = _r2; r2 = _r2;
r3 = _r3; r3 = _r3;
r4 = _r4;
r5 = _r5;
material = _material; material = _material;
} }
...@@ -85,7 +128,9 @@ struct Triangle : public Intersectable { ...@@ -85,7 +128,9 @@ struct Triangle : public Intersectable {
if ( if (
dot(cross(r2-r1, p-r1), n) > 0 && dot(cross(r2-r1, p-r1), n) > 0 &&
dot(cross(r3-r2, p-r2), n) > 0 && dot(cross(r3-r2, p-r2), n) > 0 &&
dot(cross(r1-r3, p-r3), n) > 0 dot(cross(r4-r3, p-r3), n) > 0 &&
dot(cross(r5-r4, p-r4), n) > 0 &&
dot(cross(r1-r5, p-r5), n) > 0
){ ){
hit.t = t; hit.t = t;
hit.normal = n; hit.normal = n;
...@@ -140,7 +185,7 @@ class Scene { ...@@ -140,7 +185,7 @@ class Scene {
vec3 La; vec3 La;
public: public:
void build() { void build() {
vec3 eye = vec3(0, 0, 2), vup = vec3(0, 1, 0), lookat = vec3(0, 0, 0); vec3 eye = vec3(10, 0, 20), vup = vec3(0, 1, 0), lookat = vec3(0, 0, 0);
float fov = 45 * M_PI / 180; float fov = 45 * M_PI / 180;
camera.set(eye, lookat, vup, fov); camera.set(eye, lookat, vup, fov);
...@@ -152,7 +197,18 @@ public: ...@@ -152,7 +197,18 @@ public:
Material * material = new Material(kd, ks, 50); Material * material = new Material(kd, ks, 50);
//objects.push_back(new Sphere(vec3(0, 0, 0), .25f, material)); //objects.push_back(new Sphere(vec3(0, 0, 0), .25f, material));
objects.push_back(new Triangle(vec3(0.1, 0, 0), vec3(0,0,.1), vec3(0, .1, .1), material)); //objects.push_back(new Pentagon(vec3(0.03, -.01, 0), vec3(0, .37, 0), vec3(-.47, .49, 0), vec3(-.73, .08, 0), vec3(-.414, -0.288, 0), material));
for (int i = 0; i < 12; i++) {
auto indexRow = objIndex[i];
auto p1 = objPoints[indexRow[0]];
auto p2 = objPoints[indexRow[1]];
auto p3 = objPoints[indexRow[2]];
auto p4 = objPoints[indexRow[3]];
auto p5 = objPoints[indexRow[4]];
objects.push_back(new Pentagon(p1, p2, p3, p4, p5, material));
}
} }
void render(std::vector<vec4>& image) { void render(std::vector<vec4>& image) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment