0
$\begingroup$

I have coordinates as a list, and I can fit it almost perfectly with an equation. I'm just curious as to how I can find the curvature of this arc. I've tried using ArcCurvature, but I'm not sure how to use it in the correct way. Any help is appreciated.

The list, graphed out, and the fitted model:

list = {{54.5, 120.5}, {65.25, 143.15}, {65.61, 143.02}, {76.18, 
    157.28}, {89.89, 176.76}, {98.08, 184.87}, {98.33, 
    184.44}, {118.5, 197.5}, {140.77, 205.74}, {150.96, 
    207.06}, {163.11, 206.07}, {169.09, 204.77}, {177.07, 
    202.8}, {181.14, 201.13}, {182.41, 200.47}, {194.65, 
    192.49}, {201.47, 188.95}, {209.02, 182.56}, {209.21, 
    182.86}, {222.11, 172.77}, {230.93, 161.53}, {230.96, 
    161.51}, {245.51, 141.75}, {257.03, 124.18}, {257.23, 
    124.53}, {261.71, 114.96}, {261.72, 114.91}, {267.16, 
    104.41}, {267.29, 104.07}, {280.45, 72.62}, {280.63, 
    72.34}, {283.35, 63.57}, {286.5, 48.5}};
fit = NonlinearModelFit[list, a*(x + c)^2 + b, {a, b, c}, x];
Normal[fit]
ListPlot[list]
Show[ListPlot[list], Plot[fit[x], {x, xmin, xmax}], Frame -> True]

Output:

Output

$\endgroup$
2
$\begingroup$

Look up ArcCurvature in the documentation. It takes a list of coordinates as a function of a parameter. It returns the expression in that parameter, so you need to get that first before replacing numerical values:

list = {{54.5, 120.5}, {65.25, 143.15}, {65.61, 143.02}, {76.18, 
    157.28}, {89.89, 176.76}, {98.08, 184.87}, {98.33, 
    184.44}, {118.5, 197.5}, {140.77, 205.74}, {150.96, 
    207.06}, {163.11, 206.07}, {169.09, 204.77}, {177.07, 
    202.8}, {181.14, 201.13}, {182.41, 200.47}, {194.65, 
    192.49}, {201.47, 188.95}, {209.02, 182.56}, {209.21, 
    182.86}, {222.11, 172.77}, {230.93, 161.53}, {230.96, 
    161.51}, {245.51, 141.75}, {257.03, 124.18}, {257.23, 
    124.53}, {261.71, 114.96}, {261.72, 114.91}, {267.16, 
    104.41}, {267.29, 104.07}, {280.45, 72.62}, {280.63, 
    72.34}, {283.35, 63.57}, {286.5, 48.5}};
fit = NonlinearModelFit[list, a*(x + c)^2 + b, {a, b, c}, x];
{xmin, xmax} = MinMax[list[[All, 1]]];
k = ArcCurvature[{t, fit[t]}, t] 
Plot[k, {t, xmin, xmax}]
Show[ListPlot[list], Plot[fit[x], {x, xmin, xmax}], Frame -> True]

curvature plot

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.