---
title: "Step 4 - Defining foot events"
canonical: "https://help.vicon.com/space/ProCalc16/12650939/Step%204%20-%20Defining%20foot%20events"
format: markdown
---
This step automatically defines foot strike and foot off events. You can do this in many ways, so the following suggestions are not scientifically validated, but are chosen to demonstrate how this *could* be done in ProCalc.


    **To automatically define foot events:**


1. To define some new variables, ensure that you have saved the Events scheme, click the **Variables** tab and then click the > Macro (inline-media-image)

 button to edit this scheme again.
2. Click > Macro (inline-media-image)

 and type **LeftFootLine**, group **Line** and function **From point A in direction of vector B**.
3. For Variable A select the **LHEE_Lower**, and for B, change the default type from **Vector** to **Segment** and choose **LeftFoot**. As a segment is not a vector, you also need to choose a sub-component, so from the **XYZ** menu, choose the **Y** component. This then uses the Y-axis of the foot's coordinate system as the direction for the line, which corresponds to the forward axis of the foot.
4. Add another variable, and name it **LeftFootLineIntersectsFloor**, group **Point** and function **Intersection point of plane A and line B**.
5. As variable A, choose the pre-defined **Floor Plane** variable, and as variable B choose the **LeftFootLine** that was just defined.   
A point appears on the floor where the foot line intersects it. Note that if the foot is on the ground, this point is very far away and may not be visible. However, as foot off approaches, it should appear on the ground right in front of the foot.
6. The idea is to define the foot off event when the distance to the floor along the foot line attains its minimum. To do this, add another variable, call it **LeftFootToFloorDistance**, choose group **Distance** and function **Distance: A to B**, then A = **LHEE_Lower** and B = **LeftFootLineIntersectsFloor**.
7. Save the scheme.
8. On the **Events** tab, edit the Events scheme and add a new event. This time, instead of choosing a Custom Event, choose **Left Foot Off**.
9. As we want to trigger this event using the variable we just calculated, for the **Event triggered by:** choose **Length** and **LeftFootToFloorDistance**.
10. For the **Add at**:, choose **Minimum value**.   
A single event is displayed on the time bar – this is where the length attains its minimum value for the entire trial.
11. If you wondered why we defined the mid-swing events, this may now start to make sense. We would like to define the foot off event once for every cycle, in other words – every time our distance attains its minimum between the right mid swing and the left mid swing. We therefore select the **Only between Events** option and then select **RightMidSwing** and **LeftMidSwing**.   
All the toe off events are displayed in the 3D workspace:  
> Macro (inline-media-image)
12. In the same way, you can define the foot strike events as the minimum distance between the foot line and the floor, but between LeftMidSwing and RightMidSwing instead of the opposite way around:  
> Macro (inline-media-image)
13. To produce the equivalent on the right side, copy and mirror these events.

Note that this is not a very sophisticated way to define foot events, and it will not work for runners who strike the ground flat-footed, but it works for the example data and allows us to proceed to the next step, which is calculating parameters.