habe ein kleines ( oder etwas grösseres) Problem. ich habe versucht ein Grafikprogramm zu programmieren. Inhalt des Programmes sollte sein: kleiner Curser mit dem man linien Zeichne kann. Curser Funktioniert bereits, nur wenn ich eine Linie zeichnen möchte funktioniert das nicht so wie ich will. Es sollen mit dem Curser 2 Koordinatenpunkte bestimmt werden und dann vom Punkt_1 zum Punkt_2 eine Linie gezogen werden. Das Problem: Das Zeichnen von Punkt_1 zum Punkt_2 wer kann mir bitte helfen???
Aus deinen Aussagen lassen sich keine Rückschlüsse auf dein Problem entnehmen. VHDL ist doch keine Sprache mit der man Zeichen kann. Schick doch mal deinen VHDL Code mit einem Foto von deinem Display, deinem Cursor, lass dir doch nicht alles aus der Nase ziehen. Kein Mensch kann aus deinen Aussagen irgendeine Information entnehmen, um dir Helfen zu können. Bisschen schreiben hat doch noch niemanden geschadet. G Tobi
okay... wollte mit dem spartan 3 starterkitt board von xilinx eine vga ansteuerung machen und mittesl tastatur eine einfache linie zeichnen. zur optischen unterstützung habe ich eine curser ausgeben lassen damit man sieht wo man sich befindet. wenn man jetzt 2 willkürliche punkte hat( als probe sind 2 Punkte mit koordinaten fix im programm implementiert worden) ich habe gerade im internet gelesen das man so etwas mit dem Bresenham -ALgorithmus macht. Leider habe ich nur ein Beispiel in c und in einer sprache die mir nicht ganz so geläufig ist( ich nehme an das ist kein vhdl sondern verilog und da kenn ich mich nicht so aus -> eigendlich gar nicht. sprich das problem ist: möchte 2 koordinatenpunkte am bildschirm in form einer linie verbinden und habe keine ahnung wie das mit diesem algorithmus funktionieren soll welcher code würde denn was bringen? vhdl code, oder dieser algorithmus code, oder beide
Sauber Also mein Mathematiklehrer hat mir folgendes Beigebracht: Geradengleichung y = m*x + offset Punktsteigungsform y - y1 = m(x-x1) y = m(x-x1)+y1 m = (y1-y2)/(x1-x2) Bei deinem Problem würde sich die Zweipunktform anbieten: (y-y1)/(x-x1) = (y2-y1)/(x2-x1) , wobei Cursor1 P1 = ( y1,x1 ) , wobei Cursor2 P2 = ( y2,x2 ) Diese Zweipunktform umstellen nach y, und du hast deine Funktion, deine gerade ergibt sich, indem du alle Funktionswerte zwischen x1 bis x2 durchrechnest, das könntest du mit einem Automaten machen, oder direkt als Formel in VHDL angeben, wäre sogar noch einfacher, oder nur rechnen wenn du in der entsprechenden Zeile bist. Ich weiss leider nicht, wie du die Pixel im FPGA darstellst, ob du Alle Pixel im Block-Ram abgespeichert hast, und du quasi Pixel für Pixel ausliest, oder wie auch immer. Machbar ist das auf alle fälle. Ich hoffe das hilft dir. G Tobi
Hallo markus, ich habe soetwas vor zig Jahren mal in Pascal (Quellen sind leider nicht mehr auffindbar) nach dem DDA Algorythmus (Digital Differential Analyzer) programmiert. Der Vorteil gegenüber den normalen Algorithmen ist, daß Du komplett mit Addition und Subtraktion auskommst. Ich hab mal kurz gegoogelt und folgendes Dokument gefunden: "http://iamwww.unibe.ch/~fcglib/special_www/cg_lecture/resources/script/cg-skript.pdf" Einfach mal nach DDA suchen.
Hallo, Ich wollt mal schnell was zum Thema Bresenham-Algorithmus und DDA sagen: http://iamwww.unibe.ch/~fcglib/special_www/cg_lecture/resources/script/cg-skript.pdf --- snip --- Seite 45/88 7.1 Rasterkonvertierung [...] Integer DDA Dieser Algorithmus ist besser als der normale DDA. Die ber¨uhmteste Variante stammt von J.E. Bresenham --- snap --- Also auf dem richtigen Weg ist man immerhin mal angekommen! ;) MFG Hannes
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.