ME 1040 – Engineering Programming with Matlab
Spring 2019
Due Date: Saturday May 4th at 5:00 pm (End of Finals Week)
The purpose of this project is to combine many of the skills learned in class into one graphical user interface. This
interface should be easy to read, organized, and free from errors. Teams of two are permitted for this assignment.
Upon starting the app, the user can choose from at least SIX different programs:
1) Vector Decomposition App
2) Curve Fitting Toolbox
3) Target Shooting App**
4) Visual Derivative App*
5) Visual Integral App*
6) Image Manipulation App**
7) Clock App**
8) Forced Response Vibration App*
Upon closing any of the above apps, the start screen is automatically displayed again. Each app will be discussed
in detail below. “Stars” above indicate difficulty.
Vector Decomposition
This app should be capable of accepting vector information either manually or from an excel spreadsheet in either
rectangular or polar form. Upon receiving the data, all vectors can either be plotted “tip-to-tail” or all originating
from the origin. In tip-to-tail mode, the resultant is also plotted.
Curve Fitting Toolbox
Similar to the built in “Basic Fitting” in Matlab, this app should allow the user to import or define data points and
fit a curve of their choice. The app should also display goodness-of-fit metrics and coefficients. It should be
possible to fit reduced order polynomials as well.
Target Shooting
This app will accept an angle and animate a projectile trying to hit a randomly generated target. The target should
only stay in the same spot for short amount of time. The app tracks how many successful shots are completed in
a timed round. Upon hitting the target, an explosion is seen on the screen and the app can be reset at the end of
the round. Difficulty can be adjusted by how long the target stays in one spot.
Visual Derivative
The visual derivative should depict what happens as “h approaches zero”. The user should be able to plot a
function of their choice, choose at which point the slope is desired, and see the estimate that the derivative gives
as the real slope is approached. The user should be able to use a knob/slider to change delta h and visually see the
slope converging.
Visual Integral
The visual integral should depict what happens as more simple shapes are used to estimate the area under a curve.
Choice of function is up to you, but sin/cos work well. See demo in class. Have the user be able to choose
rectangles, trapezoids, or quadratics to estimate the area. Display the actual exact area and also the “current area”
using a prescribed number of shapes.
Image Manipulation
This app should be allow the user to upload an image of their choice and be able to change its visual properties.
This would include colors (RGB), contrast, and brightness. Upon applying the “filter” of their choice, these
settings are saved to a txt file. This txt file is also able to be imported and applied to new images.
Clock
This app includes a current ticking clock (analog and digital), a timer function, and a stop watch. You app basically
contains all of the capability of a Timex wrist watch.
Forced Response Vibration
This app allows the user to enter mass, stiffness, and damping coefficients along with the frequency and amplitude
of a sinusoidal forcing function. The app would display the response of the system and produce warnings about
resonance. Presets could easily show different scenarios. Capability to export the response should be included.
Custom
If you have an idea for an app, please submit a write up describing the functionality, user inputs, display features,
and programming components. Also include a basic sketch of what the app might look like. This needs to be
submitted NO LATER than two weeks before the due date for approval.
I will be actively trying to “break” your app. I will click buttons out of order, during loops, and at times that do
not make sense. It is your job to test your app and eliminate errors or scenarios that produce errors. Be creative
and do not use all the default settings. Choose colors/fonts/sizes that make your app stand out. No two apps should
look the same. Each app will be graded out of 15 points:
• Functionality (5 points) – Does your app work? Are there bugs? Errors?
• User Friendliness (5 points) – Is your app easy to follow?
• Aesthetics (5 points) – Are things organized well? Lined up? Easy to read? Colors? Fonts?
Finally 10 points will be assigned for “linking” apps together (5 points) and code commenting (5 points).
NOTE: Comment your code!! I will take off points for code that is not commented! Reading code is difficult