Finden Sie den Schnittpunkt zwischen LIne und Grid in einer schnellen Art und Weise

8

Gibt es überhaupt eine Möglichkeit, alle Schnittpunkte zwischen einer Linie und einem Gitter zu finden? (Die Schnittpunkte sind nicht maßstabsgetreu gezeichnet, weiß ich)

Ein Brute-Force-Verfahren besteht darin, einen Schnittpunkt für das x-y -Gitter mit der Linie zu berechnen, aber dieser Algorithmus ist sehr ineffizient ( O(m*n) , wobei m die Anzahl von x grid und n ist) die Anzahl von y grid).

Ich suche nach einem besseren Algorithmus dafür.

    
Graviton 17.07.2010, 08:45
quelle

3 Antworten

6

Klingt so, als ob Sie einen Digital Differential Analyzer oder Bresenhams Linienalgorithmus . Bresenham ist derselbe Algorithmus, der verwendet wird, um Linien auf einer Bitmap zu zeichnen; In diesem Fall entspricht das Einfärben eines Pixels der Überprüfung auf Kollisionen in diesem Quadrat.

    
celion 17.07.2010 10:48
quelle
6

Ich bin mir nicht sicher, ob ich die Frage wirklich verstehe. Ist das, wonach Sie suchen?

Abbildung 1 http://i31.tinypic.com/mwwg37.png

Abbildung 2 http://i27.tinypic.com/657uc1.png

    
dtb 17.07.2010 11:15
quelle
0

Wenn das Gitter auf die Achse ausgerichtet ist:

  1. finde die Liniengleichung
  2. Berechnen Sie die Schnittpunkte direkt mit dem Gitter Linie x oder y als feste Variable

Wenn das Gitter regelmäßig ist, ist der Abstand zwischen den Schnittpunkten mit jeder horizontalen Linie gleich. Das Gleiche gilt auch für die vertikalen Linien. Sie könnten einfach einen einfachen iterativen Algorithmus mit dx und dy in diesem Fall machen.

    
jackrabbit 17.07.2010 11:30
quelle

Tags und Links