View source: R/frontal_plane_kinematics.R
add_frontal_plane_projection_angle | R Documentation |
add_frontal_plane_projection_angle()
adds the frontal plane projection angle to a tibble. Negative values implies dynamic knee valgus.
mocapr
calculates the angle in the anatomical planes rather than using global coordinates. You must, therefore, likely run the function project_full_body_to_AP()
in order
to obtain the joint center positions in the anatomical planes that are nescceary in order to compute the the frontal plane projection angle.
The naming convention for the frontal plane projection angle differs in the litterature,
the measure has also been named the frontal plane knee projection angle and the frontal plane knee angle. It was originally described by McLean et. al as
the frontal plane knee angle, and calculated using global coordinate positions of lower extremity joint centers.2D vectors were computed from the knee to hip centre (kh)
and from the knee to ankle centre (ka). The cross product and vector norms were computed from the global coordinates, and the frontal plane projection angle was computed as:
add_frontal_plane_projection_angle(.data)
.data |
A tibble that must contain lower extremity spatial joint postions in the anatomical plane (please see |
\Theta = aSin( |kh x ka| / |kh||ka| )
Please note that the frontal plane projection angle has been developed for 2D video analysis of motions that do not involve the height of hip joint being
at the level of the knee joint of lower (e.g. single-leg-squats). Due to planar cross talk, the projected kinemtics produce high, and potentially misleading, values when the height of the hip joint
approaches that of the knee joint. The frontal plane projeciton kinematics are likely only usefull for analyzing motions that do
not involve deep positions of the pelvis (e.g. single-leg squats, gait etc.).
Please see examples for further detail.
The tibble supplied in the .data argument with two extra columns (LFPPA and RFPPA).
McLean SG, Walker K, Ford KR, Myer GD, Hewett TE, van den Bogert AJ. Evaluation of a two dimensional analysis method as a screening and evaluation tool for anterior cruciate ligament injury. Br J Sports Med. 2005;39(6):355-62.
Harsted S, Holsgaard-Larsen A, Hestbaek L, Boyle E, Lauridsen HH. Concurrent validity of lower extremity kinematics and jump characteristics captured in pre-school children by a markerless 3D motion capture system. Chiropr Man Therap. 2019;27:39.
Willson JD, Davis IS. Utility of the frontal plane projection angle in females with patellofemoral pain. The Journal of orthopaedic and sports physical therapy. 2008;38(10):606-15.
# Prepare data
df <- data.frame(
LH_APR = c(10,10,10, 0,10,20),
LK_APR = c(10,10,10,10,10,10),
LA_APR = c( 0,10,20,10,10,10),
LH_APU = c(30,30,30,30,30,30),
LK_APU = c(10,10,10,10,10,10),
LA_APU = c( 0, 0, 0, 0, 0, 0),
RH_APR = c(10,10,10, 0,10,20),
RK_APR = c(10,10,10,10,10,10),
RA_APR = c( 0,10,20,10,10,10),
RH_APU = c(30,30,30,30,30,30),
RK_APU = c(10,10,10,10,10,10),
RA_APU = c( 0, 0, 0, 0, 0, 0))
add_frontal_plane_projection_angle(df)
# Example to view L and R FPPA
df <- mocapr::mocapr_synthetic_data
df <- dplyr::filter(df, sample == 2)
df <- add_frontal_plane_projection_angle(df)
animate_anatomical(df,
planes = "R",
return_plot = TRUE,
col_facets = col_fa,
row_facets = row_fa)+
ggplot2::geom_text(ggplot2::aes(label = paste0("LFPPA: ", round(LFPPA, 1)),
x = mean(value)-15, y= max(U)+10), color = "black", size = 3)+
ggplot2::geom_text(ggplot2::aes(label = paste0("RFPPA: ", round(RFPPA, 1)),
x = mean(value)+15, y= max(U)+10), color = "black", size = 3)
# Explore the planar cross talk at deep positions of the hip-joint centers.
df2 <- dplyr::filter(mocapr::mocapr_synthetic_data, sample == 2)
df2 <- add_frontal_plane_knee_angle(df2)
df2 <- add_frontal_plane_knee_deviation(df2)
df2 <- add_frontal_plane_projection_angle(df2)
animate_anatomical(df2,
planes = "R",
return_plot = TRUE,
col_facets = col_fa,
row_facets = row_fa)+
ggplot2::geom_text(ggplot2::aes(label = paste0("LFPPA: ", round(LFPPA, 1)),
x = mean(value)-15, y= max(U)+30), color = "black", size = 3)+
ggplot2::geom_text(ggplot2::aes(label = paste0("RFPPA: ", round(RFPPA, 1)),
x = mean(value)+15, y= max(U)+30), color = "black", size = 3)+
ggplot2::geom_text(ggplot2::aes(label = paste0("LFPKA: ", round(LFPKA, 1)),
x = mean(value)-15, y= max(U)+20), color = "black", size = 3)+
ggplot2::geom_text(ggplot2::aes(label = paste0("RFPKA: ", round(RFPKA, 1)),
x = mean(value)+15, y= max(U)+20), color = "black", size = 3)+
ggplot2::geom_text(ggplot2::aes(label = paste0("LFPKD: ", round(LFPKD, 1)),
x = mean(value)-15, y= max(U)+10), color = "black", size = 3)+
ggplot2::geom_text(ggplot2::aes(label = paste0("RFPKD: ", round(RFPKD, 1)),
x = mean(value)+15, y= max(U)+10), color = "black", size = 3)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.