9 of 17 added 457 characters in body

Curve fit based on minimal data

Inspired by the fantastic answers here and here, I would like to ask a questions along similar lines.

I have 6 curve types

enter image description here

that follow these rules:

  • Type A: If point 1 is positive and point 2 is negative, the curve will not pass through the origin.
  • Type B: If point 1 is negative and point 2 is positive, the curve will pass through the origin twice.
  • Types C-F: If both points are positive or both points are negative, the curve will pass through the origin once.

The curves are basically partial (and skewed to some degree) limaçons:

enter image description here

What is known:

  • The coordinates of points 1 and 2.
  • The gradient of tangents at points 1 and 2.
  • The approximate curve type (limaçon).

What is not known:

  • The arc length.
  • The degree of skew.

Data for A-F:

(* A *) {{0.000564367, 0.690525}, {-0.000689501, -0.984192}, 3.03065, -1.95699}
(* B *) {{-0.000689501, -0.984192}, {0.000664785, 1.07289}, -1.95699, 1.82419}
(* C *) {{0.000179304, 1.61576}, {0.0000936314, 0.852042}, 1.15014, 3.52804}
(* D *) {{0.000116063, 0.431337}, {0.000443491, 1.70111}, 2.88997, 1.41834}
(* E *) {{0.0000347276, 0.190688}, {0.000190634, 1.06651}, -3.77228, -2.08792}
(* F *) {{-0.000432719, -1.90935}, {-0.000142565, -0.645011}, -1.36691, -1.927}

in format: {{point 1}, {point 2}, gradient of tangent @ point 1, gradient of tangent at point 2}

Is it possible to estimate a curve fit (and hence arc length & skew) with only the data given?

Update

By adding a point onto the data (one roughly in the middle of the curve, between points 1 & 2), using ybeltukov's code from here and adjusting the spline tolerance accordingly plots

enter image description here

for plot A. How would I adjust the red spline angles from points 1 & 2? I think this would make some headway into the problem.

Points on curves A-F (approximately half way around) are as follows:

{{{2.84516, -0.00214226}}, {{0.925243, -0.000607748}}, {{2.74249, -0.000302848}}, 
{{1.22693, -0.000324907}}, {{2.06, -0.0004197}}, {{1.30599, -0.000292263}}}