My name is William Shipe a Texas Wesleyan computer science undergraduate and this is my senior design project. A little about me is that I was born and raised in Texas. Living not to far away from Fort Worth. After highschool I enlisted in the U.S Army in the spring of 2015 and went to boot camp that fall. I got out right before the fall of 2019. Where I immediately enrolled into Tarrant County College then transfered to Texas Wesleyan in the spring of 2021.
During this time I looked into graphic software mostly OpenGl but this isn't the only choice. There are others like Vulkan, X12, and metal3 for apple. I chose Opengl due to the fact that I'm taking Computer Graphics and want to dive a little deeper than we do in class. Then run a graphical simulation for the the user to pick from. The first step is to create a menu for the user to interact with. There are a few ways to allow the user to manipulate a graphical user interface (GUI).
Specifies a coordinate position
Specifies a set of coordinate postions
Specifies a typed input
Specifies a scalar value
Allows for selecting a menu option
Allows for selecting a componet of a picture
All of these interfaces can be assigned to certain physical inputs such as voice commands, keyboard and mouse, or any other device that could connect to a computer. There are a few types of input modes to be aware of first is request. This mode will only run the program after the user has given all the details for the program. Second is sample mode in which the program and inputs are independent of each other and operating at the same time. The program pull in new input values from the user each time the user inputs new values. Lastly is the event mode. Which just as sample mode both the program and input run together. However the input data is stored into an event queue. When the program needs new data it will pull that new data from the event queue. Unlike the last two mode which allow for concurrent execution of the program and data input. The first mode has the drawback of upfront declration before execution.
This segment of time was on rendering a three-dimensional object. There are multiple ways of create objects in in OpenGL. First is programing in geometric formuals and letting the user adjust it's values. Second is calling GLUT functions such as glutWireSphere() or glutSolidSphere(). The only difference between these functions is one word "Solid" and "Wire". When rendering GLUT function it can be hard to tell as solid 3D-shape from a 2D-shape. What do I mean by this you might ask? This is all starts on creating are "Viewing Volume" and the position of the "camera" to see the objects in space. If the camera postion is postioned in such a way that its viewing the object strait on the shape will look two dimensional that three dimensional. But once the camera location is programed to a different spot. The shape is given a new look with the intended perception. That is why the glutWire function is used to mock up three dimensional shapes in OpenGL programing.
One issue that I have come upon is window resizing. This is a issue that must be over come so the program can still operate as normal. Imagine a magnifying glass in that once the right distance is established everything is as it should be. However when said mafnifying glass is moved closer towards or away from its original starting position. The objects that were there need to be adjusted accordingly. So they don't become to large or small for the lens to pick up. Hopefully the analogy was useful if not try to find a book, someone, or YouTube video for better understanding.
Must confess that I've not taken physics or geometry in very long time. So I've taken this time to refresh my knowledge on these subjects and how they apply in OpenGL. A lot of the math that is used in OpenGL pertains to Linear Algebra with matrcies. If you'vetaken Linear Algebra or have no concept of it. OpenGL has function for applying such geometric transformation with GLROTATE and GLTRANSLATE. Even though you have access to these functions the order of when they are call or used matters. If you translate your object or shape then rotate it. That object will translate to than new position then rotate in place at that new spot. On the reverse application where you rotate then translate. Your shape or object will rotate around the axis you have declared. So be careful on implimentation and order.
In conclusion my approach to my senior project was to get a fundamental understanding of computer graphics and animation. Which I think was achieved to some degree on working on this project. Some of the features of the video displayed above are only the beginning. There are many projects that have a similar vision than your own out in the world or that have yet to started. Mine was in the former catagory there were similar projects out in the world. But more can be learned building from nothing than which was already built. This is only the start who knows where this road will go. Thanks for reading my project report.