[ALG] Lijn algoritme

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

  • AuC
  • Registratie: Januari 2003
  • Laatst online: 22-05 11:11
Hey,

Momenteel ben ik een beetje in de weer met SDL. Ik wil SDL gebruiken i.s.m OpenGL, maar omdat ik het niet kon laten, ben ik eens de 2D functionaliteit (?) van SDL aan het testen.

Na een tutorial te hebben gevolgd, probeer ik nu een lijn algoritme toe te voegen aan mijn applicatie. Ik heb er één gevonden op Gamedev.net, maar deze lijkt niet te werken.

Ik gebruik nu de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
void DrawLine(SDL_Surface *screen, int x1, int y1, int x2, int y2, 
              Uint8 R, Uint8 G, Uint8 B)
{
  int deltax = abs(x2 - x1);
  int deltay = abs(y2 - y1);
  int x = x1;
  int y = y1;
  
  int xinc1, xinc2;
  int yinc1, yinc2;
  
  int den;
  int num;
  int numadd;
  int numpixels;
  
  if(x2 >= x1)
  {
    xinc1 = 1;
    xinc2 = 1;
  }
  else
  {
    xinc1 = -1;
    xinc2 = -1;
  }
  
  if (y2 >= y1)
  {
    yinc1 = 1;
    yinc2 = 1;
  }
  else
  {
    yinc1 = -1;
    yinc2 = -1;
  }
  
  if(deltax >= deltay)
  {
    xinc1 = 0;
    yinc2 = 0;
    den = deltax;
    num = deltax / 2;
    numadd = deltay;
    numpixels = deltax;
  }
  else
  {
    xinc2 = 0;
    yinc1 = 0;
    den = deltay;
    num = deltay / 2;
    numadd = deltax;
    numpixels = deltay;
  }
  
  for(int curpixel = 0; curpixel <= numpixels; curpixel++)
  {
    DrawPixel(screen, x, y, R, G, B);
    num += numadd;
    if(num >= den)
    {
        num -= den;
        x += xinc1;
        y += yinc1;
    }
    
    x += xinc2;
    y += yinc2;
  }
}


Deze werkt prima voor een lijn van bijvoorbeeld 0, 0 naar 640, 480. Maar als ik een lijn wil neerzetten van 640, 480 naar 0, 0 blijft hij deze tekenen als 0, 0 naar 640, 480. Weet iemand misschien een goed werkende lijn algoritme voor me? Of kan iemand me vertellen wat hier fout aan is? (Ik heb deze overigens gevonden op http://www.gamedev.net/reference/articles/article1275.asp).

Alvast bedankt
AuC

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:03
Wat is dan het verschil tussen een lijn van 0,0 naar 640,480 en een lijn van 640,480 naar 0,0 :?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

P&W FAQ - Scriptrequests

Praten over je code okee, discussies over algoritmes okee, maar een gejat stuk code hier neerpleuren en vervolgens vragen of wij een betere weten heeft niets met Programming & Webscripting van doen.

Professionele website nodig?


Dit topic is gesloten.