Closed usagi closed 6 years ago
現時点で " NaN
が値として意味を持ちかつ正常動作の場合" は GeoObject.SetVertexGlobal
の altitude 項のみ。
そこで、本チケットではこの項のみで NaN
を試験実装する事にする。
理由:
NaN
は値として有効なわけではないので NaN
を意味のある datum として扱う場合は限られる。
NaN
Inf
へ対応する費用対効果が希薄。SetVertex
系 APIs の座標値のパースでは NaN と Inf を認識するよう実装した。
想定される問題: ユーザーが NaN Inf を不正に扱うと G4 が落ちるであろう事。
想定される問題については根本的にユーザー入力の validation ではなく内部データ生成系のデータ変換に安全策を噛ませるのがいいだろう。
内部データ生成系とGeoObjectのLocation, Rotation制御系に IsFinite
による安全対策を施し、 finite ではない値が alt, lat, lon にある場合でも G4 が落ちるような問題が発生しないよう実装した。
この変更は 4.0.0.13 へ取り込む。
JSON では規格上
NaN
やInf
を扱えない。特にNaN
は巨大な数を与えて擬似的に扱えないこともないInf
と異なり扱う手段が無い。 Javascript においては"NaN"
や"Inf"
のように文字列で与える方法が一般に許容されている。そこで G4 でも "数値が期待される場所" では
"NaN"
によるNaN
値と"+Inf"
,"-Inf"
を扱えるよう機能追加したいと思う。