MESH.cpp

Summary
MESH.cpp
Functions
MESHコンストラクタ
clearメッシュの全クリア
DelVert指定した頂点を消去
DelEdge指定したハーフエッジを消去
DelFace指定した面を消去
getIndexedVert指定したインデックスと同じインデックスを持つ頂点を探し出す
getIndexedEdge指定したインデックスと同じインデックスを持つエッジを探し出す
getIndexedFace指定したインデックスと同じインデックスを持つ面を探し出す
setSentinelOnIndexedEdge指定したインデックスのエッジデータに旗を立てる
getIndexedEdgeFromSentinel旗からdn番目後or前のエッジデータを得る(dnがマイナスの場合は後ろ向きの探索)
CalcFaceNorm指定した面fの法線ベクトルを求め、f->normにセットする
CalcFaceArea指定した面fの面積を求め、f->areaにセットする
InsertQEMD昇順ソートされたEdgeリストに、変更されたQEMコストを持つHEedgeを挿入
EdgeSortbyQEMDEdgeをQEMコスト(Edge.qemD)で昇順ソートする
MergeSortForQEMDEdgeをQEMコスト(Edge.qemD)で昇順ソートするSub1
MergeListForQEMDEdgeをQEMコスト(Edge.qemD)で昇順ソートするSub2
NewQEMqemQ[][]の初期化
DelQEMqemQのメモリ解放
InitQEMqemQの初期化
SetQEMqemパラメータをセットする
AddQEMqemパラメータを加える
GetQEMqemパラメータを得る
GetPrevHEこのハーフエッジの(共有する面における)1つ前のハーフエッジを返す

Functions

MESH

MESH::MESH()

コンストラクタ

clear

int MESH::clear()

メッシュの全クリア

Return

KOD_TRUE

DelVert

void MESH::DelVert(HEvert *v)

指定した頂点を消去

Parameter

*v消去する頂点へのポインタ

DelEdge

void MESH::DelEdge(HEedge *e)

指定したハーフエッジを消去

Parameter

*e消去するハーフエッジへのポインタ

DelFace

void MESH::DelFace(HEface *f)

指定した面を消去

Parameter

*f消去する面へのポインタ

getIndexedVert

HEvert *MESH::getIndexedVert(int index)

指定したインデックスと同じインデックスを持つ頂点を探し出す

Parameter

indexインデックス番号

Return

指定したインデックスと同じインデックスを持つ頂点へのポインタ.見つからなかったらNULL

getIndexedEdge

HEedge *MESH::getIndexedEdge(int index)

指定したインデックスと同じインデックスを持つエッジを探し出す

Parameter

indexインデックス番号

Return

指定したインデックスと同じインデックスを持つエッジへのポインタ.見つからなかったらNULL

getIndexedFace

HEface *MESH::getIndexedFace(int index)

指定したインデックスと同じインデックスを持つ面を探し出す

Parameter

indexインデックス番号

Return

指定したインデックスと同じインデックスを持つ面へのポインタ.見つからなかったらNULL

setSentinelOnIndexedEdge

HEedge *MESH::setSentinelOnIndexedEdge(int index)

指定したインデックスのエッジデータに旗を立てる

Parameter

indexインデックス番号

Return

指定したインデックスを持つエッジへのポインタ.見つからなかったらNULL

getIndexedEdgeFromSentinel

HEedge *MESH::getIndexedEdgeFromSentinel(int dn)

旗からdn番目後or前のエッジデータを得る(dnがマイナスの場合は後ろ向きの探索)

Parameter

dn旗(センチネル)から何番目か

Return

旗からdn番目後or前のエッジへのポインタ.見つからなかったらNULL

CalcFaceNorm

int MESH::CalcFaceNorm(HEface *f)

指定した面fの法線ベクトルを求め、f->normにセットする

Parameter

*f

Return

三角メッシュ以外の場合はKOD_FALSE.成功:KOD_TRUE

CalcFaceArea

int MESH::CalcFaceArea(HEface *f)

指定した面fの面積を求め、f->areaにセットする

Parameter

*f

Return

三角メッシュ以外の場合はKOD_FALSE.成功:KOD_TRUE

