pixi(), t_translate(), t_rotate() (по моему это взаимосвязано).
Начнём с округления.
Есть программа:
Code: Select all
// периодическая последовательность чисел
fn repeat( $period , $n) //выдаёт от 0 до period - 1
{
$a=$n/$period
$b=$a-floor($a)
ret($period*$b)
}
period=3
n=0 m=10
printf("period=%f n=%f \n",period,n)
while(n<m)
{
x=repeat(period, n)
printf("repeat(%f,%f)=%i \n",period,n,x)
n+1
}
А должно быть так:
period=3.000000 n=0.000000
repeat(3.000000,0.000000)=0
repeat(3.000000,1.000000)=1
repeat(3.000000,2.000000)=2
repeat(3.000000,3.000000)=0
repeat(3.000000,4.000000)=1
repeat(3.000000,5.000000)=2
repeat(3.000000,6.000000)=0
repeat(3.000000,7.000000)=1
repeat(3.000000,8.000000)=2
repeat(3.000000,9.000000)=0
Если period чётный например 4, то:
Всё нормально. Вообще при любых чётных числах.
А если взять period =6 и m=12 то: таже фигня, при всех нечётных .
p.s. если добавить к n 0.1 то с всё вычисляется нормально, но то что нужно что-то добавлять - не нормально.