C#で作成した円を描くロジックの数値を具体的に確認してみたかったので、rubyで似たようなロジックを作成して出力してみました。
paintcircle.rb
---------------------- O ----------------
x = 0
y = 0
r = 100
ix=r*1.0
iy=0.0
E=1.0/r
print "E=",E,"\n"
i=0
begin
ix -= E * iy
iy += E * ix
i+=1
# print "i=",i," ix=",ix," iy=",iy,"\n"
puts sprintf "i=%3d ix=%11.6f iy=%11.6f <ix-r>=%11.6f\n",i,ix,iy,ix-r
#break if i == 5
end while (ix - r).abs > 0.5 || iy.abs > 0.5
---------------------- O ----------------
結果(抜粋)は下記の通りとなりました。
E=0.01
i= 1 ix= 100.000000 iy= 1.000000 <ix-r>= 0.000000
i= 2 ix= 99.990000 iy= 1.999900 <ix-r>= -0.010000
i= 3 ix= 99.970001 iy= 2.999600 <ix-r>= -0.029999
*
*
i=155 ix= 2.578735 iy= 99.979640 <ix-r>= -97.421265
i=156 ix= 1.578939 iy= 99.995429 <ix-r>= -98.421061
i=157 ix= 0.578985 iy= 100.001219 <ix-r>= -99.421015
i=158 ix= -0.421028 iy= 99.997009 <ix-r>=-100.421028
i=159 ix= -1.420998 iy= 99.982799 <ix-r>=-101.420998
i=160 ix= -2.420826 iy= 99.958590 <ix-r>=-102.420826
*
*
i=312 ix= -99.965928 iy= 2.157825 <ix-r>=-199.965928
i=313 ix= -99.987506 iy= 1.157950 <ix-r>=-199.987506
i=314 ix= -99.999085 iy= 0.157959 <ix-r>=-199.999085
i=315 ix=-100.000665 iy= -0.842048 <ix-r>=-200.000665
i=316 ix= -99.992245 iy= -1.841970 <ix-r>=-199.992245
i=317 ix= -99.973825 iy= -2.841708 <ix-r>=-199.973825
i=318 ix= -99.945408 iy= -3.841163 <ix-r>=-199.945408
*
*
i=469 ix= -2.736638 iy= -99.976231 <ix-r>=-102.736638
i=470 ix= -1.736876 iy= -99.993600 <ix-r>=-101.736876
i=471 ix= -0.736940 iy=-100.000969 <ix-r>=-100.736940
i=472 ix= 0.263070 iy= -99.998339 <ix-r>= -99.736930
i=473 ix= 1.263053 iy= -99.985708 <ix-r>= -98.736947
i=474 ix= 2.262910 iy= -99.963079 <ix-r>= -97.737090
*
*
i=625 ix= 99.928451 iy= -3.315360 <ix-r>= -0.071549
i=626 ix= 99.961605 iy= -2.315744 <ix-r>= -0.038395
i=627 ix= 99.984762 iy= -1.315897 <ix-r>= -0.015238
i=628 ix= 99.997921 iy= -0.315917 <ix-r>= -0.002079
最近のコメント