Ich habe versucht, alle anderen Artikel zu diesem Thema zu betrachten, aber ich habe nichts gefunden. Meine Frage ist, wie könnte ich bei vier Eckpunkten eines Rechtecks irgendwelche Punkte finden, die innerhalb oder auf dem Rechteck liegen, unabhängig von der Drehung. Mein Zweck ist, dass ich ein Array habe, das eine Karte darstellt, wobei jeder Index eine Punktposition darstellt. Ich möchte in der Lage sein, ein Rechteck auf dieser Karte zu platzieren und alle Punkte, die es abdeckt, zu füllen. Wenn Pseudo-Code zur Verfügung gestellt werden könnte sowie die Mathematik dafür würde ich es sehr zu schätzen wissen. Ich bin vertraut mit Java und RBX.LuaAlle Punkte in einem Rechteck finden?
Antwort
Googeln Sie einfach "fill-Rechteck-Algorithmus" und Sie werden viele Lösungen und Beispiele finden.
Ein einfacher Weg:
Für jede Zeile (oder Spalte) des Rasters (Bild), berechnen die Kreuzungen mit dem Rechteck.
Damit haben Sie eine Reihe von Intervallen, die Sie ausfüllen müssen.
Vielleicht auch das Lesen dieser http://fivedots.coe.psu.ac.th/~montri/Teaching/240-422/filling1.pdf
hilft, weiß ich nicht, ob dies ist, was Sie suchen ...
aber immer noch ein einfacher Weg, dieses Problem zu lösen wäre, schließen Sie die vier Punkte Verwenden eines Linienzeichnungsalgorithmus und Anwenden eines einfachen Füll- oder Grenzfüllungsalgorithmus.
Hinweis: Alle diese Algorithmen kommen unter Computergrafik. Auch diese Technik ist ein viel schnellerer Ansatz als das interne Füllen von Punkten nacheinander und eliminiert auch Berechnungen für Punkte außerhalb des Rechtecks.
Bevor Sie die Füllung anwenden, müssen Sie die Begrenzungslinien mit der Linienzeichnung algo zeichnen und die Werte der Grenze auf newcol (newcolour) setzen, dann kann die untere Füllung verwendet werden.
void floodfill(int x,int y,int old,int newcol)
{
int current;
//assign current with the color of x,y point
if(current==old)
{
//assign x,y point with newcol
floodfill(x+1,y,old,newcol);
floodfill(x-1,y,old,newcol);
floodfill(x,y+1,old,newcol);
floodfill(x,y-1,old,newcol);
}
}
können Sie das obige Verfahren verwenden, wo Sie müssen nur alle innerhalb Punkt gehen (x, y) des Rechtecks und alten Farbe, die mit der neuen Farbe ersetzt werden soll. Angenommen, die Farbwerte sind ganzzahlige Werte in dem von Ihnen erwähnten Array.
Verwenden Point-In-Polygon (Java sample code) zu überprüfen, ob sich ein Punkt innerhalb der Umgebung ist, oder nicht. Für Ihren Fall ist der Bereich ein Rechteck. Wenn mit multiply Punkten, Schleife durchlaufen und Punkt für Punkt überprüfen.
- 1. Finden Sie alle Punkte in einem Flugzeug
- 2. Konvertiere 2 Vektor2 Punkte zu einem Rechteck in XNA/Monogame
- 3. CGAL Innere Punkte in einem Netz finden
- 4. DQL-Abfrage für geo räumliche Punkte st_within einem Rechteck
- 5. Finden von Punkten in einem Rechteck in einem bestimmten Winkel
- 6. SQL: Liste der Punkte auf Rechteck
- 7. Finden Sie alle Punkte in einem bestimmten Radius von einem anderen Punkt
- 8. Finden Sie die Anzahl aller Punkte in einem 3D-Raum, die strikt kleiner sind als alle Punkte in diesem Raum?
- 9. Alle Punkte (.) In Wordpress Permalink
- 10. OpenCV Python: Finden Sie Konturen/Kanten/Rechteck in einem Bild
- 11. das Rechteck Finden bestimmter Text in einem Bild enthält
- 12. Konvertieren Sie zwei Punkte in ein Rechteck (cv :: Rect)
- 13. Finden Sie alle Punkte mit ganzzahligen Koordinaten im Tetraeder
- 14. Algorithmus um Articulation Punkte in einem gerichteten Graphen zu finden
- 15. Finden Sie Punkte mit einem Bereich zwischen zwei Zahlen
- 16. Äquidistante Punkte in einem Liniensegment
- 17. Gegeben drei Punkte auf einem Tetraeder, finden Sie die 4.
- 18. Worte in einem Rechteck C#
- 19. Doppel Punkte in einem ggplot
- 20. Das größte leere Rechteck (desorientiert) in der 2D Punktwolke finden
- 21. Wie zeichne ein Rechteck in einem Rechteck mit Svg?
- 22. Finden Sie alle Verzeichnisse in einem Verzeichnis
- 23. Finden Sie alle Dateien in einem Ordner
- 24. Zeichnen Rechteck durch Klicken auf zwei Punkte auf Leinwand
- 25. cocos2d Hilfe Punkte auf einem Kreis zu finden
- 26. gegeben zwei Punkte wie kann ich feststellen, ob ein Rechteck durch eine Linie die Punkte verbindet
- 27. Liste der Punkte und finden Sie die nächstgelegenen Punkte Problem
- 28. Finden Sie "äußere" Ecken aus der Menge x, y Punkte
- 29. Wie alle Punkte in ggplot2 plotten?
- 30. alle Punkte (mögliche conbination) in Streudiagramm
Mögliches Duplikat von http://stackoverflow.com/questions/17136084/checking-if-a-point-is-inside-a-rotated-rectangle. – lhf