Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Distance between point and circular segment
Date: Thu, 3 Apr 2008 13:29:03 +0000 (UTC)
Organization: AGCO
Lines: 114
Message-ID: <ft2m2v$gf5$1@fred.mathworks.com>
References: <4a2f4ac1-c21e-4ebf-8530-352f15098a47@41g2000hsc.googlegroups.com> <d122bed7-41d5-446a-8b0a-e786bdb938fb@a22g2000hsc.googlegroups.com> <fsrkeb$os2$1@fred.mathworks.com> <fsrvq5$5cu$1@fred.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: webapp-05-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1207229343 16869 172.30.248.35 (3 Apr 2008 13:29:03 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Thu, 3 Apr 2008 13:29:03 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1073303
Xref: news.mathworks.com comp.soft-sys.matlab:460815


Roger,

Does htere exist a similar closed formula for finding the 
nearest distance to a circle with three points specified 
or we may have to apeal to the idea of a langragian 
mulitplier or similar contrivance?

Sincerely,

Chuk.

"Roger Stafford" 
<ellieandrogerxyzzy@mindspring.com.invalid> wrote in 
message <fsrvq5$5cu$1@fred.mathworks.com>...
> "Chukwuemeka Igwe" <chukigwe@yahoo.com> wrote in message 
<fsrkeb
> $os2$1@fred.mathworks.com>...
> > Yes thanks for your replies.
> > 
> > However if I  use the cross product and assume that 
the z 
> > axis  have zero components  I actually get some 
reuslts 
> > which are more than an order of magnitude bigger thant 
the 
> > case when I use the determinant to solve for two 
> > dimensions.
> > Please what is happening to cause such a difference in 
> > results.
> > 
> > Thanks 
> > 
> > Chuk
> --------
>   First of all, Chuk, let me apologize for the errors in 
the formulas I gave back 
> on Feb. 19, and for not noticing them this past 
Saturday.  I cannot imagine 
> what I was thinking of.  The 3D formula should read:
> 
>  d = norm(cross(Q2-Q1,P-Q1))/norm(Q2-Q1);
> 
> and the 2D versions ought to read:
> 
>  d = abs(det([Q2-Q1,P-Q1]))/norm(Q2-Q1); % for col. 
vectors
>  d = abs(det([Q2-Q1;P-Q1]))/norm(Q2-Q1); % for row 
vectors.
> 
>   In this corrected form the 3D formula is identical to 
the formula (9) of the 
> website:
> 
>  http://mathworld.wolfram.com/Point-LineDistance3-
Dimensional.html
> 
> which ImageAnalyst mentioned.
> 
>   A note of caution!  Formula (4) at that website, which 
ImageAnalyst also 
> mentioned, while being mathematically equivalent to its 
formula (9), is not as 
> computationally robust as (9) in cases where the 
triangle PQ1Q2 is nearly flat, 
> that is, where it has two angles nearly zero and one 
nearly pi.
> 
>   Here is a concrete example of such a loss of accuracy:
> 
>  Q1 = [0;0;0]; Q2 = [2;4;6]; P = 
[1.00001;1.99998;3.00001];
> 
> This point P will lie very close to the line Q1Q2 
(actually very near its 
> midpoint.)  We can then compare three different ways of 
computing the 
> orthogonal distance.  First, use formula (4)
> 
>  d1 = sqrt(norm(Q2-Q1)^2*norm(P-Q1)^2-dot(Q2-Q1,P-Q1)
^2)/norm(Q2-
> Q1);
> 
> Then use my cross product formula which is also formula 
(9):
> 
>  d2 = norm(cross(Q2-Q1,P-Q1))/norm(Q2-Q1);
> 
> and finally, as a check, directly compute the nearest 
point, R, on line Q1Q2 
> and then compute its distance from P:
> 
>  R = (dot(P-Q2,Q1-Q2)*Q1+dot(P-Q1,Q2-Q1)*Q2)/dot(Q2-
Q1,Q2-Q1);
>  d3 = norm(R-P);
> 
> Now compare the answers using 'format long':
> 
>  [d1;d2;d3]
>  ans =
> 
>    1.0e-04 *
> 
>    0.24494825921622
>    0.24494897427992
>    0.24494897427992
> 
> Formula (4) is off in the 7th place while the other two 
methods preserve 
> normal matlab accuracy.
> 
> Roger Stafford
> 
>