Overview. This assignment focuses on using numerical integration to simulate
physical systems that follow well-known rules. Our focus will be on phenomena
which are well described by Partial Differential Equations (PDEs) such as simple,
physically-based models of rope, cloth, and water.
This assignment has two parts. In the check-in assignment due next week (Oct 9),
you will need to write a basic numerical integration library. For the project (Due,
Oct 19), you will need to create a physically-based simulation.
You must work alone for part 1 (the homework check-in), but you may work with a
partner for part 2 (the simulation project) – just one project turn-in needed per pair.
Part 1: Homework Check-in [100 points]
For the homework check-in associated with Project 2, you will need to implement a
numerical integration library in Processing, some sample code will be provided to
help you get started. We have implemented Eulerian integration, RK4, and Heun's
method for you, you will need to implement the midpoint method. You will also
need to implement a special version of both midpoint and Eulerian integration
which returns a list of all values computed in integration.
You may not use any external libraries for part 1.
Part 1 has three turn-in requirements.
1A. Complete the code
Add the integrator for the midpoint method, and the version of Euler, midpoint,
which returns a list. You will only need to turn in Integrator.pde, but you will need
to edit the dxdt() and actual() functions in GroundTruth.pde to test your method on .
1B. HW2 Integration Online Questions
First, use your library to answer several integration questions posted here:
https://canvas.umn.edu/courses/194320/quizzes/329800
These questions will ask you to integrate various functions and report how much
error you get using a specific numerical integration technique vs the ground truth.
Note, computing this answer will require you to figure out the ground truth for each
of these differential equations.
-1
-0.5
0
0.5
1
1.5
0 1 2 3 4 5 6 7 8 9 10
dy/dt = cos(t)
Euler Midpoint RK4 Actual
1C. Graph of integration ∫sin(t) + tcos(t)dt for various techniques Second, consider the differential equation: dx/dt = sin(t) + tcos(t)
Using the initial condition x(0) = 0, and Δt = 1, integrate to approximate the true
value from 0 to 20.
Submit an image (any common format is ok) showing a graph of the following:
-The true function
-The approximation using Eulerian integration
-The approximation using midpoint integration
-The approximation using RK4 integration
You only need to make this graph for the one function given above:
dx/dt = sin(t) + tcos(t), comparing the ground truth and the three integration methods. Here is an example on a different function. Submit a zip file with both your image and Integrator.pde to the canvas turn in. Part 2: Simulation [100 points] You will need to write a rope/cloth simulation of multiple threads interacting with their environment in a smooth and natural fashion. For additional credit, you can implement a full cloth simulation or explore continuum fluid models. Required components are indicated with a star ().
Multiple Ropes (at least 2D)* (up to 50 points).
Extend the rope implementation shown in class to support multiple independent
ropes which all hang and swing freely. The ropes need to support one-way
interaction with an obstacle (e.g., a circle) by falling naturally on the obstacle. To get
all of these points, your implementation must produce smooth, natural looking
swinging behavior. Getting this behavior will require tuning your simulation
parameters, please save time for this step.
Cloth Simulation (up to 20 points).
Extend your rope simulation to include horizontal springs that bind ropes to each
other in order to make a full cloth simulation. The cloth needs to support one-way
interaction with an obstacle (e.g., a ball) by falling naturally on the obstacle. To get
all of these points, your implementation must produce smooth, natural looking
swinging behavior. Getting this behavior will require tuning your simulation
parameters, please save time for this step. [This will also count as multiple ropes.]
Air Drag for Cloth (up to 10 points).
Include an air-drag term in your cloth simulation using the method discussed in
class. Compare the results with and without drag.
3D Implementation & Rendering (up to 20 points).
Update your ropes or cloth simulation to be in 3D. To get full points here you need
both smooth 3D motion and high-quality 3D rendering with a natural camera that
allows the user to navigate around the scene from different angles and positions.
Try to use texturing and lighting to improve the rendering.
User Interaction (up to 10 points).
These points come from user interaction direction with the simulation itself (not
from controlling the camera). To get full points, the user should have a clear,
smooth, and natural way to interact with the ropes/cloth. Discrete interactions such
as toggling some behavior on/off will only receive a couple of points. Look for
continuous interaction such as allowing the user to move an obstacle with the
mouse.
Realistic Speed (up to 10 points).
Match your simulation to a reference of your choice (e.g., hold one end of a thread
and time how long it takes the other end to drop). If your simulation moves as
quickly as real threads, you’ll get full credit. Slower simulations will receive partial
credit.
Ripping/Tearing (up to 10 points).
Rip or tear the cloth/rope when the forces get too large.
Continuum Water Simulation (up to 20 points).
Using a continuum-based method, like the Shallow Water Equation, to create a 1D or
2D water simulation.
Art Contest
If you generate a pretty image (even by accident), save it to submit to the class art
contest. A pool of honorable mentions will be given 2 points, and the grand winner
gets 5 points. All winners will be chosen completely subjectively.
Part 2 Project Report & Video* (10 points).
Your submission must be in the form of webpage with:
• Images of your particle systems
• A brief description of the features of your implementation and timestamp
of where they occur in your video(s).
• Code you wrote
• List of the tools/library you used
• Brief write-up explaining difficulties you encountered
• One or more videos showcasing features of your simulation
• Submission for the art contest (optional)
These 10 points for the submission itself will be based on the clarity of expression of
the report, and to the degree which it quickly communicates what you tried, what
worked well, and what didn’t.
Additionally, each feature you expect to get credit for must be documented in your
submission videos in a way which clearly shows the resulting behavior. If you do not
show a feature in your submission video(s) you will not receive credit for it.
Part 2 Grading Criteria
Simulations must animate well and look convincing to get full credit. Partially
implemented features will receive partial credit. Points past those needed for full
credit will count as extra credit, though at a discounted rate (see Scoring below). If
you do other things you think are cool and worth credit let me know beforehand
and be sure to document it in the report.
Use of other code and tools
Anything you are getting credit for must be code you wrote for this course. You
must write the code for the simulation yourself! External libraries may be used for
aspects that are not related to simulation (e.g., rendering, camera motion, video
capture) just be sure to document that you used these.
Partners & Groups
You are strongly encouraged to work in pairs for the project. Each pair should turn
in only one assignment. Both people will be given the same grade. You cannot repeat
the same partner from a previous project.
Project Scoring
Partial credit will be given. Scores computed as follows (points above 100 possible):
-Undergraduate: Grade is √(totalPoints * 100) [e.g., 100 points will be full credit]
-Grad students: Grade is √(totalPoints * 84) [e.g., 120 points will be full credit]
*Extra credit will only be given to assignments with at least an A- on the required
features.
Sample Solution