LWDEBUG(2, "lwcircle_calculate_gbox_cartesian_2d called.");
- radius_A = lwcircle_center(A1, A2, A3, &C);
+ radius_A = lw_arc_center(A1, A2, A3, &C);
/* Negative radius signals straight line, p1/p2/p3 are colinear */
if (radius_A < 0.0)
*/
int lw_segment_side(const POINT2D *p1, const POINT2D *p2, const POINT2D *q);
int lwcircle_calculate_gbox_cartesian_2d(const POINT2D *A1, const POINT2D *A2, const POINT2D *A3, GBOX *gbox);
-double lwcircle_center(const POINT2D *p1, const POINT2D *p2, const POINT2D *p3, POINT2D *result);
+double lw_arc_center(const POINT2D *p1, const POINT2D *p2, const POINT2D *p3, POINT2D *result);
int lw_pt_in_seg(const POINT2D *P, const POINT2D *A1, const POINT2D *A2);
int lw_pt_in_arc(const POINT2D *P, const POINT2D *A1, const POINT2D *A2, const POINT2D *A3);
int lw_arc_is_pt(const POINT2D *A1, const POINT2D *A2, const POINT2D *A3);
if ( lw_arc_is_pt(A1, A2, A3) )
return 0.0;
- radius_A = lwcircle_center(A1, A2, A3, &C);
+ radius_A = lw_arc_center(A1, A2, A3, &C);
/* Co-linear! Return linear distance! */
if ( radius_A < 0 )
double d;
side_Q = lw_segment_side(A1, A3, Q);
- radius_A = lwcircle_center(A1, A2, A3, &C);
+ radius_A = lw_arc_center(A1, A2, A3, &C);
side_A2 = lw_segment_side(A1, A3, A2);
/* Linear case */
* point is coincident with either end point, they are taken as colinear.
*/
double
-lwcircle_center(const POINT2D *p1, const POINT2D *p2, const POINT2D *p3, POINT2D *result)
+lw_arc_center(const POINT2D *p1, const POINT2D *p2, const POINT2D *p3, POINT2D *result)
{
POINT2D c;
double cx, cy, cr;
c.x = c.y = 0.0;
- LWDEBUGF(2, "lwcircle_center called (%.16f,%.16f), (%.16f,%.16f), (%.16f,%.16f).", p1->x, p1->y, p2->x, p2->y, p3->x, p3->y);
+ LWDEBUGF(2, "lw_arc_center called (%.16f,%.16f), (%.16f,%.16f), (%.16f,%.16f).", p1->x, p1->y, p2->x, p2->y, p3->x, p3->y);
/* Closed circle */
if (fabs(p1->x - p3->x) < EPSILON_SQLMM &&
*result = c;
cr = sqrt((cx-p1->x)*(cx-p1->x)+(cy-p1->y)*(cy-p1->y));
- LWDEBUGF(2, "lwcircle_center center is (%.16f,%.16f)", result->x, result->y);
+ LWDEBUGF(2, "lw_arc_center center is (%.16f,%.16f)", result->x, result->y);
return cr;
}
lwcircle_segmentize(POINT4D *p1, POINT4D *p2, POINT4D *p3, uint32_t perQuad)
{
POINT2D center;
+ POINT2D *t1 = (POINT2D*)p1;
+ POINT2D *t2 = (POINT2D*)p2;
+ POINT2D *t3 = (POINT2D*)p3;
POINT4D pt;
int p2_side = 0;
int clockwise = LW_TRUE;
LWDEBUG(2, "lwcircle_calculate_gbox called.");
- radius = lwcircle_center((POINT2D*)p1, (POINT2D*)p2, (POINT2D*)p3, ¢er);
- p2_side = lw_segment_side((POINT2D*)p1, (POINT2D*)p3, (POINT2D*)p2);
+ radius = lw_arc_center(t1, t2, t3, ¢er);
+ p2_side = lw_segment_side(t1, t3, t2);
/* Matched start/end points imply circle */
if ( p1->x == p3->x && p1->y == p3->y )
POINT2D *t2 = (POINT2D*)a2;
POINT2D *t3 = (POINT2D*)a3;
POINT2D *tb = (POINT2D*)b;
- double radius = lwcircle_center(t1, t2, t3, ¢er);
+ double radius = lw_arc_center(t1, t2, t3, ¢er);
double b_distance, diff;
/* Co-linear a1/a2/a3 */
return lw_dist2d_pt_seg(B1, A1, A2, dl);
/* Calculate center and radius of the circle. */
- radius_C = lwcircle_center(B1, B2, B3, &C);
+ radius_C = lw_arc_center(B1, B2, B3, &C);
/* This "arc" is actually a line (B2 is colinear with B1,B3) */
if ( radius_C < 0.0 )
return lw_dist2d_pt_pt(P, A1, dl);
/* Calculate centers and radii of circles. */
- radius_A = lwcircle_center(A1, A2, A3, &C);
+ radius_A = lw_arc_center(A1, A2, A3, &C);
/* This "arc" is actually a line (A2 is colinear with A1,A3) */
if ( radius_A < 0.0 )
return lw_dist2d_pt_arc(A1, B1, B2, B3, dl);
/* Calculate centers and radii of circles. */
- radius_A = lwcircle_center(A1, A2, A3, &CA);
- radius_B = lwcircle_center(B1, B2, B3, &CB);
+ radius_A = lw_arc_center(A1, A2, A3, &CA);
+ radius_B = lw_arc_center(B1, B2, B3, &CB);
/* Two co-linear arcs?!? That's two segments. */
if ( radius_A < 0 && radius_B < 0 )