/**
* This is the only way to create a new Edge
* @param site0
* @param site1
* @return
*
*/
internal static Edge CreateBisectingEdge(Site site0, Site site1)
{
float dx, dy, absdx, absdy;
float a, b, c;
dx = site1.X - site0.X;
dy = site1.Y - site0.Y;
absdx = dx > 0 ? dx : -dx;
absdy = dy > 0 ? dy : -dy;
c = site0.X * dx + site0.Y * dy + (dx * dx + dy * dy) * 0.5f;
if (absdx > absdy)
{
a = 1.0f; b = dy / dx; c /= dx;
}
else
{
b = 1.0f; a = dx / dy; c /= dy;
}
Edge edge = Edge.Create();
edge.LeftSite = site0;
edge.RightSite = site1;
site0.AddEdge(edge);
site1.AddEdge(edge);
edge._leftVertex = null;
edge._rightVertex = null;
edge.a = a; edge.b = b; edge.c = c;
//trace("createBisectingEdge: a ", edge.a, "b", edge.b, "c", edge.c);
return(edge);
}