Bresenham du dessin de la ligne de Code
Je suis en train de dessiner une ligne en langage C à l'aide de l'algorithme de Bresenham.Je suis en turbo C++ dans dosbox pour windows 7 pour mettre en œuvre ce code.Lors de la compilation, je ne suis pas d'erreur mais quand je lance le code, les programmes se termine après l'obtention de l'2 coordonnées.S'Il Vous Plaît Aider..
le message sur la compilation est comme suit..
les répertoires du chemin d'accès est comme suit
Mon 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();
}
Sauf si vous travaillez sur des systèmes embarqués,
Pouvez vous s'il vous plaît spécifier exactement l'erreur et le numéro de la ligne.
Je ne suis pas un message d'erreur en tant que telle lors de la compilation ou de l'exécution..seulement que quand j'ai entrer les valeurs des 1er coordonne le programme est mis fin abruptement...
Utilisation
void main()
est faux, faux, faux. int main (void)
, h**k s sake!Pouvez vous s'il vous plaît spécifier exactement l'erreur et le numéro de la ligne.
Je ne suis pas un message d'erreur en tant que telle lors de la compilation ou de l'exécution..seulement que quand j'ai entrer les valeurs des 1er coordonne le programme est mis fin abruptement...
Utilisation
Alt + F5
pour voir si un msg d'erreur a été généré, mais vous n'étiez pas en mesure de le voir parce que la fenêtre de la console fermée.
OriginalL'auteur Lucy | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
OP devraient poste d'entrée qui a été utilisé.
La posté exemple de code ne fonctionne pas est
x1
>x2
niy1
>y2
. C'est un ensemble de données qui permettrait d'arrêter la routine brusquement. Pour corriger, ledx
etdy
devrait être fondée sur la valeur absolue et la différentielsx
&y
mesures doivent être indépendamment+1
ou-1
.Une entrée de
3,4
au lieu de3 4
(virgule vs espace) sera aussi gâcher la routine.Dans la boucle while, recommander
if(p <= 0)
.OP "... le code les programmes se termine après l'obtention de l'2 coordonnées." n'est pas assez détaillé, pour des cours sur le code devrait mettre fin à un certain temps après l'obtention de l'2 coordonnées. Mais l'OP n'a pas de détails là où il se termine trop tôt.
OriginalL'auteur chux
C'est typique d'un parfait point de départ pour le débogueur et de passer par le code de l'étape-par-étape, en regardant l'une des variables. Si un débogueur n'est pas disponible, printf débogage de la console est une solution de secours.
Un premier conseil est de vérifier que ces lignes ne génère pas d'erreur/exception:
OriginalL'auteur stefan_ah
Un moyen de rectifier le problème est de changer le chemin d'accès dans la initgraph en fonction de l'adresse mentionnée dans la capture d'écran..
OriginalL'auteur Lucy
Beau programme. Mais, vous n'avez pas initialisé une boucle ainsi que des lignes codées en tout-boucle ont été partiellement incorrecte. Voici mon essai:-
OriginalL'auteur ashumeow