This will be my contest entry, and this will be Axe. As I love math and 3D, I thought I would teach everything I learnt about 3D during those years of wandering through the interwebz (3 to be precise). There will be trig, intersection between 3D objects, vectors, tears, romance and violence.

For now I'm thinking of a more textual approach, with when possible 3D views which the user can rotate to see what's happening and what's being described. So this program will actually teach math and computering since one will learn the basics of 3D and how to operate with it on an algorithmic point of view - though I'll focus on maths and include some "Note to programmers" sometimes.

So yeah, we'll see how it goes.
Sounds good, and tbh when i saw your topic i automatically thought 3D Smile.

Looking forward to results!
Well yeah that was the point Razz

Thanks ^^
I created myself a custom font that I'll be using for the whole project, first because now I can implement smooth scrolling since text is clipped (the font is of course drawn with Pt-On), and second since the font is fixed-space I'll have no problem with clipping to the left and right.

I also planned some on-purpose tags, for example I have a working underline tag and I found a way to inline code to be executed and to display things directly within the text viewer. That will be useful for demo models, since the whole course is about 3D.
Creating a versatile text engine sounds like a very logical first step to save yourself work later in the contest. Best of luck indeed; this sounds like a useful and fun entry. Although I have a fair bit of experience with 3D programming, there are some aspects of it of which I still feel I don't have a first theoretical grasp, and I'm hoping this will help me. Smile
Thanks KermM Smile keep in mind I'll be mostly talking about theory, with some occasional notes to programmers. You won't see algorithms often, and you won't see any proper code at all. On the other hand, you'll have a plethora of formulas you'll be free to implement in the language of your choice.

Algorithms will be seen when explaining processes rather than formulas ; for example applying a rotation matrix on a vertex, or calculating a cross product.
Alright so I'm done with the program itself, all that is left (approximately 90% of the final product) is the actual course to write and the examples to build Smile

What I mean by that is that I won't have to write any line of code that is related to the core system. All that is left to do is content.

So I wrote some example content, and here's what it looks like when passed through the core system :

The animated parts are all inline code that gets executed when necessary. You can see that there can be several animated parts on-screen at a time (up to 3), since I use a custom stack to register 6 variables for each animation Smile

Also, I'm leaving (with my calc) for one week, so there probably won't be any news until I get back.
Glad to see updates on this Smile

Would it be possible to have chapters or bookmark support ? This way, it makes navigating through notions faster and allows to quickly read lessons while coding without having to scroll a lot of lines each time Wink
Yeah that's planned (to be fair there are still some core features to be added:P). I also planned a save & resume, so when you close you don't have to scroll back to where you were Smile

I've made it so all the course's content is stored in an external appvar (which can then be up to 64 kb), and that appvar is read from while it's archived, so I have hardly any limitation for the course's size Smile also, all examples are stored in the program itself, so that I can indirectly inline them in the course.

In other news, I found a way to cut the course in chapters, allowing for easier navigation from a menu and bookmarking Smile
Nice! And yes, that's what I employ for a number of my projects. Flags Database has like 7 full appvars and the 8th is nearly full. :p Helps keep other areas of RAM clear for usage Smile
Yeah, even if I doubt I'll fit everything in 64kb Razz I'll try to be clear and concise Smile

EDIT : actually another problem is that too many examples might result in a larger-than-8kb executable, even with all the actual content in an appvar. (if it wasn't clear already, what I call "example" is code that gets executed inline and displays things at the same level as the course's text)
A solution to that is to have the examples "code" stored in the appvar as well and relocate it to some safeRam area upon example load. This way you can have unlimited examples and not really have to worry about the 8kb issue. Limitation to that is your code size is limited to the 768ish bytes of the larger safe ram areas. But if you keep the core routines inside the original 8kb area that should be ok.
We've discussed that on IRC with Runer112 and it turned out to be really hard to achieve in Axe, because nearly every program flow command uses absolute jumps.
Alright so I'm done with chapter 0 (introduction, presentation) and chapter 1 and I'm not even halfway done with chapter 2. But the appvar is already 12 kb, and take a look at the course's plan (with chapters' name and themes) to understand my problem :

Chapters :
  1. Projection (smallest chapter) : raw projection, translation, cameras
  2. Rotation (biggest chapter, 1/3rd done) : euclidean, matrix and quaternion representations of a rotation, 2D rotation matrix, general 3D rotation matrices and simple rotations, combined rotations and Gimbal lock, inverse rotations
  3. Culling : pros and cons, backface culling, painter's algorithm with Z-sorting
  4. Intersections (probably most complicated chapter) : ray/plane, ray/face, ray/sphere, face/face

Addendums :
  1. Surface filling (quite enormous too) : triangle fillers, texture fillers
  2. A quick look at quaternions (either this one or chapter 4 is the most complicated) : overview, rotating a vertex using quaternions

I'll probably need two appvars, and you will quasi-certainly need all of your RAM to read the biggest chapters. Though I found out that I wouldn't need so many example codes, so I'm fairly certain I won't cross the 8kb limit. Still, using a shell to run the program while it's archived seems like the best idea to spare as much RAM as possible.
Alright so I finished chapter 1, and right now the program is 4521 bytes and the appvar is 16 274 bytes. Here's the end of chapter 1, closing on decentered rotations :

Sounds good, and tbh when i saw your topic i automatically thought 3D Smile.

Hmm when I saw this topic I automatically thought of that song from Aladdin "A Whole New World" ._.
matrefeytontias wrote:
Alright so I finished chapter 1, and right now the program is 4521 bytes and the appvar is 16 274 bytes. Here's the end of chapter 1, closing on decentered rotations :

Very nice! I am looking forward to learning from this program, especially with mesmerizing screenshots like those. Wink
Chapter 3 on culling is done. Next is chapter 4 on intersections, but I don't think I'll write the addendums in time.
matrefeytontias wrote:
Chapter 3 on culling is done. Next is chapter 4 on intersections, but I don't think I'll write the addendums in time.
That's still great progress, and I hope that you'll write the addendums after the contest is over regardless. Smile
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum