程序代写案例-PROJECT 3

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
1http://www.cc.gatech.edu/~jarekJarek Rossignac ã
PROJECT 3: ICE DANCE
CS4497 Spring 2022
Your First LAST name here
Your
photo
here

Put here a nice picture
of your result
2http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Video of singing blobs
https://youtu.be/ZfLYuXi6sDI?t=6
https://artsandculture.google.com/experiment/blob-
opera/AAHWrq360NcGbw?hl=en&cp=e30
3http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Videos on duo improvisation for P2
https://youtube.com/watch?v=QjInbqxqrbQ&feature=share
https://youtube.com/watch?v=IPUnG52lY3Q&feature=share
4http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Project 3: Problem statement
Interactive tool for designing and playing an ice-dance performance.
• 2D (top view only)
Animate blobs that show position & orientation & connectivity of body, arms, feet
5http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Parts
A. Annotated (timing, figures) Piecewise-Circular Motion
B. Smooth motion of local frame, acceleration
C. Skates (feet), “inverse dynamics”
D. Arms (kinematics, sync with music/motion)
Extra credit towards A++
E. Two synchronized skaters
Variants (make proposal ahead of time)
F. Tango dancers
G. Choreography for motion of several dancers
1
01
6http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Olpympics 2022 and more
Nathan Chen: https://youtu.be/MXrOQTwX5CA?t=33 , https://youtu.be/-h0_wqfV-i8?t=31
Gabriella Papadakis / Guillaume Cizeron: https://youtu.be/gdnCP7fxR0k?t=24 ,
https://youtu.be/nbelrZHSCjU
Molly Cesanek & Yehor Yehorov: https://youtu.be/T0dHWmXdAbg
Vanessa James and Morgan Cipres: https://youtu.be/WOCuxsRnVTQ
7http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Deliverables
For each part:
• Implementation
1. Representation & initialization
2. Display/animation
3. GUI to specify & modify
4. Archive (save, load, print)
• Validation
1. Images illustrating various cases
2. Videos of GUI design/editing
3. Cool video of result
• Write-up
1. Concise, but clear & complete problem statement and its ambiguities
2. Outline of your solution (your choices, representation, operations, smoothing, interpolation…)
3. Non-trivial challenges (what was hard, how you solved it, figures, pseudocode)
4. Useful overview of relevant prior art (what exactly it teaches) and references
8http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Suggested arrangement of kissing circles
How to draw this arrangement
To fit with a margin on the canvas (full screen?)
9http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A – Nominal Piecewise-Circular Motion
1. Arrangement of 8 kissing circles
2. Graph of kissing points and arcs
• Representation and data structure
3. Traversal operators
4. Design
• Easy to use GUI to specify path (where, when)
• Synced w music, changing velocities
5. Animation
• Move the orange blob
6. Visualization
• Breadcrumbs (one per x frames)
7. Archival
• Save path for later, load…
1
01
10http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Graph of kissing points and arcs
How many centers?
How many kissing points?
How many arcs?
How to identify each arc?
How to draw a chosen arc?
Continuity of smooth motion?
Valid options for next arc?
C K
K
K
K
C
K
11http://www.cc.gatech.edu/~jarekJarek Rossignac ã
12http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Inventing a representation of this graph?
You may design your own representation or some variant of this one
In your report:
Define the problem clearly and completely
We want to represent a network of circular arcs, where each vertex connects 4 arcs, two on one
circle and two on the other. We need to support traversal cw and ccw…
Explain what you store for each arc (center, start vertex, ID of…) and how
Define access and traversal operators
Below is what I would do
13http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Roads and oriented sidewalks
Each arc is a road
Each road has 2 sidewalks
Sidewalk s is oriented with road on its left
s = tuple: {arc, start vertex, face (side)}
Sidewalk operators:
s.C = center of circle (PNT P[s.C])
s.K = kissing (tangency) point (P[s.X])
s.o = opposite sidewalk
s.n = next around face
s.p = previous around face
s.C
s.Ks.o
s.n
s.p
s
14http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Representation of network
PNT [] P = new …; // Holds circle center P[s.C] and kissing points P[s.K]
int [] C = new…; // C[s] holds s.C, center point is P[C[s]]
int [] K = new…; // K[s] holds s.K, kissing point is P[K[s]]
int [] n = new…; // n[s] holds s.n
int [] p = new…; // p[s] holds s.p
int [] o = new…; // o[s] holds s.o, and s.n.o is o[n[s]]
How to represent a particular motion …?
• Concisely?
How to edit your motion …?
• Challenging. Why?
15http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Representation of a particular motion
Boolean [] c ; // choices at junctions (same / other circle)
int [] v ; // speed on sidewalk v[]=1 slow, … v[]=4 very fast
float [] t ; // absolute time of each figure during whole routine
String [] f ; // encoding of name of figure + parameter (e.g., “S3”)
16http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Images: Motions
17http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Images: Motions
18http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Figures (at least a dozen, some more elaborate)
Some figures should involve:
• Stopping
• Executing the figure in place (e.g., spinning in place…)
• Resuming the forward motion
Use one or two letter combos for figures (stop or not, what to do) and additional
parameters (number of turns during spin)
Examples:
Rotate by -pi to skate backwards
Rotate body by +pi/2 to skate sideways
Spin cw in place with arms spread, then tuck the arms in and spin faster
Spin ccw 3 while moving with arms spread
19http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Images: Figures
20http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Images: Figures
21http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Videos of skating figures
https://youtube.com/shorts/oP152KfQt8E?feature=share
22http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Design options
How to delete/add figures or change their time?
• Use mouse and keys on Timeline at the bottom? pr
• Just-in-time while listening to the music?
How to change the speed of a sidewalk?
• User presses ‘1’, ‘2’, ‘3’, ‘4’ keys while placing the mouse on consecutive sidewalks
How to select a sidewalk use? How to know which use you selected?
Validity: No cusp when switching circles (keep moving in the same direction)
• Extra credit: While the tune plays, the user draws a path near the sidewalks and your
program guesses the sequence of sidewalks and the velocity v[s] for each.
How to edit (change) the path?
• Extra credit: While keeping it valid
Maybe too hard for you?
23http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Animation
Test: Design a motion that visits ALL sidewalks at least once some cw, some ccw …?
Advance to next sidewalk around this circle: …?
if(cw) s=s.n; else s=s.p;
Cross over to the other circle: …?
s=s.o; if(??) cw=!cw;
Provide keys to increase/decrease overall animation speed
The whole routine should be 1 mn?
Move at constant speed v[s] along sidewalk s: …?
Show figure f[s]
• First pass (debugging): only write figure name next to the skater
• Later: implement that animation of the figure
24http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Visualization
At each frame,
Advance by same distance d along sidewalk
d is computed from v[s] and the radius of the circle
Show forward velocity (tangent) vector and ellipse (dancer)
During animation
Draw previous, current, next sidewalk in blue, red, green
How to draw the whole path?
Crumbs for constant time-intervals
Color coded using a ramp
1
23
0
4
25http://www.cc.gatech.edu/~jarekJarek Rossignac ã
A: Archival
How to encode path and velocities as ?
Concise, regular, human-readable format
Implement read/write and human-readable display
Start at top of inner circle.
For example: One bit of info (Boolean) at each kissing junction
• 0 = Stay on this sidewalk
• 1 = Switch to other kissing sidewalk
Save/load to/from (named) files
Export/import from clipboard
26http://www.cc.gatech.edu/~jarekJarek Rossignac ã
B - Smooth motion of local frame
Starting from the nominal motion, produce a smooth body motion
Position & orientation and their 1st and 2nd derivatives are continuous functions of time
Gentle ease-in/ease-out stop and start
May use the ducklings row provided
At each display frame
Compute and display (colors) estimates of local velocity and acceleration vectors
Compute and display (another color) the local body frame (defined by figure)
Show body as ellipse aligned with that frame
Show ISC (instantaneous support center) (PNT) where a single skate would be placed
27http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Ducklings
Mother duck moves as programmed on the arcs
First duckling follows the mother
• How?
Each other duckling follows the previous one
The last duckling locates the body of the scater
Demo
28http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Scarf
Use ducklings
Add inertia / dynamics
29http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Instantaneous velocity, acceleration, jerk
Let A, B, C, D be four consecutive samples (position of the dancer’s body) at constant
(one 1/30 sec) time intervals
We want to define and compute a good estimate of the velocity, acceleration, and jerk
for one of them
A
B C
D
B’
B’’
30http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Velocity at vertex B: V(B)=(AB+BC)/2
Let A,B,C,D,E… be consecutive vertices in L
(A,B), (B,C),… are the edges of L
J is the unknown smooth curve passing through the vertices
When traveling along J from A to B, it takes 1 sec.
Hence the average velocity vector for that segment is AB.
Hence the velocity at B is estimated as V(B)=(AB+BC)/2
Average velocity of a 2 sec trip (A,C)
Unit tangent vector at B = AC
A
B
C
V(B)
V(B)
L
AB
31http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Normal at a vertex: N(B)=AC°
The normal N(B) at B is the unit vector orthogonal to AC.
We pick the one pointing left: N(B)= -AC°
A
B
C
N(B)
V(B)
32http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Acceleration at a vertex: G(B)=BC–AB
The acceleration at B is the velocity change G(B)=BC–AB
G(B)=BC+BA
Half acceleration = (C+A)/2 –B… smoothing strategy?
It is useful for computing forces during animation (dynamics)
Write a method for the pt class that computes the acceleration at point B
vec acceleration (pt A, pt C) {…};
A
B
C
V(B)
G(B)
33http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Radius of curvature: r(B)=V2/(2ABŸN(B))
The radius r(B) of curvature (sharpness of turn in the path) at B could be estimated as
the radius of the circle through A, B, and C, but this approach yields unexpected
results when the angle at b is acute.
I prefer to use the parabolic curvature, r(B)=V2/(2h), where V is the magnitude of
V(B) and where h is the distance from B to the Line(A,C).
h=ABŸN(B) is the normal component of g(B)
It measures the centrifugal force
Curvature = 1/r(B)
Write a method for the pt class that computes the r(B) at point B
vec radiusOfCurvature (pt A, pt C) {…};
34http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Jerk: J(B,C)=AD+3CB
It is the change of acceleration between B and C. It measures the change in the force
felt by a person traveling along the curve
J(B,C) = g(C)–g(B)
= (CD–BC)–(BC–AB) = CD+CB+CB+AB
= AB+BC+CD + CB+CB+CB = AD+3CB
To show the second-degree discontinuities in the curve,
draw the normal component of J(B,C) at (B+C)/2
Parabola extrapolator:
D = A +3BC
AD+3CB==0
“No jerk” A
B
C
J(B,C)
G(B)
D
G(C)
–G(B)
35http://www.cc.gatech.edu/~jarekJarek Rossignac ã
C – Skates (feet)
Display skates and connections to the body
If one skate is up, the other one is at ISC
If both are down, the ISC is between them (at some ratio r)
Ratio r changes smoothly
and puts the weight at the ISC when the other foot just touched the ice or will be lifted
Show support and lifted skate using shade/tone of colors…
36http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Suggestion: Smoothing the motion (body, head, feet)
Nominal path = Mother duck
First duckling tries to follow mother
D1 = D1 + m D1M pick m
Each other duckling tries to follow the previous
Dj = Dj + m DjDi pick count n of duckling
Actual body path = last duckling Dn
Estimate velocity V and acceleration G
from Dn-2 , Dn-1 , and Dn
Place head at H = D + hG
Support center at S = D = hG
And feel (L and G) around S
V
H
R
L
feet
Support center
G
37http://www.cc.gatech.edu/~jarekJarek Rossignac ã
D - Arms
Attach arms to body and move to help, beautify figures
Each arm has 3 parts, 3 angles
Use 3 caplets?
Arms need not be symmetric
Whip effect when starting/stopping a figure (rotation)
Close to body for fast spinning (oriented)
Or 3 caplets3 ellipses
38http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Figures
39http://www.cc.gatech.edu/~jarekJarek Rossignac ã
IMAGES
40http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Images: Annotated motions
41http://www.cc.gatech.edu/~jarekJarek Rossignac ã
LINKS
42http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Terminology
https://nanoka12.tumblr.com/post/182240211241/figure-skating-stepsturns
43http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Layout
https://ach-nein.tumblr.com/post/80683848672/ice-dance-technical-elements-pattern-
dances
44http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Labanotation for dance
https://www.britannica.com/art/labanotation
45http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Rules
https://en.wikipedia.org/wiki/Competition_elements_in_ice_dance
46http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Judging
https://www.isu.org/figure-skating/rules/id-handbooks-faq/26036-handbook-for-ice-
dance-officials-pattern-dances-2021-22/file
47http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Figures
http://www.skatingaheadofthecurve.com/SpecialFigures.html
48http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Abbreviations
https://www.ice-dance.com/site/protocols-abbreviations/
49http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Links: Dance language
https://www.theparisreview.org/blog/2015/02/04/how-to-write-a-dance/
50http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Extra credit: Sync with music
Synch the acquisition and the replay with music start
Start playing music and tracking the path and speed with same key press
Synch arms/feet with music
51http://www.cc.gatech.edu/~jarekJarek Rossignac ã
E - Two synchronized skaters
Symmetric around last duckling
Spinning around it
Angular velocity changes defined by user specified events
Smoothing:
Each dancer’s path smoothened by a different duckling chain?
Or angular momentum of the pair is smoothened
Annotate each arc with how the pair evolves
• Spin around each other
• Skate facing each other
• Skate side by side
• Separate and rejoin
• …
52http://www.cc.gatech.edu/~jarekJarek Rossignac ã
OTHER OPTIONS
53http://www.cc.gatech.edu/~jarekJarek Rossignac ã
G - Choreography for motion of several dancers
How to specify their motion
Avoid collision
Smooth flow when close to each other
See SAMBA paper
54http://www.cc.gatech.edu/~jarekJarek Rossignac ã
F - Tango dancers
55http://www.cc.gatech.edu/~jarekJarek Rossignac ã
Other options/ideas: Dance and more
Tool to design and visualize other dance synced with music
Aszure Barton: https://youtu.be/sI6yNILmdXM
Camille: https://youtu.be/LxdoirRXYa4
Momix: https://youtu.be/6ONrj-q2OKY
Diana Vishneva: https://youtu.be/2h2fdZ6XpR8

欢迎咨询51作业君
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468