Как получить все координаты пути Path2d (Cinder) в c ++? - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу сохранить все точки / координаты, которые мой путь охватывает, к векторному объекту.

Прямо сейчас, результат довольно случайный, я еще не выяснил, что влияет на количество очков, которые я получаю. Большую часть времени сохраняется только начальная точка, иногда ее 4 балла, затем 11, но никогда не все точки, которые покрыты моим путем.

Это то, что я делаю сейчас:

std::vector<glm::vec2> getPointsInCurve(Path2d path) {

    Rectf bb = path.calcPreciseBoundingBox();
    vec2 upperLeft = bb.getUpperLeft();
    vec2 lowerLeft = bb.getLowerLeft();
    vec2 upperRight = bb.getUpperRight();

    vector<vec2> pathPoints;

    for (int y = upperLeft.y; y <= lowerLeft.y; y++) {
        for (int x = upperLeft.x; x < upperRight.x; x++){
            if (path.contains(vec2(x, y))) {

                pathPoints.emplace_back(vec2(x, y));

            }
        }
    }
return pathPoints;
}

Я в основном получаю ограничивающий путь путь, а затем перебираю каждую координату в этом поле и проверяю, лежит ли он на пути, и если да, я сохраняю это

Я чувствую, что функция has () не подходит для этого, но у меня нет идей, как этого добиться.

Заранее спасибо за помощь.

...