salut
j essai de programmer la formule de descripteurs de fourier adaptes au ploygone
voila le code

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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
class Fourier{
int n,i;  float c() ;  Double  f();

 float uac,vac, t;
  float uac1=0;
   
  
  float uac2 = 0;
  Vector u1 = new Vector(n + 1, 2);
Vector u = new Vector(n , 2);

Double a1;
Double c1;
Double a2 , b1 , b2 , x1 ,y1 ;
int i, k ;
float pi = 3.1416;
Vector f1 = new Vector(n);
Vector f = new Vector(n);



for(int i=1;i<=n;i++){
	
	uac1 = uac1 + (c(i, 1) * c(i + 1, 2) - c(i + 1, 1) * c(i, 2)) * (c(i, 1) + c(i + 1, 1));
    uac2 = uac2 + c(i, 1) * c(i + 1, 2) - c(i + 1, 1) * c(i, 2);

   }
  
uac = (uac1 / (3 * uac2));

  float vac1 = 0;
for(i=1;i<=n;i++)
   {
   	vac1 = vac1 + (c(i, 1) * c(i + 1, 2) - c(i + 1, 1) * c(i, 2)) * (c(i, 2) + c(i + 1, 2));
    }
vac =( vac1 / (3 * uac2));

for(i=1;i<=n+1;i++){

   u1(i, 1) = c(i, 1) - uac;
   u1(i, 2) = c(i, 2) - vac;
}

//ReDim t(n + 1)
t(1) = 0;

for(i=1;i<=n;i++)
 { t(i + 1) = t(i) + math.abs(u1(i, 1) * u1(i + 1, 2) - u1(i + 1, 1) * u1(i, 2)) / 2;

}
tt = t(n + 1);

for(i=1;i<=n;i++)
{

  a1(1) = 0;
  a1(2) = 0;
  b1(1) = 0;
  b1(2) = 0;
  
 for(k=1;k<=n;k++){

   if t(k) <> t(k + 1) {
   
       a1(1) = a1(1) + (Math.cos(2 * Math.PI * i * t(k + 1) / tt) - Math.cos(2 *Math.PI * i * t(k) / tt)) * (c(k + 1, 1) - c(k, 1)) / (t(k + 1) - t(k));
       a1(2) = a1(2) + (-Sin(2 * Math.PI * i * t(k + 1) / tt) + Math.sin(2 * Math.PI * i * t(k) / tt)) * (c(k + 1, 1) - c(k, 1)) / (t(k + 1) - t(k));
       b1(1) = b1(1) + (Math.cos(2 *Math.PI * i * t(k + 1) / tt) - Math.cos(2 *Math.PI * i * t(k) / tt)) * (c(k + 1, 2) - c(k, 2)) / (t(k + 1) - t(k));
       b1(2) = b1(2) + (-Sin(2 * Math.PI * i * t(k + 1) / tt) + Math.sin(2 * Math.PI * i * t(k) / tt)) * (c(k + 1, 2) - c(k, 2)) / (t(k + 1) - t(k));
     }
 }
  
  a1(1) = a1(1) * tt / ((2 *Math.PI * i) ^ 2);
  a1(2) = a1(2) * tt / ((2 *Math.PI * i) ^ 2);
  b1(1) = b1(1) * tt / ((2 * Math.PI * i) ^ 2);
  b1(2) = b1(2) * tt / ((2 * Math.PI * i) ^ 2);
 
  a2(1) = 0;
  a2(2) = 0;
  b2(1) = 0;
  b2(2) = 0;
  
 for(k=1;k<=n;k++)
 {

    if t(k) = t(k + 1) {
   
       a2(1) = a2(1) + Math.cos(2 * Math.PI * i * t(k) / tt) * (c(k + 1, 1) - c(k, 1));
       a2(2) = a2(2) - Math.sin(2 * Math.PI * i * t(k) / tt) * (c(k + 1, 1) - c(k, 1));
       b2(1) = b2(1) + Math.cos(2 * Math.PI * i * t(k) / tt) * (c(k + 1, 2) - c(k, 2));
       b2(2) = b2(2) - Math.sin(2 * Math.PI * i * t(k) / tt) * (c(k + 1, 2) - c(k, 2));
      }
 }
  
  a2(1) = a2(1) / (2 * Math.PI * i);
  a2(2) = a2(2) / (2 * Math.PI * i);
  b2(1) = b2(1) / (2 * Math.PI * i);
  b2(2) = b2(2) / (2 * Math.PI * i);
  
  c1 = a2(1);
  a2(1) = -a2(2);
  a2(2) = c1;
  
  c1 = b2(1);
  b2(1) = -b2(2);
  b2(2) = c1;
  
  u(i, 1) = a1(1) + a2(1) - b1(2) - b2(2);
  u(i, 2) = a1(2) + a2(2) + b1(1) + b2(1);
  f1(i) = Math.sqrt(u(i, 1) ^ 2 + u(i, 2) ^ 2);
 }


for(int i=1;i<=n;i++)
{f(i) = (f1(i) / f1(1));
}

}
le probleme que j ai trop de fautes et parmis ses faute le ligne ou il y a la boucle for je sais pas ou est le probleme
alors si qulqu un peu m aider svp