Things Are Coming Along

The current update is basically focused at what's been done, and what's left to do. I've mostly finished off line, ray, segment, points, ellipses and circles. Most of what's left to do is in ellipse (intersection primarily). Now all that is left to do is Polygon (general, regular, and triangles as a specific case). Note that I have a pretty extensive set of test cases in place for what I have done. I have been doing these test cases incrementally because it's easiest this way. Once everything is done though, I will start working on a much more complex set of test cases to truly test the module.

After these things are done I'll take a step back, look at what is done and see how to improve the overall interface. Once that is done I will look into optimizations of existing code. Finally, to finish off I will look into some more advanced geometry applications. One thing I'm waiting on is simplification to be done in SymPy (which I believe is ratsimp's eventual purpose). This is because a lot of comparisons are happening which compare some expression to zero, and even though some things should be zero they are not coming out that way because proper simplification of expressions is not happening. Right now I'm just expanding things and hoping they come out to zero (which in most cases they do).

Now, for some decisions that have been made:
  • Line/Ray/Segment inherit from LinearEntity. This allowed me to write less code while still having everything meaningful. At first I was going to have Ray/Segment inherit from Line but this doesn't make sense.
  • In terms of everything, many functions depend on others so that optimizing will generally take place in less places. For example, for Line I have random_point and arbitrary_point functions. Instead of rewriting code I make random_point get an arbitrary point and then make substitutions
I'm hoping to update design.png soon to reflect what I have done. Work starts tomorrow but I'm hoping to have most of the basic functionality finished by the end of this weekend.

Brownie Points

It seems I always do my best work late at night; I just finished off the Point class, all except for one method which depends on the Line class. I also have a test method created for the Point's methods. Tomorrow I'm hoping to [at least] get the Line class finished, along with its children (Ray and Segment). Monday I hope to finish the Ellipse and Circle classes. I'm hoping that things will move quickly and smoothly so that I can begin working on the different polygon classes also. Once I get all the simple functionality done I can start working on more complex things.

Tuesday marks the start of my research work, which for the first couple of weeks will simply be my supervisor teaching me some different complexity theories and how to work with them. Should be interesting, but I'm anxious to start getting into an actual research topic. I'm hoping that everything will run smoothly (i.e., that I understand things instead of struggling with them) so that my supervisor and I can get into a problem as soon as possible! I've been reading Computers and Intractability by Garey and Johnson to get up to speed on everything!

Design Is Started

Just a quick update. I've got a pretty good start on the UML diagram for the foundation of the geometry module. You can get to it by following the My SymPy Workings link to the right or go to it directly by clicking here. This is just an initial, very basic diagram for the moment, and some things aren't really descried in the diagram. For example, Some things I have as methods but they might really be attributes fetched by an overloaded __getattr__ operator (eg, area for Polygons and Ellipses).

Any feedback on the current diagram, or suggestions for additions, would be great. Now, it's time for bed!

The Return

So home is as boring as always; No surprise there. One good thing about going home though, was that I managed to find a book that I had hanging around from grade 11, simply titled Advanced Problems in Geometry. This book will be excellent for my Summer of Code work since it will give me a large set of tougher problems to use as grounds for testing. I'm hoping to really get at the design tomorrow, and have a few diagrams and documents up at the end of the week describing the design that I am going to start with.

Home Sweet Home

Well, looks like I'll be heading home for the weekend. I probably should since I haven't been home since holidays ended (the end of December). Bringing home my old computer to set up for mom. Installed the new Ubuntu, or Xubuntu to be specific. Besides for a few minor troubles with regards to display everything looks pretty good!

So my research on the possible representations for geometrical entities is nearing the end. The final updates are just about here for the representation research document. The latest update includes a quick analysis of the sources for the Maple geometry module. It was not very easy to go through, but I managed to pull some good stuff from it (mostly formulas for calculating different things). If anyone has some suggestions or ideas regarding the material in the document, please feel free to leave a comment. All feedback is greatly appreciated!

Lots of Research

So the research is in, and there isn't much that is outside of the normal when it comes to representation of different geometrical entities. If everything is a go-ahead then I'll most likely be starting the design planning next week. Getting an early start because this summer is gonna be busy and plus, this stuff is pretty fun to play with. The last thing to do before design planning is reading through a few geometry books to see what I can pull from them. As a side note, if anyone has some links to geometry software that has source or implementation details readily available, links would be greatly appreciated! I actually just found out how to print the source of Maple functions (one's that are not built into the core) within Maple. I guess I'll be going through those tomorrow and seeing how Maple does things for some insight.

First cool thing of the summer is getting to bring math and Python together with the SoC. Second cool thing of the summer is that I get to do some CS research on the side, supervised by one of my favorite professors. This professor also mentioned that he's hoping that I can help him with a paper he's co-writing. If I can give a big enough contribution this could mean the first time I'll have a name attached to a publication. Good material for grad school!

Summer is great, but for now, getting some sleep is gonna be even greater!

Summer Is Here

Today's exam went pretty good. It seems that my alpha-beta pruning technique needs a little bit of work, or rather I need to reduce the stupidity that tends to come forth from time to time. Maybe I'm just not a morning person. Well, at least they're all done now. I can't wait to see the results since I'm doing a little "experiment" this semester. I studied, on average, about 30-40% less than previous semesters and I want to see how significant of a difference this makes.

I checked out a few geometry books from the library to start reading, from introductory to expert. to start reading. Hopefully the intro book will refresh my memory, and the advanced books will offer some insight into more advanced algorithms for different things. Hopefully by Friday I'll have a better idea of how I'm going to represent these geometrical entities. Better yet, I'll probably have the answer to "Why am I going to represent the geometrical entities this way?"

I also done some more Google searching for existing geometry software. I came across a geometry package that sort of does some stuff that I'm looking to do, but it is more GIS focused. I'm going to look through some of the source and see if I can pull anything good out of it. I also checked out SourceForge and found GMath. Most of my other searching just led to geometry software that is outside of what I plan on doing for this summer (eg, dynamic geometry). I'm going to look at these other pieces of software, and if none of my findings go against my current "decisions" then I will probably move on to the planning phase.

I'm expecting this to be a busy summer, but that's just the way I like it. If I'm not being constructive then I'm usually just wasting time. I should probably go to bed since it's 2:30 in the morning!

Beginnings: Summer of Code '07

This blog is dedicated to any developmental stuff that I am working on. Currently that is mostly limited to the Summer of Code '07 Geometry Module for SymPy.

There's not much to say right at the moment besides for my initial start at research, which can be found here. Overall, it has been difficult finding some generalized geometry software similar to what I'll be creating for SymPy, and even more difficult to find available implementation details. Considering this, I will probably begin work on a plan for the interfaces within the next couple of weeks. The number of options for representation of each geometrical entity is small, so it should be fine to just make what seems to be the obvious choice and play with it to see how everything runs.

My Database/A.I. exam is tomorrow, but after that I can get down and dirty with this stuff!