本文整理汇总了C#中DelaunayTriangle.SetDelaunayEdgeCW方法的典型用法代码示例。如果您正苦于以下问题:C# DelaunayTriangle.SetDelaunayEdgeCW方法的具体用法?C# DelaunayTriangle.SetDelaunayEdgeCW怎么用?C# DelaunayTriangle.SetDelaunayEdgeCW使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DelaunayTriangle
的用法示例。
在下文中一共展示了DelaunayTriangle.SetDelaunayEdgeCW方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RotateTrianglePair
/// <summary>
/// Rotates a triangle pair one vertex CW
/// n2 n2
/// P +-----+ P +-----+
/// | t /| |\ t |
/// | / | | \ |
/// n1| / |n3 n1| \ |n3
/// | / | after CW | \ |
/// |/ oT | | oT \|
/// +-----+ oP +-----+
/// n4 n4
/// </summary>
private static void RotateTrianglePair(DelaunayTriangle t, TriangulationPoint p, DelaunayTriangle ot, TriangulationPoint op)
{
DelaunayTriangle n1 = t.NeighborCCW(p);
DelaunayTriangle n2 = t.NeighborCW(p);
DelaunayTriangle n3 = ot.NeighborCCW(op);
DelaunayTriangle n4 = ot.NeighborCW(op);
bool ce1 = t.GetConstrainedEdgeCCW(p);
bool ce2 = t.GetConstrainedEdgeCW(p);
bool ce3 = ot.GetConstrainedEdgeCCW(op);
bool ce4 = ot.GetConstrainedEdgeCW(op);
bool de1 = t.GetDelaunayEdgeCCW(p);
bool de2 = t.GetDelaunayEdgeCW(p);
bool de3 = ot.GetDelaunayEdgeCCW(op);
bool de4 = ot.GetDelaunayEdgeCW(op);
t.Legalize(p, op);
ot.Legalize(op, p);
// Remap dEdge
ot.SetDelaunayEdgeCCW(p, de1);
t.SetDelaunayEdgeCW(p, de2);
t.SetDelaunayEdgeCCW(op, de3);
ot.SetDelaunayEdgeCW(op, de4);
// Remap cEdge
ot.SetConstrainedEdgeCCW(p, ce1);
t.SetConstrainedEdgeCW(p, ce2);
t.SetConstrainedEdgeCCW(op, ce3);
ot.SetConstrainedEdgeCW(op, ce4);
// Remap neighbors
// XXX: might optimize the markNeighbor by keeping track of
// what side should be assigned to what neighbor after the
// rotation. Now mark neighbor does lots of testing to find
// the right side.
t.Neighbors.Clear();
ot.Neighbors.Clear();
if (n1 != null) ot.MarkNeighbor(n1);
if (n2 != null) t.MarkNeighbor(n2);
if (n3 != null) t.MarkNeighbor(n3);
if (n4 != null) ot.MarkNeighbor(n4);
t.MarkNeighbor(ot);
}