Last edited 11dec14 by
Find this document at

Fencing Woman: Articulated Animation in VPython 2014

Katie Bora

Math 198 Fall 2014



For the past two years, I have fenced epee as a part of the UIUC Fencing Illini. I was a first time fencer when I began here at the university, and I am very familiar with the importance of mastering the basics of fencing. The basics include En Garde, Advance, Retreat, Extend, and Lunge. These positions and moves are at the heart of fencing. En Garde is the traditional fencing stance. To stand in En Garde, the feet are shoulders width apart, the dominant foot is pointed forward and is perpendicular to the non-dominant foot that is pointed to the side. The knees are slightly bent as if sitting on a stool, and the body faces forward. Advance is how fencers move forward, and Retreat is how fencers move backwards. Extend is extending one’s weapon into the target. Lunge is when a fencer lunges to attack their opponent. I am going to create a visual demonstration of the Advance Lunge. This graphic will be created using VPython. Below are two images of me demonstrating En Garde and Lunge.

En Garde Image


Lunge Image


Weekly Updates

Week 8

I wrote and edited my proposal for my project and began to experiment with making basic shapes in VPython. I also continued learning how to use LaTex by using TexWins to write my proposal. These documents can be found in the "Documentation" section below.

Week 9

This week I created the basic body for my fencing woman. I started by looking at code from old Math 198 projects using the blobby man animation. Specifically, I studied Punching Man, Workout Guy, and Bicycle Man. I was able to access the code for Workout Guy, so I borrowed the code. From here, I began to make the code my own by first adding a weapon to the blobby man animation. I did this by adding a bell guard and blade in the right hand. Then, I delved into experimenting with rotations. I attempted to rotate the body into the En Garde and Lunge position. I also learned about articulations and studied the use of frames in VPython to hopefully animate my fencing woman in the coming weeks. In addition to this, I recorded a video of myself performing the Advance Lunge.
  • My Fencing Demonstration Clip FencerMovie.
  • Week 10

    This week, I worked on creating my fencer. I began to use rotations and move my fencer into the En Garde and Lunge positions.

    Week 11

    I created my math seminar, which can be found in the "Documentation" section below. In my seminar, I explain the concepts of articulations and frames. I also created a tree of my fencer's frames. I am continuing to work on my fencer.

    Fencing Woman Frames


    Weeks 12-15

    I spent these weeks making my fencing animation. I started off by modifying the body for my fencer. I changed from using the code for Workout Guy to the code from Punching Man. I made this change because when I was using the code from Workout Guy, I was rotating the standing body into the En Garde position. The problem I was encountering was that in order to get the fencer to Advance and Lunge, I had to add a second rotation, and it began to get to complicated. Also, I was struggling with finding the angles to rotate the arms into the correct Lunge position and the hips into the correct En Garde position. By switching to Punching Man, I created the initial position of the body to be En Garde. Instead of rotating a standing body into En Garde, I positioned the joints and limbs into the En Garde position. From here, I simply had to have one rotation into the Lunge. Once I had the correct rotation, I began to work on getting the fencer to animate from En Garde to Lunge. I accomplished this by creating a Lunge function. From here, I used a horizontal translation as the Advance and the forward motion of the Lunge. The translation defined as an Advance function. I then combined both motions by defining a forward function. To get my fencer to Retreat, I did a similar process, but reversed. Once I had my fencing woman able to Advance, Lunge, and Retreat, I worked on creating the opponent. I accomplished this by creating a second wire frame within the world frame and coping the code for the body of my original fencer. I then rotated the torso frame of the second fencer by pi to have it face the Advancing and Lunging fencer. I finally concluded my project by adding in a key press to start my animation and moving the world frame to better view the animation.

    En Garde




    Opponent and Angled World View


    Week 16

    This week I made the final touches on my website. I added a gif animation of my project, as seen at the top of my website. I also wrote my final documentation found in the "Documentation" section. Finally, I created the PowerPoint for my final presentation. This is also found in the "Documentation" section.