封装几何单位的类:弧度/度数

时间:2013-01-16 00:33:15

标签: c++ objective-c c geometry

在计算天文计算的几何学时做了一堆编码。由此产生的代码有点难看,因为事物一直在转换为弧度。关于类的一个好处是能够封装像单位这样的东西。所以Money就是一个很好的例子。虽然一般来说,在Money课程中,你倾向于看到不可变的实现,因为一旦我们赚了一块钱,我们就会加入单位,然后如果我们想要换钱,我们就会用新的钱来赚钱。期望的目标单位。

有大量关于从弧度转换为度数和宏的帖子。那不是我要问的。我问有没有其他任何人想过做一个像GeometricValue这样的类,也许里面有一个可以是弧度或度数的枚举的GeometricUnit。但在这种情况下,我认为我想要做的是这样的事情:

GeometricMeasure elevationAngle = [[GoemetricMeasure alloc] initWithValue:30 andUnits:GeometricUnits.Degrees];

但稍后我会做几行:

double radians = [elevationAngle asRadians];

您可以想象的另一件事是自动转换。我不得不说,当野蛮人在C ++运行的高峰时期疯狂时,操作员超载的论点是愚蠢的,因为人们可以做蠢事和复制转换器也很危险,我认为这很荒谬。能够做出类似的方程式会很有意义:

acos(sin(elevationAngle) + sin(hourAngle))

并让代码自动将每个度量转换为所需的操作单位(弧度)。还有其他人认为这值得考虑吗?或者已经朝着这个方向做了一些事情(我找不到)?

感谢。

0 个答案:

没有答案