ciao a tutti
devo normalizzare dei valori float tra i valori -3.14 e 3.14
normalmente si fa:
norma = x%3.14;
peccato che in arduino % funziona solo con gli interi.
le 2 soluzioni che vedo per ora sono:
1:
while ( abs(x) > 3.14 ){
x/=3.14;
}
2:
long v = x*100000;//si perde di precisione ma chissene
x= (v%314000)/100000;
altre soluzioni? cerco qualcosa di particolarmente veloce
skaxxo
February 1, 2011, 10:56pm
#2
non ho capito che devi fare, cosa intendi per normalizzare?
skaxxo
February 1, 2011, 11:05pm
#3
scusa ma....
if x>0
fai il modulo
else
moltipchi x per -1
fai il modulo
leo72
February 1, 2011, 11:18pm
#4
Intende dire riportare il valore all'interno di un intervallo. Nel suo caso, l'intervallo è -3,14 / +3,14.
leo72:
Intende dire riportare il valore all'interno di un intervallo. Nel suo caso, l'intervallo è -3,14 / +3,14.
esatto, in particolare stiamo parlando di rotazioni in radianti dove 2PI è l'angolo giro
skaxxo:
if x>0
fai il modulo
else
moltipchi x per -1
fai il modulo
?? che c'entra il modulo?
skaxxo
February 1, 2011, 11:43pm
#6
lesto:
?? che c'entra il modulo?
modulo (%) ovvero il resto della divisione.... viene chiamato anche modulo in programmazione...
in matematica il modulo è abs()... vabè...
eh ma il modulo (http://arduino.cc/en/Reference/Modulo ) funziona solo con gli interi, se no non aprivo la discussione :)
The modulo operator does not work on floats.
skaxxo
February 1, 2011, 11:46pm
#8
ah scusa, pensavo che intero=positivo. sto fuso, pardon!
la tua versione è ok... anche perchè matematicamente è la soluzione migliore...