Journal
May 2, 2004:
This past Wednesday were the presentations. It was a nerveracking
experience, but I managed to make it through unscathed.
I've made my final updates to my webpage. I've uploaded the code to my
project as well as a help file to run the program and add algorithms if
needed. Now I just have to get through the defense.
April 25, 2004:
I went to see Dr. McVey this week, and she gave me some last minute
suggestions. One of them being to use the status bar much more. Also,
reseting the graph at the start of each running of the
algorithm.
April 12, 2004:
I've made some more progress on my program. I've implemented
Warshall's algorithm, although I'm still trying to figure out a way to
animate it. It's very different from the other algorithms. Also, I've
got a dialog box that opens when a user chooses an algorithm. The
dialog box allows the user to choose a source vertex and allows them to
enter a speed for the animation. I'm still trying to figure out a way
to let a user step through an algorithm.
April 4, 2004:
I've completed two more algorithms this week. I've finally gotten
Prim's working, and I also got Dijkstra's working. I'm also close to
getting Connected Components done, however, it's still not working like
it should. Also, after talking with Dr. Pankratz, I've gotten a
clarification on saving and loading. I'm going to have to have two
types of files. One a user can type out and produce a graph when
opened. The other will be produced by the program when a user saves,
and will save the locations of the vertices.
March 28, 2004:
I've made some more progress on my program this week. I had a problem
with the scroll bars and the points not being corrected when the user
scrolled. After talking with Dr. McVey, I have that fixed. I'm still
working on the other algorithms. I've gotten closer to getting Prim's
working, although it still has a couple of quirks I have to figure
out.
March 21, 2004:
Well, after working a bunch on my program over spring break, I've made
a lot of progress. I've got things working with both weighted and
non-weighted edges, as well as directed and undirected edges. There
are still a few quirks to be ironed out there yet. I got it to save
a graph to a file and to open the file and reproduce the graph.
However, I'm still having trouble with getting it to open a text file
and produce a graph from it. My big progress, however, has been with
the algorithms. I've gotten Depth First Search, Breadth First Search,
and Kruskal's algorithm all working correctly. I've also been working
on Prim's algorithm and Connected Components, but those are both giving
me fits.
March 7, 2004:
With the help of Dr. Pankratz and some algebra, I finally have nice
looking arrow tips on the edges. I also ran a test algorithm which
goes through the list of vertices and colors each one. Right now I
have a one second delay in between each coloring, however, when I
implement the actual algorithms, I'll have a slider bar so the user can
set the speed. I also added a status bar to the program which shows
the current mode the user is in, either vertex or edge mode.
February 29, 2004:
With the help of Dr. Pankratz, I figured out a way to calculate a point
on a line. Using similar triangles, I can calculate the point I want
to output the arrows on. I'm still trying to figure out how to output
a nice looking arrow. Right now I'm using the slope of the
perpendicular line, however, since the slope changes when you move a
vertex, so does the arrow. It doesn't look very pretty.
February 22, 2004:
I've made some more progress in my program. I'm pretty close to having
all the graph building and editing requirements done. I've figured out
a way to calculate a point on a line and draw an arrow there, however,
I still have to figure out how to get the arrow to point in the right
direction. I also figured out a way to show if there are two edges
each pointing in a different direction
between the same two points in a directed graph. I'm also close to
being able to save and load graphs, however, there's still a little
quirk I need to figure out before it works.
February 15, 2004:
I've implemented a lot of the required features into my program. I can
add vertices and edges using a dialog box in addition to clicking on the
window. I've gotten weights for all the edges. I can right
click on a vertex to either rename it or delete it. I can also right
click on an edge to change the edge's weight or delete it. I'm still
working on making edges directed or undirected, as there is no function
in MFC to draw a line with an arrow, and after talking to Dr. McVey,
we're trying to figure out how to do it. Also, in my meeting with Dr.
McVey, she noticed that sometimes edges draw on top of vertices and
sometimes they didn't. I fixed that by first drawing all the edges
first and then all the vertices, instead of drawing the each vertex and
all its edges together as I went through the adjacency lists.
February 8, 2004:
I talked to Dr. McVey again this week for advice on how to implement
edges. She suggesting creating a vertex class and an edge class. Each
vertex should have its location on the screen, a label, a color, a
weight, and a list of adjacent vertices. Each edge should have a
color, which two vertices it connects, whether it's directed or
undirected, and a weight, if the user chooses a weighted graph. After
working on it all weekend, I've implemented the classes, and the list
of adjacent vertices for each vertices. Right now, I'm still working
on saving the edges in both the code and on the screen.
February 2, 2004:
After spending much of the weekend working on my project, I've got some
of graph drawing completed. Right now, I can click on the screen to
produce a vertex, which I throw into an array. The program can also
detect an edge when you click on a vertex, however, I'm still trying to
figure out how to draw them. Once I figure that out, I'll then work on
reading and writing to files.
January 29, 2004:
I met with Dr. McVey, and she outlined some of the requirements I need
to target early on. First, be able to point and click on the
screen to create a vertex. Also, be able to create an edge between two
vertices by clicking on them. Another requirement is to be able to
save a graph to a file, and also open a graph from a file. Using a
single document interface rather than a frame window helps this a lot
with a function called Serialize, which does a lot of it for you.
There should be two types of files. One will just have vertices and
edges. Another will also incorporate
screen position, so when you have a graph, it will be in the exact
position it was when you open it.
January 24, 2004:
My web page is now up and running. Right now, it's very bare bones,
but at least it's something. I received my project this week, a Graph
Algorithm Animation. It's a program I need to create to animate
different graph algorithms with a number of different features that Dr.
McVey can use when teaching CS 321. Right now I'm brushing up on all
the different algorithms I need to implement, as well as reacquainting
myself with an old friend known as MFC. I'm looking forward to this
project. Check back soon!
Home