Skip to main content

span_is_valid

Function span_is_valid 

Source
pub fn span_is_valid(span: [f64; 2]) -> bool
Expand description

取付き線の無次元区間 span = [t_i, t_j] が規約 0.0 <= t_i < t_j <= 1.0 を満たすか。

判定の情報源を 1 つに保つため、区間の妥当性が要るところは常にこの関数を使う。 Model::validate(保存時の最終防衛線)・squid-n-edit の編集コマンド・ GUI の入力欄がそれぞれ同じ式を書いていたが、GUI 側だけ下の許容を持たず、 「保存はできるが GUI で編集し直すと弾かれる」非対称になっていた。

両端に 1e-9 の許容を持たせるのは、span が浮動小数の無次元比であり、 1.0 を意図した値が計算経路で 1.0 + ε になりうるためである。区間が つぶれている(t_j - t_i が許容以下)ものは、載る範囲が無いので弾く。