| Autor |
Nachricht |
roKR-91
       
Beiträge: 22 Dabei seit: 29.02.2008
|
hi leute...mla wieder ein problem...hab im netz mal nachgeschaut wie ich einen kreis mit dem bresenham-algorithmus zeichnen kann...allerdings ist der kreis nich vollständig...bzw ein teil fehlt oder wird nicht gespiegelt...siehe bild
Moderiert von Tino: Screenshot als Anhang hinzugefügt.
Einloggen, um Attachments anzusehen!
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
sollte man nicht immer zeichnen?
Du zeichnest nicht alle 8 Symmetrien.
Du hast auch in den Kommentaren sich überschneidende Begin end, was nicht möglich ist.Dein end while bezieht sich auf if und umgekehrt.
Ich habe es jetzt etwas ?anschaulicher? gemacht, indem ich eine Prozedur zum zeichnen der Kreispunkte eingebaut habe, dadurch wird es übersichtlicher.
Gestestet
Gruß Horst
Zuletzt bearbeitet von Horst_H am Do 28.01.10 10:30, insgesamt 1-mal bearbeitet
|

|
|
roKR-91
       
(Threadstarter)
Beiträge: 22 Dabei seit: 29.02.2008
|
hi...kann dir i-wie nich ganz folgen...
muss zeile 17 und zeile 18 in deinem text nich getauscht werden..und wie meinst du das "x ändern"?
und welche punkte soll ich da ausgeben...bin nicht so der info-freak...^^
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
uups ich habe es gerade editiert.
Schau es Dir nochmals an.
Gruß Horst
|

|
|
roKR-91
       
(Threadstarter)
Beiträge: 22 Dabei seit: 29.02.2008
|
herrlich...riesengroßen dankeschön jetz brauch ich nur noch rauskriegen wie ich den kreis an das raster anpasse...also ein kästchen soll einen pixel darstellen...
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Guten morgen,
Das geht genauso einfach, statt Kreis in Pixelauflösung, machst Du einen Kreis in Kästchenauflösung.
Wenn ein Kästchen/Quadrat 10 Pixel hoch/breit ist wird aus r = 100 Pixel eben:
r(Kästchen) = r(Pixel) / PixelPrKaestchen
Du musst nur statt KreisPunkteAusgeben ein KaestchhenPunkteAusgeben schreiben.
Schau Dir mal (form1.image1.canvas).Fillrect hier an, um Brush und pen so zu setzen, wie Du es gerne hättest.Statt alles = cliprect, beschreibst Du nur ein kleines Quadrat rect(0,0,PixelPrKaestchen,PixelPrKaestchen).
xm und ym wandern auch auf andere Positionen.
Sie müssen ohne Rest durch PixelPrKaestchen teilbar sein und bezeihen sich auf die linke obere Ecke des Kaestchens.
Gruß Horst
|

|
|
roKR-91
       
(Threadstarter)
Beiträge: 22 Dabei seit: 29.02.2008
|
hm...mein delphi kennt "PixelPrKaestchen" nich...was jetz ?
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
PixelPrKaestchen sind die Pixel pro Kaestchenquadratseite.
Dieses PixelPrKaestchen kannst Du als Konstante oder als Variable erstellen.
Also PixelPrKaestchen :=10 fuer 10x10 Punkte Quadrate.
Gruß Horst
|

|
|
Xion
       

Beiträge: 1339 Erhaltene Danke: 2 Dabei seit: 23.02.2006 Wohnort: Mitte Deutschlands / A**** der Welt
Windoof 2000, XP Delphi 6 Enterprise / Delphi 2005 Prof
|
_________________ a broken heart is like a broken window - it'll never heal
F steht für Feuer das wütet und lodert U steht für unfairer Kampf N steht für nukleares Waffenarsenal (Plankton)
|

|
|
roKR-91
       
(Threadstarter)
Beiträge: 22 Dabei seit: 29.02.2008
|
hm ich hab jetz da mal ein wenig dran rumgeschraubt...leider ohne den gewünschten erfolg...
die procedure für den kreis sieht jetz so aus :
ich denke der fehler liegt immer noch hier :
da der kreis einfach nur kleiner wird. also der radius nur kleiner wird...8 ist hier bei die rastergröße also wie hoch und breit ein kästchen ist
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
Du willst doch gefüllte Quadrate / Kästchen zeichnen.
Dann musst Du auch fillrect nutzen.
Wenn Du einen Kreis um 3,3 mit Radius 3 KE ( KästchenEinheit ) zeichnest, muss Du deine Koordianten umrechnen.
Wenn Du 10 PpK (Kantenlänge eines Kästchen in Pixel ) als 1 KE hast musst Du die Koordinaten umrechnen.
Kästchen in Pixel -> Faktor : PpK = 10
Pixel in Kästchen -> Faktor : 1/PpK = 1/10
Jetzt brauchst Du den Kreis nur in Kästcheneinheiten zu rechnen also Radius 3 und xm, ym = 3
Jeder berechnete Wert muss aber zentrisch gestreckt werden, dass heisst die Koordinaten in Pixel umgerechnet werden.
Das ist höchst kompliziert  Der Mittelpunkt des Kästchens ist dann PpK * berechnete Koordinate.
Jetzt steht da so was wie Mittelpunkt, Du brauchst zum zeichen aber die linke obere Ecke.
Die Koordinate der linken oberen Ecke des Kästchens ist um 0,5 *PpK nach links und 0,5 *PpK nach oben gegenüber der Mitte verschoben.
Das sollte doch jetzt machbar sein
Gruß Horst
Einloggen, um Attachments anzusehen!
|

|
|
roKR-91
       
(Threadstarter)
Beiträge: 22 Dabei seit: 29.02.2008
|
so ich hab mich jetz noch mal intensiv mit fillrect befasst...und hab jetz erstmal das prinzip verstanden...
aber wie krieg ich nun den oberen linken punkt(x;y) raus und wo kann ich einstellen das der nur bis (x+dx;y+dy) das rechteck zeichnet ?
dx := breite des rasters
dy := höhe des rasters
|

|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
|
|