天文学的な計算の幾何学を計算する際にたくさんのコーディングをしました。物事は常にラジアンとの間で変換されているため、結果のコードはちょっと醜いです。クラスの優れた点の1つは、ユニットなどをカプセル化できることです。だからお金は良い例です。一般に、Moneyクラスでは、不変の実装が見られる傾向があります。これは、お金を稼ぐとユニットを固定し、お金を変更したい場合は、で新しいお金を稼ぐためです。希望するターゲットユニット。
ラジアンから度への変換、およびマクロに関する投稿はたくさんあります。それは私が求めていることではありません。ラジアンまたは度の列挙型である可能性のあるGeometricUnitを内部に使用して、GeometricValueのようなクラスを実行することを考えている人は他にいますか。ただし、この場合、私がやりたいことは次のようなものだと思います。
GeometricMeasure elevationAngle = [[GoemetricMeasure alloc] initWithValue:30 andUnits:GeometricUnits.Degrees];
しかし、数行後に私は次のことができました:
double radians = [elevationAngle asRadians];
あなたが想像できるもう一つのことは自動変換です。野蛮人が実行のピーク時にC++に夢中になったとき、人々が愚かなことをすることができ、コピーコンバーターも危険だったので、演算子のオーバーロードは馬鹿げていたという議論はばかげていると思いました。次のような方程式を実行できることは非常に理にかなっています。
acos(sin(elevationAngle) + sin(hourAngle))
そして、コードに各メジャーを操作に必要な単位(ラジアン)に自動的に変換させます。他の人はこれを検討する価値があると思いますか?またはすでにこの方向で何かをしましたか(私は見つけることができませんでした)?
ありがとう。