Go to content Go to navigation and search

Home

Current SQL Server Blog Articles


Search

Browse

RSS / Atom

Email me

textpattern

Creative Commons License
All Blog Articles, Data Models and Free Source Code by Simon Greener, The SpatialDB Advisor is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

COGO: Computing Arc To Chord (Arc2Chord) Separation

Thursday May 05 2011 at 11:03

Computing the arc to chord (Arc2Chord) separation between an arc on the circumference of a circle and the chord subtended by that arc is considered to be a vital measure for determining how well a vertex defined polygon matches its related circle (or arc in a circular arc).

In cadastral applications, an arc to chord separation value of 3mm is considered to be a good value for approximating a polygon to a circular arc.

This value is relatively easy to calculate and is give here for those who need it.

Note that I have a schema call cogo in which I create functions like this. You can use anything you like.

/* ----------------------------------------------------------------------------------------
* @function   : ArcToChordSeparation
* @precis     : Returns the separation between an arc on the circumference of a circle
*               and the chord it subtends at the centre of the arc.
* @version    : 1.0
* @usage      : FUNCTION ArcToChordSeparation( @p_dRadius Float,
*                                              @p_dAngle Float)
*                RETURNS FLOAT;
*               eg select dbo.ArcToChordSeparation(10,90.0) as Arc2ChordSeparation;
* @param      : p_dRadius    : Radius of Circle
* @paramtype  : p_dRadius    : FLOAT
* @param      : p_dAngle     : Angle subtended at centre for which chord length is to be calculated
* @paramtype  : p_dAngle     : FLOAT
* @return     : Arc2ChordSep : The chord subtended by the angle
* @rtnType    : Arc2ChordSep : FLOAT
* @note       : Does not throw exceptions
* @note       : Assumes planar projection eg UTM.
* @history    : Simon Greener - Feb 2005 - Original coding.
* @history    : Simon Greener - May 2011 - Converted to SQL Server 2008 TSQL
* @copyright  : Licensed under a Creative Commons Attribution-Share Alike 2.5 Australia License. (http://creativecommons.org/licenses/by-sa/2.5/au/)
*/
Create Function cogo.ArcToChordSeparation(@p_dRadius Float,
                                          @p_dAngle  Float)
Returns Float
As
BEGIN
  DECLARE
      @dAngleRad              Float,
      @dCentreToChordMidPoint Float,
      @dArcChordSeparation    Float;
  BEGIN
      SET @dAngleRad              = @p_dAngle  * PI() / 180;
      SET @dCentreToChordMidPoint = @p_dRadius * COS(@dAngleRad/2);
      SET @dArcChordSeparation    = @p_dRadius - @dCentreToChordMidPoint;
      Return @dArcChordSeparation;
  End;
END
GO

An example of how to use this function is as follows:

select cogo.ArcToChordSeparation(10,90.0) as Arc2ChordSep;

|_. Arc2ChordSep| |2.92893218813452|


Hope this helps someone.

Creative Commons License

post this at del.icio.uspost this at Diggpost this at Technoratipost this at Redditpost this at Farkpost this at Yahoo! my webpost this at Windows Livepost this at Google Bookmarkspost this to Twitter

Comment