🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: sci.math.num-analysis
Article #264

fitting circle to data points on small arc

#264
From: Michel T Jackson
Date: Thu, 09 Apr 1992 00:36
52 lines
3014 bytes
Dear whomever,

I have a problem that has turned out to be harder than expected.  The problem
is estimating the parameters of the best-fit circle given a set of
modestly noisy points along a short arc.

The situation arises in attempting to numerically estimate the radius and
position of the center of rotation of the lower jaw while it is moved up &
down in the  "terminal hinge postion" (try clenching your teeth while pulling
your jaw all the way back.  If you then wiggle your jaw up & down a few
millimeters, you  will have executed a close-to-pure rotational motion.  Any
more than a few mm results in the translation of the mandible as well).  We can
fit a rigid splint to the lower teeth, and track its position while it
executes this small rotation.  Typically, the radius (i.e., distance from the
"hinge point" to the lower teeth, or tip of the splint) is on the order of
10-15 mm; the angle subtended by the arc is on the order of 10-15
degrees.

It is possible to solve this problem easily if the data are
noise-free (I've fooled around with simulated data in Matlab, using SVD
methods, & gotten back answers correct to 8 places). I do this by
setting up the following system:

[x y 1]  [a b c]' = -[ (x.*x) + (y.*y) ]

(x, y column vectors; .* is the "elementwise product" operator in
Matlab) and solving for a, b, & c.

However, even small amounts of noise (i.e., adding 0.2*rand(xydata) to
xydata, when xydata was generated using a radius of 10 mm over a 10 or
15 degree arc) produces large errors in the answers.  Evidently, this
is a poorly conditioned system (again, fooling around with Matlab has
revealed condition numbers on the order of 10,000).  It is poorly
conditioned (I think) because the small angle covered during the
rotation, together with the relatively large radius, results in little
variation in e.g. xs relative to ys (for jaw positions near horizontal).

I've found one reference to a paper on solving this problem (or
something closely related) - except that it was a Bell Labs internal
manuscript of some sort, & I haven't had any luck locating it.  I
would have thought that there was some way of exploiting the specific
properties of this data, but i haven't thought of it.

Any suggestions that you have will be welcome.  email me
at either of the addresses below if you want to keep net bandwidth down.

jackson@shs.ohio-state.edu
mjackson@magnus.acs.ohio-state.edu

Thank you,

     Michel Jackson
Technical Details
Message-ID: <1992Apr9.003631.1350@magnus.acs.ohio-state.edu>
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!magnus.acs.ohio-state.edu!mjackson

Show Full Headers
Complete Article Headers
Newsgroups: sci.math.num-analysis
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!magnus.acs.ohio-state.edu!mjackson
From: mjackson@magnus.acs.ohio-state.edu (Michel T Jackson)
Subject: fitting circle to data points on small arc
Message-ID: <1992Apr9.003631.1350@magnus.acs.ohio-state.edu>
Followup-To: sci.math.num-analysis
Sender: news@magnus.acs.ohio-state.edu
Nntp-Posting-Host: top.magnus.acs.ohio-state.edu
Organization: The Ohio State University
Distribution: na
Date: Thu, 9 Apr 1992 00:36:31 GMT
Lines: 52