1
我下面的一個像素線,有時會與其他線相交下一個像素,而我試圖找到一種優雅的方式留在同一行。巧妙的方法來查找行
當前像素被0
(藍色)。前一個像素是-1
(黑色)。
在第一圖像有兩種可能的下一個像素(綠色和紅色),但因爲它繼續行應被選擇的綠色像素(1
)。
在第二個圖像中有兩個綠色像素(1
),我會同樣高興 - 我不介意讓它們之間的選擇不確定,只要它不是紅色的。
在僞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 ::排序的,但我有一個困難時期制定的比較功能。
將適當的比較函數是什麼樣子,或者是有沒有更好的方法?
我沒有經歷過太多的都以爲這一點,但如何從過去的像素只是選擇像素最遠? – Bwmat
您的問題描述不合格,或者您沒有提供所有信息。選擇右圖中的任何一個像素不再是一條線,除非您定義了一個開始/終點並使用像bresenham這樣的東西來遍歷該線。然後由於光柵化(即混疊)而發生步驟。 你的斜坡總是1嗎?如果是的話,那麼1就不在你的線上。當兩個1都在正確的圖像中失蹤時會發生什麼?紅色像素是您的「最佳選擇」?但是,你正在追隨一條曲線而不是一條線。 – pokey909
@Bwmat你是對的,我通過考慮當前像素而過度複雜。距離前一個像素最遠的像素是我所需要的,謝謝! – user1671701