vex: hedge - miyagiA/MyLearningNote GitHub Wiki

half edge

Detail Wrangle

int hedge=chi("hedge_num");
int point=chi("point_num");
int point1=chi("point1_num");
int vertex=chi("vertex_num");
int primitive=chi("primitive_num");

// ハーフエッジポイント番号を取得します。 ソース手前、ソース、ゴール、ゴール後
i@point_pre_hedge=  hedge_presrcpoint(0, hedge);
i@point_src_hedge=  hedge_srcpoint(0, hedge);
i@point_dst_hedge=  hedge_dstpoint(0, hedge);
i@point_post_hedge= hedge_postdstpoint(0, hedge);

// ハーフエッジバーテックス番号を取得します。 ソース手前、ソース、ゴール、ゴール後
i@vtx_pre_hedge=  hedge_presrcvertex(0, hedge);
i@vtx_src_hedge=  hedge_srcvertex(0, hedge);
i@vtx_dst_hedge=  hedge_dstvertex(0, hedge);
i@vtx_post_hedge= hedge_postdstvertex(0, hedge);

//指定したハーフエッジと等価のプライマリハーフエッジを返します。
//等価のハーフエッジの各クラスは、正確に1つのプライマリハーフエッジを持ちます。 
i@hedge_primary=hedge_primary(0, hedge);

//プライマリハーフエッジに該当するか? return 0 or 1
i@is_primary_hedge=hedge_isprimary(0, hedge);

//有効なハーフエッジでであるか? return 0 or 1
i@is_valid_hedge=hedge_isvalid(0,hedge);

//ポリゴン内の指定したハーフエッジの 先に立つ、または後続のハーフエッジを返します。
i@hedge_edge_prev=hedge_prev(0,hedge);
i@hedge_edge_next=hedge_next(0,hedge);

//指定したハーフエッジと等価の次のハーフエッジを返します。
//hedgeと等価の次のハーフエッジ。それと等価のハーフエッジが他になければhedgeを返します。
i@hedge_nextequiv=hedge_nextequiv(0,hedge);

//指定したハーフエッジに相当するハーフエッジの数を返します。
i@equivcount_hedge=hedge_equivcount(0,hedge);

//hedge1とhedge2が等価(つまりジオメトリでは同じエッジを意味する)であれば1を返します。 
i@is_equiv_hedge=hedge_isequiv(0,hedge,i@hedge_equivcount);//必ず同じになる例
i@is_equiv_hedge2=hedge_isequiv(0,hedge,5);//滅多に同じにならない例

//ハーフエッジを含んだプリミティブを返します。
i@prim_of_hedge=hedge_prim(0,hedge);
//頂点をソースとして持つハーフエッジを返します。
i@hedge_of_vertex=vertexhedge(0,hedge);

//指定した端点を持つハーフエッジを検索して返します。
i@hedge_of_point0=pointedge(0,point,point1);
i@hedge_of_point1=pointedge(0,2,3);
i@hedge_of_point2=pointedge(0,2,7);
//指定したソースポイントまたは指定したソースとターゲットのポイントを持つハーフエッジを検索して、返します。
i@hedge_of_point3=pointhedge(0,2,7);
i@hedge_of_point4=pointhedge(0,2,3);
i@hedge_of_point5=pointhedge(0,2);

//指定したハーフエッジと同じソースを持つ 次の ハーフエッジを返します。
i@hedge_next_of_point=pointhedgenext(0,hedge);

//頂点をソースとして持つハーフエッジを返します。
i@hedge_of_vertex=vertexhedge(0,vertex);

//プリミティブに含まれているハーフエッジの 1つ を返します。
i@hedge_of_prim=primhedge(0,primitive);