Per "Gruppo", intendo un insieme di pixel tale che ogni pixel abbia almeno un pixel adiacente nello stesso set, il disegno mostra un esempio di un gruppo.Come trovare il pixel più lontano da un altro nello stesso gruppo di pixel
desidero trovare il pixel che sta avendo la massima distanza retta da un pixel designato (per esempio, il pixel verde). E la linea retta che collega i due pixel (la linea rossa) non deve lasciare il gruppo.
La mia soluzione sta eseguendo il ciclo dei gradi e simulando l'avanzamento delle linee partendo dal pixel verde con il grado e osservando quale linea ha percorso la distanza più lontana.
longestDist = 0
bestDegree = -1
farthestX = -1
farthestY = -1
FOR EACH degree from 0 to 360
dx=longestDist * cos(degree);
dy=longestDist * sin(degree);
IF Point(x+dx , y+dy) does not belong to the group
Continue with next degree
//Because it must not be the longest line, so skip it
END IF
(farthestX , farthestY) = simulate(x,y,degree)
d = findDistance(x , y , farthestX , farthestY)
IF d > longestDist
longestDist = d
bestDegree = degree
END IF
END FOR
Ovviamente non è il miglior algoritmo. Quindi sto chiedendo aiuto qui.
Grazie e scusa per il mio povero inglese.
Si noti che è possibile scartare calcoli per tutti i pixel interni. – dfens
E non è necessario utilizzare gli angoli. Devi solo usare il teorema di Pitagora;) – dfens
@dfens: "pixel interni" - perché? uno di questi potrebbe essere la soluzione. –