며칠 전에 재귀에 대해 물어볼 질문과 비슷한 질문을 던졌습니다. 다음은 이전 질문에 대한 링크입니다. C++ vector loses data in recursive function벡터로 항목을 푸시하지 않는 C++ 재귀 호출
재귀 호출에서 벡터를 푸시하는 데 문제가 있다는 것을 알았 기 때문에 지금 당장은 매우 고밀도라고 느낍니다.하지만 지금은 비슷한 문제가 있습니다. 기능.
void TriangleDynamic::collectRayRecursive(Ray &ray, double binSize, double radius, Point &org)
{
if (getLowestLevel())
{
//this is where I push the ray.
raysPushBack(move(ray));
}
else
{
bool foundIntersectSub = false;
unsigned int ctr = 0;
while((!foundIntersectSub) && (ctr<=getSubTrianglesSize() - 1))
{
if (getSubTriangle(ctr).intersect(ray))
{
foundIntersectSub = true;
getSubTriangle(ctr).collectRayRecursive(ray, binSize, radius, org);
}
ctr = ctr + 1;
}
}
}
함수가 TriangleDynamic 클래스의 일부 매개 변수로 광선을 취 여기서 함수 코드의 비트이다. Ray는 TriangleDynamic 객체와 교차하는 것으로 알려져 있지만 삼각형이 "최저 레벨"삼각형이 아닌 경우 함수는 삼각형 subTriangles를 통해 Ray가 교차 한 subTriangle을 찾습니다 (하나는 디자인에 의해 교차됩니다) . 이것은 재귀 호출이 발생하는 곳이며 광선이 벡터라고 부르는 벡터에 푸시되고 TriangleDynamic의 멤버 데이터 인 최하위 삼각형에 도달하면 한 번입니다. 그러나 다시 한 번 나는 자료를 잃는다. 이 일을하는 방법이 있습니까? 나는 이전의 질문에 얼마나 빨리 그리고 쉽게 답할 수 있는지 믿을 수 없다. 나는 다시 시도 할 것이라고 생각했다. 감사!
광선 벡터는 어디에서 생깁니 까? –
TriangleDynamic 멤버 데이터 내에 있습니다. – user1216527
원본을 게시 한 후에 추가했지만 Ray 개체를 보유하고있는 벡터입니다. – user1216527