鉴于您正在构建一个Windows专属程序,为什么这些电话system()
如此讨厌?自从我开始用C++编程以来,"不要触摸系统"是我听到的非常多的东西.我温顺地遵守了这个原则,但它有什么坏处呢?
我的应用程序有几个圆以任意角度旋转,我需要测试它们的旋转是否相等(相对于一些误差范围).一个天真的实现是这样的:
function angleEquals(first, second, errorMargin) {
return Math.abs(first - second) <= errorMargin;
}
Run Code Online (Sandbox Code Playgroud)
但由于旋转可能会增长到无穷大,因此失败了.因此,我们需要将两个角度标准化:
function normalizeAngle(angle) {
angle = angle % (2 * Math.PI); // normalize the angle to the interval [-2 * pi, 2 * pi]
if (angle < 0)
return 2 * Math.PI + angle; // normalize the angle to the interval [0, 2 * pi]
return angle;
}
Run Code Online (Sandbox Code Playgroud)
这几乎总是有效,但有一些失败的角落案例.例如
angleEquals(0, 2 * Math.PI - 1e-4, 1e-3)
是false
.
有什么建议?