私は、4つの射影点のクロスレシオを計算するためにPythonで関数を記述したいと思います。無限の場合を扱うためのエレガントで簡潔な実装があるかどうか疑問です。クロスレシオの計算
クロスレシオの素朴な実装は次のようになります。
ratio = lambda a,b,c: (a-c)/(b-c)
cross_ratio = lambda a,b,c,d: ratio(a,b,c)/ratio(a,b,d)
しかし、入力の一方が無限大であるとき、これは失敗します。これは起こるべきではなく、むしろ無限が互いに打ち消し合い、私たちに単純な比率を与えたいと思っています。
例えば、Infinity, 0, 1, -1
のクロスレシオは、-1
である必要があります。
また、2つの数値の比率で表される点を扱いたいと思います。 (1,0)
はInfinity
を表すことになりつつ(1 1)
ことなど
、数1
だろう、私はいつものケースバックの定義に落ち、それで間に合わせるが、私は、これは良いデザインを学ぶ良い機会かもしれ感じることができました。
私はPython 2.7とSagemathモジュールを使用しています。これを実装する方法に関するアドバイスはありますか?