gpt4 book ai didi

c++ - 如何在 C++ 中分割边缘

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:37 26 4
gpt4 key购买 nike

最近学习了循环 segmentation ,用Qt实现了一部分。我想通过计算新点的位置, split 边缘和翻转边缘来 segmentation “三角形”。但是我自己的“splitEdge()”似乎存在一些问题。

我不知道为什么。非常感谢。

// definition.
struct HalfEdge{
bool old;
Vertex * origin;
HalfEdge * pair;
HalfEdge * prev;
HalfEdge * next;
Face * face;
};
struct Vertex{
bool old;
QVector3D pos, newPos;
HalfEdge * edge;
};
struct Face{
HalfEdge * edge;
};
// the problem splitEgde()
void Mesh::splitEdge(HalfEdge *e){
HalfEdge * prev = e->prev;
HalfEdge * next = e->next;
HalfEdge * p = e->pair;
Vertex * v = new Vertex();
v->pos = v->newPos = newVertexPosition[e];
v->old = false;
HalfEdge * eNext = new HalfEdge();
HalfEdge * vOut = new HalfEdge();
HalfEdge * vIn = new HalfEdge();
Face * vFace = new Face();
/******** face A *******/
// edge
e->next = eNext;
eNext->old = false;
eNext->origin = v;
eNext->pair = vIn;
eNext->prev = e;
eNext->next = prev;
eNext->face = e->face;
prev->prev = eNext;
// vertex
// face
e->face->edge = e;
/******** face A *******/
/******** face B *******/
// edge
vOut->old = true; // !!
vOut->origin = v;
vOut->pair = NULL;
vOut->prev = vIn;
vOut->next = next;
vOut->face = vFace;
next->prev = vOut;
next->next = vIn;
next->face = vFace;
vIn->old = false;
vIn->origin = prev->origin;
vIn->pair = eNext;
vIn->prev = next;
vIn->next = vOut;
vIn->face = vFace;
// vertex
v->edge = eNext;
// face
vFace->edge = vOut;
/******** face B *******/
//the rest is updating the data
}

错误:build-Subdivision-Desktop_Qt_5_12_1_MinGW_64_bit-Debug/debug/SubdivisionWithLighting.exe 崩溃了。

最佳答案

我已经做了,这是一个愚蠢的错误。我忘记处理图形内部边缘的情况。现在我已经完美地实现了它。

关于c++ - 如何在 C++ 中分割边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com