Darstellungsfehler? bei anliegenden Linien

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Edlothiol

Betreff: Darstellungsfehler? bei anliegenden Linien

BeitragMi, Jun 09, 2004 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bastele grade an ein paar Funktionen für Verläufe u.Ä. Bei Verläufen, die einen bestimmten Winkel (also nicht einfach nur horzontal / vertikal) haben sollen, gibt es allerdings ein Problem. Ich benutze Line und setze Linien nebeneinander, aber es gibt komische Darstellungsfehler: Pixel, die schwarz bleiben. Eigentlich müsste jedes Pixel bedeckt sein, ich hab dazu auch andere Tests gemacht wo das klappte. Ich hab mal nen Screen davon hochgeladen, man achte auf das Quadrat in der zweiten Reihe ganz links:
Screenshot des Fehlers
Das Quadrat in der ersten Reihe ganz rechts ist übrigens auch mit der Funktion gezeichnet, nur ist es da ein Winkel von 45° und nicht 60.

Wenn ich die Schritte, in denen die Linien gezeichnet werden, auf 0.5 setze, werden es wieder weniger Punkte; wenn ich auf andere Werte unter 1 setze, bleibt es gleich. Ich bin am überlegen, ob ich meine eigene Linienfunktion mit einer einstellbaren Dicke schreiben soll, aber ich fände eine andere (und schnellere Wink ) Lösung besser. Ich hab die Exe selbst auch noch hochgeladen, Download hier. Wenn man eine Taste drückt, kommt ein kleiner Test, wo Linien in .5 - Schritten nebeneinander gezeichnet werden. Da klappt es überall, ausser ganz rechts, wo auch ein paar Pixel schwarz bleiben. Wenn ich 1ner - Schritte nehme, sind es ein paar mehr schwarze Pixel (aber auch nur rechts). Ich hoffe mal, irgendjemand hat eine Idee, woran das liegen könnte.

Vincent

BeitragMi, Jun 09, 2004 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo !

das is einfach nur pech ... die linienfunktion malt, wie du schon richtig erkannt hast, immer nur einen pixel auf der "kürzeren" strecke ( Xstrecke = |X1-X2| , Ystrecke = |Y1-Y2| ), aber dafür mehr pixel auf der "längeren" strecke.

wenn der winkel der linie 45° beträgt, dann sind beide strecken gleich lang, also die pixelanzahl in horizontaler richtung gleich der pixelanzahl in vertikaler richtung. ... das ist dir sicher bereits klar.

... um das problem zu umgehen kannst du entweder die linienstärke erhöhen (mit eigener funktion) oder die linien noch näher nebeneinander malen, oder koordinaten der linien zufällig um 1 pixel variiren, oder gleich alles mit writepixelfast machen ... das is eh viel cooler, weil da da nich nur linienfarbverläufe, sondern auch farbferläufe von highlights etc machen kannst.
Gott ist nicht mit uns ... weil er mit Idioten keine Gnade kennt !

TheShadow

Moderator

BeitragDo, Jun 10, 2004 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
so einen farbverlauf würde ich anders machen:

pixel für pixel einen rechteck malen - über rotationsformel einen ursprungspunkt bestimmen. Wenn man X-Koordinate für Verlauf nimmt, dann kann man ganz leicht die Farbe bestimmen - so könnte man sauberste Verläufe machen - wäre dann natürlich langsamer als Line Smile Dafür deutlich "feiner"
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group