19 tfloat alpha12 = alpha2 - alpha1 ;
20 tfloat alpha31 = alpha1 - alpha3 ;
22 tfloat L12 = sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) ) ;
23 tfloat L31 = sqrt( (x3-x1)*(x3-x1) + (y3-y1)*(y3-y1) ) ;
25 tfloat phi = atan2( (y1-y2) , (x1-x2) ) ;
26 tfloat sigma = atan2( (x1-x3) , (y1-y3) ) + HALFPI + phi ;
28 tfloat gamma = sigma - alpha31 ;
30 tfloat sin_alpha12 = Sin( alpha12 ) ;
31 tfloat sin_alpha31 = Sin( alpha31 ) ;
33 tfloat p = ( L31 * sin_alpha12 ) / ( L12 * sin_alpha31 ) ;
34 tfloat tau = atan( ( sin_alpha12 - p * Sin( gamma ) ) / ( p * Cos( gamma ) - Cos( alpha12 ) ) ) ;
36 tfloat L1 = ( L12 * Sin( tau + alpha12 ) ) / sin_alpha12 ;
38 *x = x1 - L1 * Cos( phi + tau ) ;
39 *y = y1 - L1 * Sin( phi + tau ) ;
53 tfloat alpha12 = alpha2 - alpha1 ;
54 tfloat alpha23 = alpha3 - alpha2 ;
56 tfloat d12 = sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) ) ;
57 tfloat d23 = sqrt( (x3-x2)*(x3-x2) + (y3-y2)*(y3-y2) ) ;
59 tfloat ra = d12 / ( 2 * Sin( alpha12 ) ) ;
60 tfloat rb = d23 / ( 2 * Sin( alpha23 ) ) ;
62 tfloat la = d12 / ( 2 * adjust_value_to_bounds( Tan( alpha12 ) , COT_MAX ) ) ;
63 tfloat lb = d23 / ( 2 * adjust_value_to_bounds( Tan( alpha23 ) , COT_MAX ) ) ;
65 tfloat cax = ( x1 + x2 ) / 2 - la * ( y2 - y1 ) / d12 ;
66 tfloat cay = ( y1 + y2 ) / 2 + la * ( x2 - x1 ) / d12 ;
68 tfloat cbx = ( x2 + x3 ) / 2 - lb * ( y3 - y2 ) / d23 ;
69 tfloat cby = ( y2 + y3 ) / 2 + lb * ( x3 - x2 ) / d23 ;
71 tfloat d = sqrt( (cbx-cax)*(cbx-cax) + (cby-cay)*(cby-cay) ) ;
73 tfloat c2m = ( rb*rb + d*d - ra*ra ) / ( 2 * d ) ;
79 tfloat mx = cbx + c2m * ( cax - cbx ) / d ;
80 tfloat my = cby + c2m * ( cay - cby ) / d ;
92 tfloat alpha12 = alpha2 - alpha1 ;
93 tfloat alpha23 = alpha3 - alpha2 ;
95 tfloat d12 = sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) ) ;
96 tfloat d23 = sqrt( (x3-x2)*(x3-x2) + (y3-y2)*(y3-y2) ) ;
98 tfloat ra = d12 / ( Sin( alpha12 ) ) ;
99 tfloat rb = d23 / ( Sin( alpha23 ) ) ;
101 tfloat la = adjust_value_to_bounds( Cot( alpha12 ) , COT_MAX ) ;
102 tfloat lb = adjust_value_to_bounds( Cot( alpha23 ) , COT_MAX ) ;
104 tfloat cax = ( x1 + x2 ) - la * ( y2 - y1 ) ;
105 tfloat cay = ( y1 + y2 ) + la * ( x2 - x1 ) ;
107 tfloat cbx = ( x2 + x3 ) - lb * ( y3 - y2 ) ;
108 tfloat cby = ( y2 + y3 ) + lb * ( x3 - x2 ) ;
110 tfloat d = (cbx-cax)*(cbx-cax) + (cby-cay)*(cby-cay) ;
112 tfloat c2m = ( rb*rb + d - ra*ra ) / ( 2 * d ) ;
114 *x = cbx + c2m * ( cax - cbx ) - x2 ;
115 *y = cby + c2m * ( cay - cby ) - y2 ;
double tfloat
Defines the type for float/double.