本文整理汇总了C++中QuadEdge::Dest方法的典型用法代码示例。如果您正苦于以下问题:C++ QuadEdge::Dest方法的具体用法?C++ QuadEdge::Dest怎么用?C++ QuadEdge::Dest使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QuadEdge
的用法示例。
在下文中一共展示了QuadEdge::Dest方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InsertPoint
Vertex* Voronoi::InsertPoint(const Vec2& p)
{
QuadEdge* e = LocateTriangleEdge(p);
if (e == nullptr ||
p == e->Org()->p || p == e->Dest()->p)
return nullptr;
else if (VoronoiMath::Collinear(e, p))
{
e = e->Oprev();
QuadEdge* et = e->Onext();
QuadEdge::Disconnect(et);
deleteEdge(et->RootEdge());
}
Vertex* v = createVertex(p);
v->e = e;
QuadEdge* e_begin = createEdge();
e_begin->SetEndPoints(e->Org(), v);
QuadEdge* et = e_begin;
QuadEdge::Splice(e_begin, e);
do
{
QuadEdge* et2 = createEdge();
QuadEdge::Connect(et2, e, et->Sym());
et = et2;
e = et->Oprev();
} while (e->Lnext() != e_begin);
do
{
et = e->Oprev();
if (VoronoiMath::OnRight(e, et->Dest()->p) &&
VoronoiMath::InCircle(e->Org()->p, et->Dest()->p, e->Dest()->p, p))
{
QuadEdge::Flip(e);
e = e->Oprev();
}
else if (e->Onext() == e_begin)
break;
else
e = e->Onext()->Lprev();
} while (true);
return v;
}
示例2: if
QuadEdge * Voronoi::LocateTriangleEdge(const Vec2 & p)
{
int i = 0;
QuadEdge* e = &edges.front().e[0];
while (true)
{
if (e->Org()->p == p || e->Dest()->p == p)
return e;
if (VoronoiMath::OnRight(e, p))
e = e->Sym();
else if (!VoronoiMath::OnRight(e->Onext(), p))
e = e->Onext();
else if (!VoronoiMath::OnRight(e->Dprev(), p))
e = e->Dprev();
else
return e;
if (++i > 100000)
break;
}
return nullptr;
}