aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.ninja_log74
-rw-r--r--build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt45
-rw-r--r--src/intersect/intersect.cpp100
3 files changed, 190 insertions, 29 deletions
diff --git a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.ninja_log b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.ninja_log
index 3e74c34..8059b4f 100644
--- a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.ninja_log
+++ b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.ninja_log
@@ -1,4 +1,5 @@
# ninja log v5
+<<<<<<< HEAD
50 168 1702330327746048757 /Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/mocs_compilation.cpp 596afd61accb21ff
50 168 1702330327746048757 /Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/timestamp 596afd61accb21ff
170 11454 1702328734963840489 CMakeFiles/projects_ray.dir/src/raytracer/raytracer.cpp.o efa4d0ee111c147a
@@ -69,3 +70,76 @@
25 146 1702334330701712265 /Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/mocs_compilation.cpp 596afd61accb21ff
157 5410 1702334335944239212 CMakeFiles/projects_ray.dir/src/utils/sceneparser.cpp.o ed3cc2e1b7dc62bd
5410 6217 1702334336731923317 projects_ray a842e040bf3d79e9
+=======
+12499 19715 1702070530335653994 CMakeFiles/projects_ray.dir/src/accelerate/myqthreads.cpp.o 81fffec8aaaec0bd
+2014 16129 1702247256683403980 CMakeFiles/projects_ray.dir/src/raytracer/raytracer.cpp.o efa4d0ee111c147a
+1949 12552 1702070523172011570 CMakeFiles/projects_ray.dir/src/utils/raytracerutils.cpp.o 35a3ae2d0b82dd65
+1941 13001 1702070523624492613 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 4731cafbc4b4e737
+2013 15010 1702247255558209399 CMakeFiles/projects_ray.dir/src/main.cpp.o 987044590434d8d1
+1938 14619 1702070525228350664 CMakeFiles/projects_ray.dir/src/raytracer/raytracescene.cpp.o aaa2fe512335b7de
+12552 23387 1702070534013897550 CMakeFiles/projects_ray.dir/src/accelerate/myqtconcurrent.cpp.o 28d12937d9255fcc
+2013 13576 1702247254125569428 CMakeFiles/projects_ray.dir/src/mainwindow.cpp.o 6c6dd3bd167ac5ff
+12696 20607 1702070531227914702 CMakeFiles/projects_ray.dir/src/accelerate/bvh.cpp.o 2ac5d1ff96197a9
+191 2112 1702069278793333995 CMakeFiles/projects_ray.dir/src/vec4ops/transform4d.cpp.o 9cafd52c1d615711
+1947 12499 1702070523121512734 CMakeFiles/projects_ray.dir/src/intersect/normals.cpp.o d622514f4a212179
+1946 12725 1702070523341525396 CMakeFiles/projects_ray.dir/src/texture/texture.cpp.o d3d7e9f0c176bf47
+7844 17014 1702070527638800667 CMakeFiles/projects_ray.dir/src/aliasing/supersample.cpp.o d10c1da10eac29ed
+31 2011 1702247242555969000 projects_ray_autogen/mocs_compilation.cpp 596afd61accb21ff
+1944 12700 1702070523312945240 CMakeFiles/projects_ray.dir/src/illuminate/reflect.cpp.o e72528d54abad0c9
+16129 16802 1702247257357860171 projects_ray a842e040bf3d79e9
+31 2011 1702247242555969000 projects_ray_autogen/timestamp 596afd61accb21ff
+12615 20456 1702070531078485263 CMakeFiles/projects_ray.dir/src/accelerate/kdtree.cpp.o a0b7647ef5416d35
+1929 12353 1702070522974418120 CMakeFiles/projects_ray.dir/src/vec4ops/rotations4d.cpp.o 936dea6b1a330a9e
+1943 12696 1702070523308816788 CMakeFiles/projects_ray.dir/src/illuminate/shadow.cpp.o 98378b8788da3ce3
+12354 20232 1702070530851642353 CMakeFiles/projects_ray.dir/src/aliasing/filter.cpp.o bc288befd0c32eb0
+2014 10778 1702247251325163693 CMakeFiles/projects_ray.dir/src/intersect/intersect.cpp.o 2ea2e8e07c7b357b
+2 397 1702256894321554471 build.ninja d13bedc3f8269e08
+1946 16434 1702069114953926356 CMakeFiles/projects_ray.dir/src/utils/scenefilereader.cpp.o 4d14ff80692ac6b3
+2012 11891 1702247252438812632 CMakeFiles/projects_ray.dir/projects_ray_autogen/mocs_compilation.cpp.o 21ccedb02e7f6f6a
+1953 12354 1702069370966741736 CMakeFiles/projects_ray.dir/src/utils/sceneparser.cpp.o ed3cc2e1b7dc62bd
+1384 4596 1702065010366160912 CMakeFiles/projects_ray.dir/src/settings.cpp.o 73db81265aa9dd0e
+201 2406 1702070849164713826 CMakeFiles/projects_ray.dir/src/camera/camera.cpp.o 5f7d45d0b689d9f7
+2015 7261 1702247247809011677 CMakeFiles/projects_ray.dir/src/vec4ops/vec4ops.cpp.o 176379e1dc38d565
+5 571 1702256898604025591 projects_ray_autogen/timestamp 90a86c673d4d5360
+5 571 1702256898604025591 projects_ray_autogen/mocs_compilation.cpp 90a86c673d4d5360
+5 571 1702256898604025591 /Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/timestamp 90a86c673d4d5360
+5 571 1702256898604025591 /Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/mocs_compilation.cpp 90a86c673d4d5360
+572 1069 1702256899105174401 CMakeFiles/projects_ray.dir/src/settings.cpp.o c1f79a20c0ecbe57
+572 1223 1702256899257632523 CMakeFiles/projects_ray.dir/src/camera/camera.cpp.o 94ae54642a1d948f
+572 1752 1702256899785820170 CMakeFiles/projects_ray.dir/src/intersect/intersect.cpp.o aea38d6800d3e2d7
+574 1786 1702256899819989922 CMakeFiles/projects_ray.dir/src/texture/texture.cpp.o c5109dc5ea714408
+573 1800 1702256899835075331 CMakeFiles/projects_ray.dir/src/illuminate/reflect.cpp.o 3f60bdf8eba19b08
+573 1815 1702256899847957753 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o c5c01b155b8ee7bd
+573 1842 1702256899876435373 CMakeFiles/projects_ray.dir/src/illuminate/shadow.cpp.o e75c5f32d37c0f7
+571 1888 1702256899921064937 CMakeFiles/projects_ray.dir/projects_ray_autogen/mocs_compilation.cpp.o b6caa8722c5ed85
+572 2067 1702256900097779246 CMakeFiles/projects_ray.dir/src/utils/sceneparser.cpp.o f97c011acc078586
+1070 2109 1702256900140845277 CMakeFiles/projects_ray.dir/src/intersect/normals.cpp.o 3b9d0580f53ea69c
+572 2147 1702256900177405307 CMakeFiles/projects_ray.dir/src/raytracer/raytracescene.cpp.o e6850a1ba68767f
+572 2292 1702256900324319504 CMakeFiles/projects_ray.dir/src/mainwindow.cpp.o e9399ac69b3cfe3a
+2148 2299 1702256900337480508 CMakeFiles/projects_ray.dir/src/vec4ops/transform4d.cpp.o 202455a136d96772
+1224 2313 1702256900346526745 CMakeFiles/projects_ray.dir/src/utils/raytracerutils.cpp.o 494cb10eb691f3da
+571 2370 1702256900402916405 CMakeFiles/projects_ray.dir/src/main.cpp.o 5dc8b318e78f1fc9
+2067 2556 1702256900590882395 CMakeFiles/projects_ray.dir/src/vec4ops/vec4ops.cpp.o 91511fc09b29247f
+572 2611 1702256900642989789 CMakeFiles/projects_ray.dir/src/raytracer/raytracer.cpp.o 70260dd9342207e1
+1753 2670 1702256900703349134 CMakeFiles/projects_ray.dir/src/aliasing/supersample.cpp.o 6509507adff024b9
+1801 2689 1702256900723704594 CMakeFiles/projects_ray.dir/src/accelerate/myqthreads.cpp.o 61d667b82582b0f6
+1787 2744 1702256900779787339 CMakeFiles/projects_ray.dir/src/aliasing/filter.cpp.o 992faa973485d8a9
+1889 2780 1702256900815793538 CMakeFiles/projects_ray.dir/src/accelerate/kdtree.cpp.o 972643ee76ef36e3
+572 2826 1702256900861458138 CMakeFiles/projects_ray.dir/src/utils/scenefilereader.cpp.o ad7df583a7d505ab
+1815 2836 1702256900869485215 CMakeFiles/projects_ray.dir/src/accelerate/bvh.cpp.o 57e5e91a0ccd956b
+2109 2854 1702256900889672343 CMakeFiles/projects_ray.dir/src/vec4ops/rotations4d.cpp.o 7ae83c7dbbb3069c
+1846 3326 1702256901360458086 CMakeFiles/projects_ray.dir/src/accelerate/myqtconcurrent.cpp.o edd9793557117a52
+3326 3465 1702256901503327682 projects_ray 86189a8842e154ef
+7 37 1702333804316350533 projects_ray_autogen/timestamp 90a86c673d4d5360
+7 37 1702333804316350533 projects_ray_autogen/mocs_compilation.cpp 90a86c673d4d5360
+7 37 1702333804316350533 /Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/timestamp 90a86c673d4d5360
+7 37 1702333804316350533 /Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/mocs_compilation.cpp 90a86c673d4d5360
+40 646 1702333804921083630 CMakeFiles/projects_ray.dir/src/intersect/intersect.cpp.o aea38d6800d3e2d7
+646 779 1702333805055335915 projects_ray 86189a8842e154ef
+6 34 1702334794290663489 projects_ray_autogen/timestamp 90a86c673d4d5360
+6 34 1702334794290663489 projects_ray_autogen/mocs_compilation.cpp 90a86c673d4d5360
+6 34 1702334794290663489 /Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/timestamp 90a86c673d4d5360
+6 34 1702334794290663489 /Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/mocs_compilation.cpp 90a86c673d4d5360
+35 630 1702334794882621284 CMakeFiles/projects_ray.dir/src/intersect/intersect.cpp.o aea38d6800d3e2d7
+630 760 1702334795013830551 projects_ray 86189a8842e154ef
+>>>>>>> bbe08c295ccfa32de1a9ca7321f36b2c130ad233
diff --git a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt
index e665c83..8bbc9fa 100644
--- a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt
+++ b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt
@@ -1,4 +1,5 @@
# Generated by CMake. Changes will be overwritten.
+<<<<<<< HEAD
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/utils/sceneparser.cpp
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/texture/texture.cpp
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/illuminate/illuminate.cpp
@@ -12,6 +13,28 @@
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/aliasing/filter.cpp
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/bvh.cpp
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/mainwindow.h
+=======
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/vec4ops/vec4ops.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/sceneparser.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/texture/texture.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/settings.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/raytracerutils.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/vec4ops/transform4d.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/intersect/normals.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracescene.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracer.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/scenefilereader.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/mainwindow.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/main.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/myqtconcurrent.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/kdtree.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/illuminate/illuminate.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/bvh.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/illuminate/reflect.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/myqthreads.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/rgba.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracer.h
+>>>>>>> bbe08c295ccfa32de1a9ca7321f36b2c130ad233
mmc:Q_OBJECT
mdp:/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/mainwindow.h
mdp:/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/moc_predefs.h
@@ -963,6 +986,7 @@
mdp:/Users/lafayette_bussey/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h
mdp:/Users/lafayette_bussey/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h
mdp:/Users/lafayette_bussey/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h
+<<<<<<< HEAD
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/utils/scenefilereader.h
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.cpp
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/kdtree.h
@@ -981,6 +1005,16 @@
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/accelerate/kdtree.cpp
/Users/daviddoan/Desktop/Graphics/the-all-americans-in-cs1230/src/accelerate/bvh.h
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
+=======
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/vec4ops/rotations4d.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/aliasing/supersample.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/illuminate/shadow.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/bvh.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/sceneparser.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/camera/camera.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracescene.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/mainwindow.h
+>>>>>>> bbe08c295ccfa32de1a9ca7321f36b2c130ad233
mmc:Q_OBJECT
mdp:/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
mdp:/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/moc_predefs.h
@@ -1755,10 +1789,21 @@
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/bvh.h
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracescene.h
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/vec4ops/vec4ops.h
+<<<<<<< HEAD
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/settings.h
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/aliasing/supersample.cpp
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/vec4ops/rotations4d.cpp
/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracer.h
+=======
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/intersect/intersect.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/scenefilereader.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/scenedata.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/camera/camera.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/accelerate/kdtree.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/settings.h
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/aliasing/filter.cpp
+/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
+>>>>>>> bbe08c295ccfa32de1a9ca7321f36b2c130ad233
mmc:Q_OBJECT
mdp:/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/src/raytracer/raytracer.h
mdp:/Users/lafayette_bussey/Desktop/cs1230/the-all-americans-in-cs1230/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/projects_ray_autogen/moc_predefs.h
diff --git a/src/intersect/intersect.cpp b/src/intersect/intersect.cpp
index 3a39a87..cc3143d 100644
--- a/src/intersect/intersect.cpp
+++ b/src/intersect/intersect.cpp
@@ -7,6 +7,7 @@
// TODO: implement mesh
+//updated to handle intersection in 4d
glm::vec4 intersectCircle(
glm::vec4 p,
glm::vec4 d,
@@ -14,9 +15,9 @@ glm::vec4 intersectCircle(
{
// implicit: x^2 + y^2 + z^2 - r^2 = 0, all directions
float radius = 0.5f;
- float a = d.x*d.x + d.y*d.y + d.z*d.z;
- float b = 2.f * (p.x*d.x + p.y*d.y + p.z*d.z);
- float c = p.x*p.x + p.y*p.y + p.z*p.z - radius*radius;
+ float a = d.x*d.x + d.y*d.y + d.z*d.z + d[3] * d[3];
+ float b = 2.f * (p.x*d.x + p.y*d.y + p.z*d.z + p[3]*d[3]);
+ float c = p.x*p.x + p.y*p.y + p.z*p.z + p[3] * p[3] - radius*radius;
float discriminant = b*b - 4*a*c;
if (discriminant < 0) // no solution
@@ -47,12 +48,12 @@ glm::vec4 intersectCone(
const RenderShapeData& shape)
{
float t = FINF;
-
- // implicit: x^2 + y^2 - z^2 = 0, conic top
+ // updated to 4d
+ // x^2 + y^2 - z^2 - w^2= 0, conic top
float radius = 0.5f;
- float a = d.x*d.x + d.z*d.z - .25f*(d.y*d.y);
- float b = 2.f*(p.x*d.x + p.z*d.z) - .5f*(p.y*d.y) + .25f*d.y;
- float c = p.x*p.x + p.z*p.z - .25f*(p.y*p.y) + .25f*p.y - 1/16.f;
+ float a = d.x*d.x + d.z*d.z - .25f*(d.y*d.y) - .25f*(d[3]*d[3]);
+ float b = 2.f*(p.x*d.x + p.z*d.z) - .5f*(p.y*d.y) + .25f*d.y - .5f*(p[3]*d[3]) + .25f*d[3];
+ float c = p.x*p.x + p.z*p.z - .25f*(p.y*p.y) + .25f*p.y - .25f*(p[3]*p[3]) + .25f*p[3] - 1/8.f;
float discriminant = b*b - 4*a*c;
if (discriminant >= 0)
@@ -63,7 +64,8 @@ glm::vec4 intersectCone(
auto p1Top = p + t1 * d;
if (
t1 > 0 &&
- p1Top.y >= -.5f && p1Top.y <= .5f)
+ p1Top.y >= -.5f && p1Top.y <= .5f &&
+ p1Top[3] >= -.5f && p1Top[3] <= .5f)
{
t = std::min(t1, t);
@@ -72,23 +74,34 @@ glm::vec4 intersectCone(
auto p2Top = p + t2 * d;
if (
t2 > 0 &&
- p2Top.y >= -.5f && p2Top.y <= .5f)
+ p2Top.y >= -.5f && p2Top.y <= .5f &&
+ p2Top[3] >= -.5f && p2Top[3] <= .5f)
{
t = std::min(t2, t);
}
}
-
- // implicit p_y + t*d_y = -.5f, top base
- float tBase = (- .5f - p.y) / d.y;
- auto pBase = p + tBase * d;
+ // x^2 + y^2 - z^2 = 0, base w.r.t. w axis
+ float twBase = (- .5f - p[3]) / d[3];
+ auto pwBase = p + twBase * d;
if (
- tBase > 0 &&
- pBase.x*pBase.x + pBase.z*pBase.z <= radius*radius
+ twBase > 0 &&
+ pwBase.x*pwBase.x + pwBase.z*pwBase.z <= pwBase.y*pwBase.y
)
{
- t = std::min(t, tBase);
+ t = std::min(t, twBase);
+ }
+
+ // x^2 + y^2 - z^2 = 0, base w.r.t. y axis
+ float tyBase = (- .5f - p.y) / d.y;
+ auto pyBase = p + tyBase * d;
+ if (
+ tyBase > 0 &&
+ pyBase.x*pyBase.x + pyBase.z*pyBase.z <= pyBase[3]*pyBase[3]
+ )
+ {
+ t = std::min(t, tyBase);
}
return t == FINF ? glm::vec4(0.f) : p + t*d;
@@ -101,7 +114,7 @@ glm::vec4 intersectCylinder(
{
float t = FINF;
- // implicit: x^2 + z^2 = 0, y between -.5, 5 rectuangular side
+ // implicit: x^2 + z^2 = r^2, y + w between -.5, 5 rectuangular side
float radius = 0.5f;
float a = d.x*d.x + d.z*d.z;
float b = 2.f * (p.x*d.x + p.z*d.z);
@@ -116,7 +129,9 @@ glm::vec4 intersectCylinder(
auto p1Top = p + t1 * d;
if (
t1 > 0 &&
- p1Top.y >= -.5f && p1Top.y <= .5f)
+ p1Top.y + p1Top[3] >= -.5f && p1Top.y + p1Top[3] <= .5f &&
+ p1Top.y >= -.5f && p1Top.y <= .5f &&
+ p1Top[3] >= -.5f && p1Top[3] <= .5f)
{
t = std::min(t1, t);
}
@@ -124,32 +139,36 @@ glm::vec4 intersectCylinder(
auto p2Top = p + t2 * d;
if (
t2 > 0 &&
- p2Top.y >= -.5f && p2Top.y <= .5f)
+ p2Top.y + p2Top[3] >= -.5f && p2Top.y + p2Top[3] <= .5f &&
+ p2Top.y >= -.5f && p2Top.y <= .5f &&
+ p2Top[3] >= -.5f && p2Top[3] <= .5f)
{
t = std::min(t2, t);
}
}
- // implicit p_y + t*d_y = -.5f, top base
- float tTop = (.5f - p.y) / d.y;
+ // implicit y + w = .5f, top base
+ float tTop = (.5f - p.y - p.y) / (d[3] + d.y);
auto pTop = p + tTop * d;
if (
tTop > 0 &&
- pTop.x*pTop.x + pTop.z*pTop.z <= radius*radius
- )
+ pTop.x*pTop.x + pTop.z*pTop.z <= radius*radius &&
+ pTop.y >= -.5f && pTop.y <= .5f &&
+ pTop[3] >= -.5f && pTop[3] <= .5f)
{
t = std::min(t, tTop);
}
- // implicit p_y + t*d_y = -.5f, top base
- float tBase = (- .5f - p.y) / d.y;
+ // implicit p_y + t*d_y = -.5f, Bottom base
+ float tBase = (.5f - p.y - p.y) / (d[3] + d.y);
auto pBase = p + tBase * d;
if (
tBase > 0 &&
- pBase.x*pBase.x + pBase.z*pBase.z <= radius*radius
- )
+ pBase.x*pBase.x + pBase.z*pBase.z <= radius*radius &&
+ pBase.y >= -.5f && pBase.y <= .5f &&
+ pBase[3] >= -.5f && pBase[3] <= .5f)
{
t = std::min(t, tBase);
}
@@ -221,6 +240,29 @@ glm::vec4 intersectCube (
tmax = tzmax;
}
+ // w-dir
+ float twmin = (-apothem - p[3]) / d[3];
+ float twmax = (apothem - p[3]) / d[3];
+
+ if (twmin > twmax)
+ {
+ std::swap(twmin, twmax);
+ }
+
+ if ((tmin > twmax) || (twmin > tmax))
+ { // no hit
+ return glm::vec4(0.f);
+ }
+
+ if (twmin > tmin)
+ {
+ tmin = twmin;
+ }
+ if (twmax < tmax)
+ {
+ tmax = twmax;
+ }
+
if (tmin <= 0 && tmax <= 0) // both behind camera
{
return glm::vec4(0.f);
@@ -262,4 +304,4 @@ glm::vec4 RayTracer::findIntersection(
break;
}
return glm::vec4(0.f);
-} \ No newline at end of file
+}