Pyramid.app Pyramid grew out of a need to build some simple 3D graphics primitives for a project I was working on. The functions in matrix.subproj provide a basic mechanism for defining a 3D perspective transformation and mapping points from space onto a viewing plane. I wrote the pyramid model and viewer as a testbench to get visual feed back from the matrix routines. Any problems in the math were *very* obvious as things spun around. Having completed pyramid, I added the kitchen model for my wife. Some time ago I had been helping her understand the basics of perspective, and made various diagrams based on our kitchen. The crude diagrams didn't help much, and I decided to do a computer model, which would be accurate and dynamic. That never happened, of course, until I realized after writing Pyramid that adding a kitchen model would be trivial. Watching the lines converge on the vanishing points along the horizon as the scene moves really makes the concept come alive. Though not complicated, it took a while to understand the math and get it right, and I hadn't seen anything similar on the net. I'm posting Pyramid and the matrix routines so that others may have some fun as well. Acknowledgements: Thanks to Vince DeMarco for putting his CircularSlider palette on the net! Problems: The hidden line algorithms are primitive. The moon will occasionally peek through to the foreground. The kitchen will fold inside out if you look at it from funny angles. It's really only useful when viewed from one octant of the coordinate space. _______________________________________________________ NeXTMail:Peter_Kron@corona.com Corona Design, Inc. P.O. Box 51022 Seattle, WA 98115-1022 LEGAL NOTICE: This software is provided "as-is". In no event shall Corona Design, Inc. ("CORONA") be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this software, even if the CORONA has been advised of the possibility of such damages. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you. THE ABOVE WARRANTY IS EXCLUSIVE AND IN LIEU OF ALL OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED.
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.