Half-edges

VEX는 사용자가 edge들을 각 face 별로 서로 공유하지 않는 “half-edges”의 함수를 가지고 있다.

Overview

half_edge1 Houdini에서 edge들은 보통 face들 사이에서 공유되고 방향이 없는 것으로 다루어진다. 그러나, 몇몇의 작업의 경우 (예, geometry를 단순화하고 깔끔하게 하는 경우) half edge는 각 face들이 가진 각자의 고유한 edge들을 보는데 유용하다.
half_edge_split 이 것을 각 공유하는 무방향성 edge를 그 길이에 따라 두 개의 half edge로 분리하는 것으로 생각할 수 있다. (boundary edge들은 물론 하나의 “half-edge”만을 가지게 될 것이다).
half_edge2 각 half-edge는 방향성이 있다 (시작하는 vertex와 끝나는 vertex를 가지고 있다).
half_edge3 half-edge 함수들은 사용자가 half-edge의 소스와 목표 vertex를 빠르게 찾을 수 있게 하고, 다음 half-edge, 같은 edge에서 다른 half-edge, 주어진 point를 공유하는 모든 half edge를 찾게한다.

Equivalence

만약 두 half-edge가 공유되는 같은 edge에서부터 “분리”되었다면, 그 두 개의 half-edge들은 동등하다. 아래의 이미지에서, 세 개의 primitive는 하나의 edge를 공유하고 있다. half-edge e, f, g는 같은 edge이기에 동등하다. 방향성은 문제가 안된다.e 가 f와 g와 동등한것해도 서로 다른 방향을 가지고 있는 것은 문제가 안된다. 
half_edge_equiv
half-edge의 소스 (목표) vertex는 독립적으로 edge를 식별한다. 즉 vertex가 소스로 주어진 half-edge가 최소 한 개 이상 존재할 수 있다는 뜻이다.  이 것은 한 vertex는 하나의 primitive에만 존재할 수 있기 때문이다. 그러나, 몇 몇 vertex들은 간은 point에 연결될 수 있고, half-edge는 공유되는 소스와 목표 point들을 가질 수 있다. 다른 방식으로 등가성에 대해 생각해 보면 두 개의 half-edge들은 만약 vertex가 같은 두 개의 point들을 공유하고 있으면, 이를 동등하다고 본다.
half-edge 등가성의 세트 중 하나는 주요 half-edge를 그 class로 간주하는 것이다. VEX 함수들은 주어진 half-edge가 primary(주된 것)인지 확인하게 하고, 또는 주어진 것이 non-primary half-edge라면, 동등한 primary half-edge를 찾게 한다.

Functions

hedge_isvalid Check whether a half-edge is valid
hedge_isprimary Check whether a half-edge is primary
hedge_primary Find the primary equivalent half-edge
hedge_isequiv Test whether two half-edges are equivalent
hedge_nextequiv Iterate over the half-edges in an equivalence class
hedge_equivcount Get the number of half-edges in an equivalence class
hedge_srcvertex Get the source vertex of a half-edge
hedge_dstvertex Get the destination vertex of a half-edge
hedge_presrcvertex Get the vertex preceding the source vertex in half-edge primitive
hedge_postdstvertex Get the vertex following the destination vertex in half-edge primitive
hedge_prim Get the primitive of a half-edge
hedge_srcpoint Get the source point of a half-edge
hedge_dstpoint Get the destination point of a half-edge
hedge_presrcpoint Get the pre-source point of a half-edge
hedge_postdstpoint Get the post-destination point of a half-edge
hedge_next Get the next half-edge in primitive
hedge_prev Get the previous half-edge in primitive
pointedge Find half-edge between two points
pointhedge Find half-edge with given source and destination
pointhedge Find a half-edge with a given source point
pointhedgenext Iterate over half-edges with a given source point
vertexhedge Get the half-edge with a source vertex
primhedge Get a half-edge on a given primitive

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s