私は時々他の線と交差する1ピクセルの線をたどっています、そして私は同じ線にとどまるためのエレガントな方法を見つけようとしています。
現在のピクセルは0
(青)です。前のピクセルは-1
(黒)です。
最初の画像には、次の2つのピクセル(緑と赤)があります1
が、線が続くため、緑のピクセル()を選択する必要があります。
2番目の画像には、同じように満足できる2つの緑色のピクセル(1
)があります。赤色でない限り、どちらかを未定義のままにしておいてかまいません。
pseudo-cppの場合:
vector<Point> points;
for (i = x - 1; i < x + 2; i++) {
for (j = y - 1; j < y + 2; j++) {
if (i == x && j == y) {
continue;
}
if (IS_ON(i, j) && NOT_VISITED(i, j)) {
points.push_back(Point(i, j));
}
}
}
// sort points to find closest to opposite lastX,lastY
lastX = x;
lastY = y;
x = points[0].x;
y = points[0].y;
ソートステップは私が苦労しているビットです。
std :: sortの使用を考えていましたが、比較関数を作成するのに苦労しています。
適切な比較関数はどのようになりますか、それともより洗練されたアプローチがありますか?