【发布时间】:2011-06-29 21:23:26
【问题描述】:
我一直在观看斯坦福 CS193P 的讲座,并且一直在研究作业计算器。我相当轻松地完成了第一个作业,我现在正努力为作业做额外的功劳。然而,我被一个额外的信用问题困住了:
实现一个用户界面来选择 sin() 或 cos() 的操作数是 考虑弧度或度数。在 C 库中调用 sin(x) 时,假定 x 以弧度表示(即 0 到 2π 绕一圈),但用户可能想要 输入 180 并按下 sin 按钮,得到 0 而不是 -0.8012(这是 180 弧度)。您可以为此使用 UIButton 并切换 titleLabel 的 每次按下 UIButton 时都会显示文本,但更好的方法是查看是否可以 通过阅读文档了解如何使用 UISwitch(如果你敢的话!)。
我实现了一个 UISwitch 并将其连接为一个 IBOutlet。当我执行“操作”时,我会检查开关是打开还是关闭,并将其与要执行的操作一起传递给我的模型。在我的 sin 和 cos 案例中,我执行以下操作:
else if ([operation isEqual:@"sin"])
{
if (radians) {
operand = sin(operand);
}
else {
operand = sin(operand) * (180 / M_PI);
}
}
// similar for cos
如果radians(这是一个BOOL:YES = 弧度,no = 度数),那么我照常执行操作;如果用户将开关置于“度”,我想以度为单位返回值,因为分配状态:用户可能想要输入 180 并按下 sin 按钮并得到 0 而不是 -0.8012(这是180 弧度的正弦)。
但是,此代码不能完全正常工作。当我将开关置于度数并执行sin 180 时,它返回的值或多或少-45。那里出了点问题;我不确定是什么。我已经查找了如何进行转换,我认为我做对了,但显然不是。
我意识到这可能更适合 math.stackexchange,但由于我想发布一些代码,所以我把它放在这里。有人可以就实现这一点的最佳方式提供一些建议吗?我已经有一段时间没有使用 cos 或 sin、弧度和度数了。
谢谢!
【问题讨论】:
-
我重新标记为家庭作业,但后来我意识到你这样做是为了好玩。希望我没有毁掉任何东西。
-
没关系;无论如何,这是一个家庭作业问题。别担心!
标签: objective-c ios trigonometry