\documentclass[12pt]{article}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
\title{TJHSST Computer Systems Lab Senior Research Project\\ 3D Graphing\\ 2006-07}
\author{Ramesh Srigiriraju}
\maketitle
\begin{abstract}
The purpose of this research project is to write a program that allows the user
to graph functions of two variables.  The program will incorporate elements of 3D graphics by allowing the user to rotate, shrink, and stretch the graphs.  The program will be included in the student Intranet as a module and will thus include elements of modular design.  The program will also include modules that allow the user to perform operations on matrices and lists, although these modules are not necessary for the 3D graphics part of the project.
\\This project is worth doing because it allows researchers to compare the
graphics capabilities of Java with those of other languages.  The groups who will be interested in the results are TJ students who need a program to graph functions and researchers who want to compare the graphics capabilities of Java with those of other languages.
\par
{\bf Keywords:} 3D graphics, modular design
\end{abstract}
\section{Introduction}
	\subsection{Scope of Study}
	The scope of this program is to use homogeneous coordinates and matrices to perform various operations on the graphs, such as stretches and rotations.  The part of the function to be graphed will be determined by a set of bounds inputted by the user.  After graphing the function, the user can calculate numeric derivatives or integrals of the function and find the intersection between two graphs.  In order to input the function, the program will create a binary expression tree and substitute in values of the independent variables to determine the value of the function at various points.
	\par
	This project will also include a list editing module so that the user can perform statistical operations on lists (such as finding the mean, standard deviation, etc).  Another module will include a matrix editor, which will allow the user to create matrices and perform operations on them (such as matrix multiplication, row reduction, finding the inverse of the matrix, finding the determinant, transposing the matrix, etc).
\section{Background and review of current literature or research}
Previous projects concerning this area of research include 3D Modeling by C. Fralick, 3D Virtual Environment by S. Durant,  The Investigation of Graphics in the Processing Language by J. Trent, and TJForge Iodine for the modular programming component.  The 3D graphics projects seemed to use rotation matrices, such as the 2D matrix [[cos(a) -sin(a)] [sin(a) cos(a)]], to rotate graphs by an angle a.  Iodine used HTML to program in the modules.  Possible state-of-the art programs could be MatLab or other computer algebra systems or even the 3D-graphing feature of the TI-89.
\section{Procedures and Methodology}
During the first quarter, I hope to create a basic calculator so that I can make sure the code for creating and evaluating binary expression trees is functioning properly.  During the second quarter, I plan to work on my matrix editor module (and if possible, the list editor module).  For the first two or three week section, I plan to work on the editor GUI to make sure it displays properly.  After that, I plan to work on three or four matrix-related operations during every section.  During the third quarter, I plan to work on the actual graphing module.  The first section will be devoted to working on the GUI, and each subsequent section will be devoted to graphing operations (such as rotations, projections, stretches, shrinks, etc).  The testing will occur as I program each operation to see if it works.
	\par
	The languages I need will be Java and HTML.  The resources needed could
	include test versions of the Intranet so that I could test how well the
	program modules are incorporated into the website.  I also might need
	textbooks on 3D graphics (such as OpenGL books) so that I can program
	the rotation matrices.  The visuals I can use include the actual graphs that are displayed.
	\par
	All input will come from the user, and can include 2-variable functions
	for the graphing module, matrices for the matrix module, and arithmetic
	expressions for the calculator module.  I will be using dynamic testing (using random inputs that hopefully encompass all possible inputs) to see if the program works.  I have yet to decide on what type of timeline I will use.
	\par
	The algorithms I'll use involve infix recursion to evaluate the binary expression tree.  When I create the tree, I'll use a specific order of operations to break the input string up into smaller strings.  After breaking the string up, I'll create a tree that does the operation specified in the string and whose subtrees correspond to the substrings.
\section{Expected Results}
The only results I'm currently expecting are to have a fully functional program that does all of the tasks stated above by the end of the third quarter.  In terms of runtime efficiency, I expect my program to run slower than programs written in other languages because it's written in Java.  I'm also unsure about how to present my program, other than just putting it up on the Intranet.  Possible areas for future research include writing 3D graphics programs in other languages, such as Python and C.
\end{document}