Autor Beitrag
satc1985
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 06.04.15 08:07 
Hallo und frohe Ostern :-),

ich arbeite mich zur Zeit für eine Klausur ein wenig in den Bresenham Algorithmus ein.
Ich habe hier einen Code und dazu die Frage was sich ändert (also in welchen Oktanten gezeichnet wird) wenn man die Absolutbeträge bei deltaX und deltaY weglässt.
Ich dachte ja eigentlich das es immer Absolutbeträge sein müssen.

Hier der Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
void zeichneLinie(x0,y0,x1,y1){

int deltaX = abs(x1-x0); //also dann int deltaX = x1-x0;
int deltaY = abs(y1-y0); //also dann int deltaY = y1-y0;

int Q = 2*deltaY-deltaX;
int Qdown = 2*deltaY;
int Qup = 2*(deltaY-deltaX); 

int y=y0; 

for(int x = x0: x<= x1; x++){

  setPixel(x,y);

  if(Q < 0){ 
    Q=Q+Qdown; 
  }else{
    Q=Q+Qup;
    y--;
  }
}
}

Der befindet sich ja im 8 Oktanten.
Es gibt folgende Antwortmöglichkeiten:
Linien im ersten Oktanten werden gezeichnet? Linien im 5 werden in den Ersten abgebildet? und Linien im 8 werden korrekt dargestellt?

Im 8 kann doch nicht sein da deltaX dafür doch abs sein muss.
Ich würde tippen auf Linien im 5 werden in den Ersten abgebildet, aber kann mir das nicht so wirklich herleiten.

Danke für eure Hilfe

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
ssb-blume
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 375
Erhaltene Danke: 7

XP, W7, W8
Deutschland
BeitragVerfasst: Di 07.04.15 08:56 
Hallo,
meines alten Wissens nach ist abs nicht erforderlich.
es gibt auch noch bei Bresenham den Kreis und fill!

Alles schon lange her...

Hansi

_________________
Brain: an apparatus with which we think we think.
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Di 07.04.15 20:54 
Hallo,

a) Es wird immer in Richtung zunehmender x gezeichnet (Zeile 13);
b) 2.,3.,6.,7. Oktant: Q>0, sonst Q<0; (naja, die Grenzlinie....)
c) im 1., 5. und 8. ist somit Q<0. Dafür wird aber y nicht verändert, es entsteht also eine Parallele zur x-Achse.

Fehlt da was in Deinem Code oder habe ich mich irgendwie geirrt?

Gruß
GuaAck
satc1985 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 09.04.15 09:03 
Hallo und danke für eure Antworten.

Ja das ist ein unvollständiger Code, der ist aus einer alten Klausur.
Die Frage war einmal in welchem Oktanten generell gezeichnet wird und zum einem das was ich zum Absolutbetrag gefragt habe.

Wenn ich dich GuaAck richtig verstehe könnte ich den Oktanten erst erkennen wenn ich die Zahl von Q kenne?
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Do 09.04.15 23:32 
Hallo satc1985,

nein nein, Q ergibt sich ja aus den Koordinaten, das ist klar. M. E. kann man die Frage des Oktanten aus dem Code nicht bestimmen. Dem Code nach wird immer die Grenzlinie zwischen dem 1. und 8. bzw. 4. und 5. Oktanten gezeichnet. Deshalb trifft keine der Antworten zu. Es wird in keinem der Oktanten gezeichnet, abgesehen von den Grenzlinien.

Das hilft aber alles nicht.

Ich lehre auch. Falls Du nicht beim Kopieren ins Forum versehentlich eine Zeile mit y++ gelöscht hast, dann könnte es sein, dass die Klausuraufgabe wirklich fehlerhaft ist (kommt vor) oder evtl. per Ansage zu Beginn der Klausur per Ansage korrigiert wurde.

Meine Empfehlung: Vergiss diese Aufgabe, nutze die Zeit, die Idee des Algorithmus gut zu verstehen.

Viel Erfolg,
Gruß GuaAck