Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » mit shorts geht es mit longs nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.04.2006, 19:19 Uhr
scales of justice



ich hab Bresenhams Linienalgorithmus implementiert:


C++:
void line1(short x1, short y1, short x2, short y2, char color)
{
  short delta_x;
  short delta_y;
  short xstep;
  short ystep;
  short length;
  short e;
  short offset;

  delta_x = x2 - x1;
  delta_y = y2 - y1;
  xstep = 1;
  ystep = -width;

  if(delta_x < 0)
  {
    delta_x = -delta_x;
    xstep = -xstep;
  }
  if(delta_y < 0)
  {
    delta_y = -delta_y;
    ystep = -ystep;
  }
  if(delta_y > delta_x)
  {
    long t = delta_x;
    delta_x = delta_y;
    delta_y = t;
    t = xstep;
    xstep = ystep;
    ystep = t;
  }

  length = delta_x + 1;
  e = delta_y;

  x1 += width2;
  x2 += width2;
  y1 = - y1 + height2 - 1;
  y2 = - y2 + height2 - 1;

  offset = y1 * width + x1;

  while(length-- > 0)
  {
    ppixel[offset] = color;

    offset += xstep;
    e += delta_y;

    if(e >= delta_x)
    {
      e -= delta_x;
      offset += ystep;
    }
  }
}


die Linie soll von x1|y1 nach x2|y2 gezogen werden, in der Farbe color

width ist die breite der Zeichenläche
heigh die höhe
width2 ist die halbe breite
heght2 die halbe höhe

(width2 und height2 wird am Anfang deklariert, damit sie nicht immer wieder ausgerechnet wrden müssen)

ppixel ist ein char-array, in dem die Farbe jedes Pixels der Zeichenläche gespeichert ist

compilieren tu ich das ganze mit Turbo C, also 16-Bit


alle shorts die in dem Code vorkommen will ich in longs umwandeln, wenn ich das mache fängt die funktion allerdings an zu spinnen
und auf meiner Zeichenfläche kommt nichts an
belasse ich die shorts klappt es problemlos

ein großes Problem stellt das nicht dar, aber mich würde einfach mal interessieren warum es mit longs nicht klappt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.04.2006, 20:52 Uhr
scales of justice



habs jetzt, hab bloß das falsche Speichermodell genommen
auf sowas kommt man einfach nicht wenn man sonst unter Windows programmiert

komisch dass man hier seine Postings nach ner zeit nicht mehr editieren darf
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: