Due: Monday 4/7 10:00am
Submission name: New GH Classroom link
- Period 4: https://classroom.github.com/a/Dzq9z9T4
- Period 5: https://classroom.github.com/a/k1imMYu3
Project Description
For this project, you may create teams of 2 people. Your mission is to destroy the Death Star create a Processing program that demonstrates different physical forces, building off of the framework we have been creating in class. Your program should do the following:
- The ability to toggle on/off the wall bouncing behavior (which has been built in to all our physics programs from the start).
- The ability to toggle on/off movement.
- Reasonably model gravity (in the classical mechanics sense), drag, and the spring force. The force calculations for all three have already been done in class.
- Add one more force. The force can be rooted in reality, or something of your own invention. Regardless, calculating the force should involve some combination of an orbs mass, velocity, acceleration and external factors (which may be another orb). Calculating the force should work the same way as the others, by adding a method that returns a
PVector
to theOrb
class.- Instead of a force in the traditional sense, you can chose to model accurate orb-orb collisions. This is not the same as calculating a
PVector
and callingapplyForce
, but it will involve vector calculations betweenOrb
objects.
- Instead of a force in the traditional sense, you can chose to model accurate orb-orb collisions. This is not the same as calculating a
- Use both an array and a linked list amongst different simulations.
- Produce 5 different simulations as follows:
- A demonstration of gravity showing “planets” orbiting a central massive body. This one should use an array of orbs with a fixed central orb.
- A demonstration of the spring force that includes at least 1 non moving orb. This should use a linked list of orbs.
- A demonstration of drag that involves at least 2 or more orbs moving through at least 2 areas with different drag results.
- A demonstration of your new force.
- A demonstration that combines at least 3 of the forces.
Interface Requirements
Your program should be able to visually indicate:
- Whether movement is on/off
- Whether bouncing is on/off
- Which force(s) are currently being applied. Your program should respond to the following keyboard commands:
' '
: movement on/off'b'
: wall bouncing on/off'1'
: Setup simulation 1 (orbital gravity)'2'
: Setup simulation 2 (spring)'3'
: Setup simulation 3 (drag)'3'
: Setup simulation 4 (custom)'3'
: Setup simulation 5 (combination)
Phase 0 - Analyze & Plan
Due: Wednesday, 3/26 10:00am
Fill in the README.md file created when you make your repository.
Phase 1 - Feedback
Due: Thursday, 3/28 10:00am
Below, you will find links to all the project repositories. For this phase, I have made them publicly viewable.
- Find your project on the list. You will be providing feedback for the three projects below you, wrapping back around to the top (i.e. the last group should look at the first three).
- If you find an empty README, just move to the next one, but make sure to still look at 3.
- For each project you are reviewing:
- Read the README.md document that has been created.
- Make note of anything that stands out to you. You will be specifically required to provide 2 of each of the following:
- Things from the design that you really like. Explain why.
- Clarifying questions, either something that does not quite make sense to you, or something that you think needs further explanation.
- Suggestions, either things to add or ways to implement things already there.
- You will provide this feedback using the “Issues” section of the project GitHub repository.
- Title the issue Feedback from followed by your name(s).
- Use the following markdown template to fill in your responses:
Cool things: - - Clarifying Qs: - - Suggestions: - -
- Once you have provided the feedback, look over the issues on your own repository. Create a new document in your project repository called changes.md. The purpose of this file is to track any changes between your design document and your finished project. If you decide to change some parts of your design based on the feedback you received (or from looking at the designs of others), add them to changes.md. It should be a markdown file, but you can organize it however you’d like.
- Please leave your issues open until I tell you otherwise so that I can look at them easily.
Phase 2 - Demos & Feedback
Due: Wednesday, 4/2 10:00am
In class on Wednesday, you should have a program that performs at least 3 of your proposed simulations. During class, other students will have a chance to run your code and provide feedback, so it is important that your project is in a state where it can work..
Skills Grid:
7. Controlling Program Speed | Can set the frame rate for a processing program. | Can set the frame rate based on a specified speed. | Can control program output based on the current frame number. | Can start and stop the action of a processing program. |
9. Writing Readable Code | Uses descriptive identifiers. | Uses indentation and newlines to create more readable code, and descriptive identifiers. | Uses inline and block comments when appropriate. Uses indentation and newlines, and descriptive identifiers. | Can take a large programming task and break it up into smaller functions. |
14. Using Objects | Can declare and Object variable and instantiate an Object using a constructor. | Can use multiple Objects in a program by calling methods on appropriately declared and instantiated Object variables. | Can use Objects in a program, describe how reference variables work, and how they are different from primitive variables. | Can use Objects and accurately make heap diagrams of Object variables and data. |
25. Linked Lists | Can make a node-based object that contains references to other nodes. | Can connect node-based objects linearly and traverse them using a node variable. | Can create a linked list class with the ability to traverse the list and add/remove objects at either end. | Can create a linked list with the ability to add and delete nodes in any position. |
26. Modeling | Can create a framework for modeling forces in accordance with Newtonian mechanics. | Can translate a equation of physical forces that involve a single body into a program model. | Can translate a equation of physical forces that involve multiple bodies into a program model. | Can create an accurate model of multiple physical forces and use it in a compelling demonstration. |