InsertQEMD

void MESH::InsertQEMD(HEedge *ins)

昇順ソートされたEdgeリストに、変更されたQEMコストを持つHEedgeを挿入

Parameter

*ins順番を変更するエッジデータ

EdgeSortbyQEMD

void MESH::EdgeSortbyQEMD()

EdgeをQEMコスト(Edge.qemD)で昇順ソートする

MergeSortForQEMD

Data *MESH::MergeSortForQEMD(Data *x)

EdgeをQEMコスト(Edge.qemD)で昇順ソートするSub1

Parameter

*xリストの先頭アドレス

Return

ソート後の先頭アドレス

MergeListForQEMD

Data *MESH::MergeListForQEMD(Data *x,
Data *y)

EdgeをQEMコスト(Edge.qemD)で昇順ソートするSub2

NewQEM

void HEvert::NewQEM()

qemQ[][]の初期化

DelQEM

void HEvert::DelQEM()

qemQのメモリ解放

InitQEM

void HEvert::InitQEM()

qemQの初期化

SetQEM

int HEvert::SetQEM(Matrix buf)

qemパラメータをセットする

Parameter

bufセットするqemパラメータマトリックス

Return

qemQがNULL:KOD_ERR, 成功:KOD_TURE

AddQEM

int HEvert::AddQEM(Matrix buf)

qemパラメータを加える

Parameter

buf加えるqemパラメータマトリックス

Return

qemQがNULL:KOD_ERR, 成功:KOD_TURE

GetQEM

Matrix HEvert::GetQEM()

qemパラメータを得る

Return

qemQ

GetPrevHE

HEedge *HEedge::GetPrevHE()

このハーフエッジの(共有する面における)1つ前のハーフエッジを返す

Return

このハーフエッジの(共有する面における)1つ前のハーフエッジ

MESH::MESH()
コンストラクタ
int MESH::clear()
メッシュの全クリア
void MESH::DelVert(HEvert *v)
指定した頂点を消去
void MESH::DelEdge(HEedge *e)
指定したハーフエッジを消去
void MESH::DelFace(HEface *f)
指定した面を消去
HEvert *MESH::getIndexedVert(int index)
指定したインデックスと同じインデックスを持つ頂点を探し出す
HEedge *MESH::getIndexedEdge(int index)
指定したインデックスと同じインデックスを持つエッジを探し出す
HEface *MESH::getIndexedFace(int index)
指定したインデックスと同じインデックスを持つ面を探し出す
HEedge *MESH::setSentinelOnIndexedEdge(int index)
指定したインデックスのエッジデータに旗を立てる
HEedge *MESH::getIndexedEdgeFromSentinel(int dn)
旗からdn番目後or前のエッジデータを得る(dnがマイナスの場合は後ろ向きの探索)
int MESH::CalcFaceNorm(HEface *f)
指定した面fの法線ベクトルを求め、f->normにセットする
int MESH::CalcFaceArea(HEface *f)
指定した面fの面積を求め、f->areaにセットする
void MESH::InsertQEMD(HEedge *ins)
昇順ソートされたEdgeリストに、変更されたQEMコストを持つHEedgeを挿入
void MESH::EdgeSortbyQEMD()
EdgeをQEMコスト(Edge.qemD)で昇順ソートする
Data *MESH::MergeSortForQEMD(Data *x)
EdgeをQEMコスト(Edge.qemD)で昇順ソートするSub1
Data *MESH::MergeListForQEMD(Data *x,
Data *y)
EdgeをQEMコスト(Edge.qemD)で昇順ソートするSub2
void HEvert::NewQEM()
qemQ[][]の初期化
void HEvert::DelQEM()
qemQのメモリ解放
void HEvert::InitQEM()
qemQの初期化
int HEvert::SetQEM(Matrix buf)
qemパラメータをセットする
int HEvert::AddQEM(Matrix buf)
qemパラメータを加える
Matrix HEvert::GetQEM()
qemパラメータを得る
HEedge *HEedge::GetPrevHE()
このハーフエッジの(共有する面における)1つ前のハーフエッジを返す