Bresenham ' s line drawing Code
Ich versuche, zeichnen Sie eine Linie in der C-Sprache mit Bresenham ' s Algorithmus.Ich bin mit turbo C++ in der dosbox für windows 7 zur Umsetzung dieses Verhaltenskodex.Beim kompilieren bekomme ich nicht alle Fehler, aber wenn ich den code ausführen der Programme endet nach Erhalt der 2-Koordinaten.Bitte Um Hilfe..
die Meldung beim kompilieren, ist wie folgt..
die Verzeichnisse Pfad ist wie folgt
Mein code..
# include <stdio.h>
# include <conio.h>
# include <graphics.h>
void main()
{
int dx,dy,x,y,p,x1,y1,x2,y2;
int gd,gm;
clrscr();
printf("\n\n\tEnter the co-ordinates of first point : ");
scanf("%d %d",&x1,&y1);
printf("\n\n\tEnter the co-ordinates of second point : ");
scanf("%d %d",&x2,&y2);
dx = (x2 - x1);
dy = (y2 - y1);
p = 2 * (dy) - (dx);
x = x1;
y = y1;
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"e:\\tc\\bgi");
putpixel(x,y,WHITE);
while(x <= x2)
{
if(p < 0)
{
x=x+1;
y=y;
p = p + 2 * (dy);
}
else
{
x=x+1;
y=y+1;
p = p + 2 * (dy - dx);
}
putpixel(x,y,WHITE);
}
getch();
closegraph();
}
Es sei denn Sie arbeiten auf einem embedded-Systeme,
Kannst du bitte genauer Angabe des Fehlers und die Nummer der Zeile.
Ich bin nicht immer eine Fehlermeldung als solche beim kompilieren oder ausführen..nur, dass wenn ich geben Sie die Werte der 1. koordiniert das Programm wird abrupt beendet...
Verwenden
void main()
ist falsch, falsch, falsch. int main (void)
für h**k ' s sake!Kannst du bitte genauer Angabe des Fehlers und die Nummer der Zeile.
Ich bin nicht immer eine Fehlermeldung als solche beim kompilieren oder ausführen..nur, dass wenn ich geben Sie die Werte der 1. koordiniert das Programm wird abrupt beendet...
Verwenden
Alt + F5
zu sehen, ob irgendwelche Fehler msg generiert wurde, aber Sie waren nicht in der Lage, es zu sehen, weil die Konsole-Fenster geschlossen.InformationsquelleAutor Lucy | 2013-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
OP sollte post-Eingang verwendet wurde.
Den geposteten Beispielcode nicht funktioniert, ist
x1
>x2
nochy1
>y2
. Dies ist ein Satz der Eingabe, würde aufhören, die routine abrupt. Zu beheben, diedx
unddy
werden sollte, basierend auf den absoluten Wert und die inkrementellex
&y
Schritte müssen unabhängig voneinander+1
oder-1
.Einer Eingabe von
3,4
statt3 4
(Komma vs. whitespace) wird auch mess up die routine.In der while-Schleife, empfehlen
if(p <= 0)
.OP ' s "... code der Programme endet nach Erhalt der 2-Koordinaten." ist nicht ausführlich genug, denn natürlich ist der code sollte irgendwann kündigen nach Erhalt der 2-Koordinaten. Aber OP nicht genau, wo es endet zu früh.
InformationsquelleAutor chux
Dies ist eine typische perfekte Punkt, um den debugger zu starten und gehen Sie durch den code Schritt-für-Schritt, beobachtete Variablen. Wenn ein debugger ist nicht verfügbar, printf-debugging auf der Konsole ist eine backup-alternative.
Erste Tipp ist, zu prüfen, dass diese Zeilen nicht generieren, eine Fehlermeldung/exception:
InformationsquelleAutor stefan_ah
Einen Weg, um das problem zu beheben ist, indem Sie den Pfad in der initgraph-Funktion gemäß der genannten Adresse in dem Screenshot..
InformationsquelleAutor Lucy
Schönes Programm. Aber, hast du nicht initialisiert, jede loop als auch als Linien codiert in der while-Schleife, waren teilweise falsch. Hier ist mein Versuch:-
InformationsquelleAutor ashumeow