Ah oui, il vaudrait mieux, pour bien faire, que tu prenne quelque jours pour t'habituer un tout petit peu
Par contre, j'ai une mauvaise nouvelle pour toi:
Je (???) crois (???) avoir compris aussi bien ta logique que l'usage auquel tu destinais les différentes variables, mais, si c'est le cas, ton programme présentait un sérieux problème d'échelle, car les deltas (ou, du moins, ce que tu croyais être les delta) ne correspondait pas à la position calculée.
Je présumes que l'affichage allait trop vite et qu'il était trop condensé pour que tu puisse le remarquer, mais j'en suis presque à douter que le résultat que tu obtenais avec ton laser n'ait réellement correspondu à ce que l'affichage te montrais
Cela semble assez évident pour moi, car, n'étant pas sous windows (et ne disposant pas des fonction settextposition, setpixel et autres) , mais voulant me faire une idée de ce que donnait ton affichage, je me suis arrangé pour faire apparaitre les informations sous "compréhensible".
Mais, quand tu vois qu'un delta est sensé faire 9 sur l'axe des X et 4 sur l'axe des Y et que cela fait passer la position de 132 à 134 (sur l'axe des X) et de 202 à 209 (sur l'axe des Y), y a de quoi se poser des questions
Pour que tu puisse te faire une idée du problème (je te dirai comment le résoudre si tu le souhaite), voici le code que j'ai utilisé pour m'en rendre compte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 #include <cstdio> #include <iostream> #include <string> #include <cstring> enum State{ OPEN = 15, CLOSE = 10 }; void fload(); int main(){ fload(); } void fload() { int a=0x11,b=0x10,c=15,cpt,sw=0,dx,dy,tes=0,test=0; fpos_t posi; short x,xx,rx,y,yy,ty,xy,ry,np,ex,ey; std::string filename; std::cin>>filename; FILE *fichier; if((fichier=fopen(filename.data(),"r"))==NULL) { printf("Impossible d'ouvrir le fichier %s", filename.data()); return; } while(!feof(fichier)) { xy=fgetc(fichier); for ( ; sw!=1 ; xy=fgetc(fichier) ) if(xy==a)sw=1; printf("Got %X ",xy); if(xy==a){} else { for (cpt=1 ; !feof(fichier) && xy!=a ; cpt++) { if (cpt==1) { x=xy; if(x<127)xx=x+128; else xx=x-128; } else if (cpt==2) { y=xy; if(y<127)yy=y+128; else yy=y-128; ty=255-yy; rx=xx*1.8710937; ry=ty*1.8710937; np=np+1; tes=tes+1; printf("NBxy:%d x:%x, y:%X ",tes, x, y); printf("status:%d position x:%d, y:%d\n",c,rx,ry); } else if (cpt>=3) { if(xy==0x10) { xy=fgetc(fichier); if(xy==0x80) { printf("\nOPEN\n "); c=15; xy=fgetc(fichier); printf("Got %X ",xy); } if(xy==0x00) { printf("\nCLOSE\n"); c=10; printf("Got %X ",xy); } } if(xy==00) {} else { dx=xy/b; dy=xy%b; ex=dx-8; ey=dy-8; xx=xx+ex; yy=yy+ey; ty=255-yy; rx=xx*1.8710937; ry=ty*1.8710937; np=np+1; test=test+1; printf("NbDelta:%d, ",test); printf("x:%d, y:%d, ",dx,dy); printf("status:%d position x:%d, y:%d\n",c,rx,ry); } } xy=fgetc(fichier); printf("Got %X ",xy); printf("PointsNb:%d\n",np); } } } fclose(fichier); }
Partager