/** * 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); }
/** * This is the only way to create a new Edge * @param site0 * @param site1 * @return * */ public static Edge CreateBisectingEdge(Site site0, Site site1) { double dx, dy, absdx, absdy; double 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); }
/* * This is the only way to create a new Edge * @param site0 * @param site1 * @return */ public static Edge CreateBisectingEdge(Site s0, Site s1) { float dx, dy; float absdx, absdy; float a, b, c; dx = s1.x - s0.x; dy = s1.y - s0.y; absdx = dx > 0 ? dx : -dx; absdy = dy > 0 ? dy : -dy; c = s0.x * dx + s0.y * dy + (dx * dx + dy * dy) * 0.5f; if (absdx > absdy) { a = 1; b = dy / dx; c /= dx; } else { b = 1; a = dx / dy; c /= dy; } Edge edge = Edge.Create(); edge.LeftSite = s0; edge.RightSite = s1; s0.AddEdge(edge); s1.AddEdge(edge); edge.a = a; edge.b = b; edge.c = c; return(edge); }