getSubTriangle(ctr).collectRayRecursive(ray, binSize, radius, org);
Ваш вектор живет в TriangleDynamic
[как вы сказали], но ваш рекурсивный вызов работает каждый раз на другом экземпляре TriangleDynamic
, поэтому vector
первого рекурсивного вызова не являетсятакой же, как вектор второго рекурсивного вызова, который не совпадает с вектором 3-го рекурсивного вызова .... [ну, я не могу быть в этом уверен, так как мне нужно больше кода для него, но я предполагаю, что так].
Вы должны будете убедиться, что после рекурсивного вызова вы скопируете vector
, который находится в треугольнике, сгенерированном getSubTriangle()
в this
.
РЕДАКТИРОВАТЬ: просмотрна «трассировке стека» рекурсивного вызова:
Стек вызовов может выглядеть примерно так:
|triangle_1.collectRayRecursive()|
---------------------------------
При вызове рекурсивного вызова вы получаете [обратите внимание, что triangle_1, triangle_2 отличаютсяобъекты]
|triangle_2.collectRayRecursive()|
|triangle_1.collectRayRecursive()|
---------------------------------
И так далее: ...
|triangle_n.collectRayRecursive()|
....
|triangle_2.collectRayRecursive()|
|triangle_1.collectRayRecursive()|
---------------------------------
Теперь вы модифицируете vector
, который находится внутри объекта triangle_n
[самый глубокий рекурсивный вызов],но не vector
в других треугольниках.
Когда вы возвращаетесь из рекурсии, вы открываете голову, которая является triangle_n
- без копирования vector
.
В результате - новая информация не была добавлена к вектору в triangle_(n-1)
, что не передаст ее в triangle_(n-2)
... что не передаст ее в triangle_1
- где вы ожидаете увидеть финалрезультаты.