mruby-siren
mruby-siren copied to clipboard
大きすぎる半径で生成した Siren.sphere の容積の値が正しくない
mruby および OCCT 双方の巨大数の取り扱いと変換処理を確認する。
> Siren.sphere(10e+10000)
=> #<Shape:0x2192050 @type=SOLID>
> Siren.sphere(10e+10000).volume
=> 0
> Siren.sphere(10e+1000).volume
=> 0
> Siren.sphere(10e+100).volume
=> 4.1887902047864e+303
> Siren.sphere(10e+1000).volume
=> 0
> Siren.sphere(10e-100).volume
=> 0
> Siren.sphere(10e-10).volume
=> 4.1887902047864e-27
そもそも、 BRepPrimAPI_MakeBox では [0, 0, 0] や [0, 1, 2] といった大きさのソリッドは作成できないが、 BRepPrimAPI_MakeSphere は半径 0 でソリッドが作成可能なのは不可解。
> Siren.sphere 0
=> #<Shape:0x21921d0 @type=SOLID>
> Siren.sphere(0).volume
=> 0