Commit graph

405 commits

Author SHA1 Message Date
392871a1ee Updates for Box 2014-08-09 10:54:00 -07:00
70576c382a Do all the clean up needed for Object 2014-08-09 10:42:49 -07:00
2c2bf09140 Compiler errors in Box::DoIntersect, hidden until now... 2014-08-09 10:11:44 -07:00
217c4709aa Vector4's constructor takes default arguments 2014-08-09 10:08:44 -07:00
baf40143b2 DoIntersect is an abstract method 2014-08-09 10:08:29 -07:00
3846a1aa3a Move Box intersection code to DoIntersect 2014-08-09 10:08:21 -07:00
d0d667d6d2 Object::Intersect
A new intersect method that converts to object space before doing the intersection. Now all objects are at their own origin!
2014-08-09 09:59:00 -07:00
519eb347d1 Vector4 constructor from Matrix<4,1> 2014-08-09 09:57:35 -07:00
43cb182aa7 Have to use operator() for Matrix<>::operator*
Matrix<N,P> is a different class from Matrix<N,M> so Matrix<N,M> can't access protected member data on Matrix<N,P>. There must be a better way that having to do the multiplies requires for operator().
2014-08-09 09:57:09 -07:00
9aa557293a A Ray class in basics! 2014-08-09 09:33:22 -07:00
b41cdb7186 Vector4 +, -, negation, and *
+, -, and negation were easy. Multiplication is wacky because the Matrix class does it. So, to do binary * (not *=) I needed to dynamic_cast the resulting Matrix<4,1> to a Vector4&&.
2014-08-09 09:32:48 -07:00
a3d51f7cf3 TranslationMatrix() is not static 2014-08-09 09:02:04 -07:00
9b6b6a20b7 Const versions of Vector4's X(), Y(), and Z() 2014-08-09 09:01:52 -07:00
584d0326a9 Get rid of object's origin 2014-08-09 08:59:11 -07:00
ab9ac5e963 Clean up constructors for Object and Sphere
Use default arguments instead of multiple constructors. I forgot about those! Use Vector4s all around.
2014-08-09 08:57:41 -07:00
8ccfbc0498 Scalar multiplication Doxygen group 2014-08-09 08:31:37 -07:00
cf57dfc51a I give up on Normalization
Compiler was complaining about casting between Vector4 and Matrix<4,1> so I just did the division by hand.

I bet operator* and operator/ are broken for Vector4s as well...
2014-08-09 08:31:25 -07:00
32292a45fa Move EPSILON and MAX_DISTANCE back to basics.h 2014-08-09 08:30:29 -07:00
fa3708edfb Implement a bunch of the useful Vector operations 2014-08-08 23:05:38 -07:00
9b076f1533 Implement more robust * and / for Matrix 2014-08-08 23:05:24 -07:00
be15d553f1 Move EPSILON and MAX_DISTANCE to basics/basics.hh 2014-08-08 23:04:52 -07:00
abd38169b1 Comment out all the old Matrix4 stuff 2014-08-08 22:14:36 -07:00
b59b6d85c0 Add Matrix4, implement TranslationMatrix() 2014-08-08 22:14:20 -07:00
9474153736 Move Zero() and Identity() definitions to the right place 2014-08-08 22:13:51 -07:00
2cadffd7d4 Fix Vector4 constructors and clean up compiler errors 2014-08-08 21:47:44 -07:00
3bf72bd78d Build basics! 2014-08-08 21:12:44 -07:00
da127ccde3 Vector4 subclass instead of typedef 2014-08-08 21:12:37 -07:00
2b9fec5d82 Const operator== 2014-08-08 21:12:18 -07:00
bfd3b8cbce uint –> UInt 2014-08-08 21:12:06 -07:00
3b713856db Vector, a single-column Matrix 2014-08-08 20:44:43 -07:00
c5b9d73a96 Add constructors and operator== to Matrix<> 2014-08-08 20:44:31 -07:00
a9c8d84ac2 Top-level include for basics 2014-08-08 17:38:13 -07:00
064ee2e4f1 Include <vector> in basics types.hh 2014-08-08 17:38:05 -07:00
32b52ace93 Templated matrix class 2014-08-08 17:35:34 -07:00
a955106d18 Implement a Matrix4 class
A 4x4 matrix that implements matrix multiplication and multiplication by
scalars. Some unit tests too, to test that this stuff works.
2014-08-07 22:12:53 -07:00
c380a3c3cd Ignore .DS_Store files 2014-08-04 07:09:42 -07:00
14db2752ae Log where the camera is looking 2014-08-03 20:13:00 -07:00
589b1f23ec Camera GetTypeString and WriteType declarations 2014-08-03 20:12:40 -07:00
781c8cbe9f Log camera before logging scene objects 2014-08-03 20:12:10 -07:00
08bd04d8da Fancier way of logging the camera's parameters 2014-08-03 20:12:00 -07:00
5ac721d601 Lots of comments about what LookAt is doing 2014-08-03 20:11:22 -07:00
c2a4372467 Add Camera::IsLeftHanded()
A method that returns true if the camera's coordinate system is left-handed.
2014-08-03 20:10:52 -07:00
a7020545c1 New header comment for camera.cc 2014-08-03 19:10:43 -07:00
f99608085e Log the camera before rendering
Implement an operator<< for Cameras. Log the scene's camera.
2014-08-03 19:10:31 -07:00
bcf93bb4ce LookAt comments 2014-08-03 18:51:49 -07:00
0df6244b8b Bit of code clean up in LookAt 2014-08-03 18:51:41 -07:00
7297bc5c17 Add Camera::LookAt
This is identical to the POV-Ray look_at keyword for cameras. In fact, I stole the code almost directly from them… It's super handy for panning and tilting the camera towards a particular point, and saves me having to do dubiously accurate direction vector calculations by hand.

I still need to figure out what exactly this math is doing.
2014-08-03 18:34:00 -07:00
e64b9403ac Log some extra spaces when logging scene objects 2014-08-03 17:38:22 -07:00
b1c818ac20 Modernize object_sphere
Rename files objectSphere. Clean up dependencies.
2014-08-03 17:35:12 -07:00
a0fbecf483 Log all objects before starting the render 2014-08-03 17:25:25 -07:00