vcg.edge.VEAdj 中文文档

vcg.edge.VEAdj 是 Visual Computer Geometry Library (VCG) 中的一个类,它用于表示 3D 网格中的边 以及其相邻的面(edge-adjacency)。

方法

vcg.edge.VEAdj 类具有以下方法:

Clear()

清空当前对象。

IsValid() -> bool

判断当前对象是否有效。

VFp(i) -> VCG_Vertex_p

返回边 i 所在的面的指针。

FSp(i) -> VCG_Face_p

返回边 i 所在的面的相邻面的指针。

Fp(i) -> VCG_Face_p

返回边 i 所在的面和相邻面中编号为 j 的面的指针。其中 j=0 时表示当前面,j=1 时表示相邻面。

AdjFp(i) -> VCG_Face_p

返回边 i 所在的面和其相邻面中编号为 j 的面的指针。其中 j=0 时表示相邻面。

V(i) -> VCG_Vertex_p

返回边 i 所连接的第一个点的指针。

V1(i) -> VCG_Vertex_p

返回边 i 所连接的第二个点的指针。

HasVertex(i, vp) -> bool

判断点 vp 是否是边 i 所连接的一个点。

HasVertex(vp) -> bool

判断点 vp 是否是边的其中一个端点。

属性

vcg.edge.VEAdj 类具有以下属性:

vv

定义为 VCGEAdjPool<1> vv,用于存储具有相同边的数据块的地址。

示例代码

以下示例展示了如何使用 vcg.edge.VEAdj 类:

#include <vcg/complex/complex.h>

using namespace vcg;

// 定义网格类型和基础数据类型
class MyVertex;
class MyEdge;
class MyFace;
struct MyUsedTypes: public UsedTypes<Use<MyVertex>::AsVertexType, Use<MyEdge>::AsEdgeType, Use<MyFace>::AsFaceType>{};

// 定义网格
class MyMesh: public vcg::tri::TriMesh<std::vector<MyVertex>, std::vector<MyFace> > {};

// 定义网格元素
class MyVertex: public vcg::Vertex<MyUsedTypes, vcg::vertex::Coord3f, vcg::vertex::BitFlags > {};
class MyEdge: public vcg::Edge<MyUsedTypes, vcg::edge::VEAdj > {};
class MyFace: public vcg::Face<MyUsedTypes, vcg::face::VertexRef, vcg::face::BitFlags > {};

int main(){
    // 创建网格实例
    MyMesh mesh;
    // 访问一个点
    MyMesh::VertexType* vp = &mesh.vert[0];
    // 访问一个边
    MyMesh::EdgeType* ep = &mesh.edge[0];
    // 访问该边的 VEAdj 类型
    MyMesh::VEType& ve = ep->cVE();
    // 进行操作,如访问边的第一个点
    MyMesh::VertexType* v1 = ve.V(0);
}

以上示例代码展示了创建模型实例,访问模型中的边并操作 VEAdj。该操作是返回连接到该边的第一个点的指针。更多操作详见方法章节。