Someone I know suggested I link Clay Kitty Shooting games to my blog, but I'm not going to.
I just won't do it.
Geocities generally stank, so I'm hosting files on a new site now. So far its great, it even allows you to specify a zip which it uploads and extracts onto the site. Very handy if you're lazy and don't want to rig a FTP client yet want mass upload goodness!
Anyway, fully rotational and very fun to look at Basic Rendering Engine is here. You must rename it as a "zip" file as the site won't let me upload with that extension. Its fun and has many colliding objects and orbits.
The code documentation is also online there, if you want to see a quick shot of what it looks like, look here. This stuff was generated by Doxygen, a tight documentation generater that also does awesome graphs (like the one linked).
Nearly every member of my generation grew up on Nintendo games, so this link will not appeal to certain mothers (unless they are young at heart, of course.)
Behold Nintendo A Cappella
If you are on-campus, you can grab it quickly from Ziggy at:
I've been Blenderizing to make cool 3D objects and animations. Theoretically I can import Blender things to use in my own program. To see my cool space cannon, click here. It may take a little while to load for a slow line. If geocities yells at you, simply click your cursor onto the address bar (where you can type web locations) and hit enter. It should then load properly.
As I hurry between classes every Monday morning I often encounter a little friend. I am in a rush, dashing from Electronics II to Micro-Economics while calling Sharon and looking for food. As I race down the glass hallway from Heath-Hardwick to Longview Hall I spot my friend. He lies upside down on pillar, contemplating the goodness of sleep. The sun warms his back. He rotates periodically to keep all legs warm. He does not worry about homework, papers, or micro-labs. He has no alarm clock and he takes no showers. He doesn't go to chapel.
I often envy my little friend. I dream of curling up beside him, skipping class, and simply enjoying the rays of the morning sun. He firmly grasps something I often miss: the joy of life lies not in hurry, but in rest.
So between classes I paused to remove my camera and snap a few shots of my sun-warmed friend. He didn't seem to mind my scary box. As I pocketed the camera I took a moment to pause. I stretched out my arms and enjoyed a little bit of sun too.
He seems to say "There's plenty of room on this pillar, and enough sun to go around. How about a nap?"
Here is the best article I've found on Quaternions to date:
Minkowski, Quaternions, Complex Numbers:
more to it than meets the i
by Tim Shelton-Jones
The above article actually concerns Communative Quaternions, which are essentially hacked quaternions who now obey the communative property (a*b = b*a). Imagine communative cross-products. Of much greater use is the link below, which discusses actual implementation in OpenGL, my API of choice.
Delphi3D and Quaternions
Although I'm coding in C++ and not Delphi, the ideas and API are identical.
Tonight I finally finished rotational physics. Quaternions, angular momentum, and impulse calculations all cross-producted together to bring you full rotational, translational goodness. Basically, objects now cause each other to spin if struck appropriately. In the picture the central sphere starts out moving to the right. The outlined actions naturally follow.
If you feel so inclinded, you can download it and watch or even move the objects around and add new ones.
Tonight I am pondering quaternions and their usefulness to 3-dimensional math. I think I can eliminate all Euler angles and sine and consine functions, implementing pure quaternion math. Hopefully this will begin to make more sense to me soon.
A brief explanation:
A quaternion is of the form: s + (ai + bj + ck)
where s is a scalar and (a,b,c) is a vector in 3 dimensions.
The quaternion represents a rotation of 's' radians around the axis (a,b,c). Thus a quaternion can describe any rotation in 3 dimensions, taking the place of the standard 3 Euler angles (pitch, yaw, and roll). The general application is in physics. Here quaternions are useful because vector v can be written as a quaternion:
0 + (v1i + v2j + v3k)
From this form it can be rotated by a quaternion q simply by:
v' = q * v * ~q
where ~q is the conjugate of q (~q = s - (ai + bj + ck)).
For example, point p = (10,0,0) can be rotated around the z axis by pi/2 radians by using:
q = pi/2 + 0i + 0k + 1k
To do so, set:
v' = q * p * ~q
This will set v' equal to (0,-10,0).
Rotations may be stacked by pre-multiplying them together (order is important to preserver rotation sequence), and later all applied at once.
If you got through this and understood me, you're doing better than I was this morning. That's your math for tonight, I'm going to bed.
More advances have been made, the physics system has had its wrinkles ironed. out. It now does object collisions based on bounding spheres. Coefficients of restitution are fully adjustable, as is mass. Another key feature is full pause capability. Press the spacebar to pause or unpause. The simulation begins paused, you have to unpause when you begin. The files available for download are prepped to give you pool-ball goodness. If you'd rather see the screen shots, look below.
To do rotational physics, the next thing on the plate, I'm looks as though I must learn quaternion math, essential 4d complex math for 3d rotations. I have some good books, so it should be challenging and fun.
You can download the goodness here. The cue ball is 100 times heavier than the others. This makes the collisions really great, for a more realistic game reduce its mass in the .phy file. Enjoy.
The picture may not look like much today, but it is amazing. What you see are moving, colliding, bouncing balls. Tonight I wrote a physics engine for sphere collision in 3 dimensions. It rocks. I am pleased. So look at the picture as a tribute to the greatness of physics.
If you want to see it go, you can download the stuff here. You can add more balls if you like. The first two supplied begin with velocities, one to the right and the other up. Put balls in their paths and boing away.
Today most work was on a model converter for other file formats. DXF was abandoned because it is very complicated and everyone implements it in strange ways. Right now I'm working on VRML. Its much more simple and I believe I can get it with time. Here's a VRML model I whipped up in Blender. I also learned how to do basic modeling in Blender.
No update today, the viewer hasn't really changed and the file converter isn't done yet.
Its another late night, but more goodness has come. I have added color support to all models. Better still, I have written a converter for auto-cad's .dxf format. Now Ziggy can create models in Carrara3 (a 3D modeler) and export them to my viewer. In short, anything that anyone ever made in a 3D modeler can now be brought into my program. I am very happy. Now I need to sleep so I can do homework in the morning...
Blender and Milkshape both support DXF format. They are both powerful rendering tools. Yahoooo!
Behold the goodness of Ziggy's blob.
Because I love you, the latest release is still available here.