规定的好处:
想到的几个缺点:
我是数学专家,由于持久性和着色器格式的原因,我更喜欢使用 0..1 或 0..512 中的任一度数。 如果你在两年或两年前问我同样的问题,我可以说弧度更好,因为它们在数学意义上是“纯”的。
但是,在文件中存储 2 x Math.PI 是一个问题(持久性),而“360”只是比 2*PI 写入速度更快,无法以二进制形式清楚地表示。
基于 Flash 的引擎正在以不同的方式工作:
http://cocos2d-x.org/docs/programmers-guide/sprites/index.html
https://www.youtube.com/watch?v=zAsDbHXlFWI
像 Spine 这样的编辑器也以弧度工作和存储角度。
更奇怪的是,我们使用 SKEW,它是图形设计师的东西,在数学意义上只是“(shear.y , -shear.x)”,我们允许这种可憎的行为并迫使用户同时使用 rads。
它的“低级渲染器”和“具有自己的舞台和工具支持的2d图形渲染器”之间的冲突,我认为pixi更接近于第二个。
@englercj我也必须使用该代码,我的叉子中已经有了类似的东西: https :
https://github.com/gameofbombs/gobi/blob/master/src/core/math/FlatTransform2d.ts
@mreinstein我也必须要求查看该代码,因为您对 pixi 转换有所了解;)
来自@bigtimebuddy和@GoodBoyDigital 的建议,使 API 可配置:
// useDegrees
CONVERSION = Math.PI / 180;
// useRadiens
CONVERSION = 1;
set rotation(rot)
{
this._rotation = rot * CONVERSION;
}
也许像Phaser那样? 角度是度数,旋转是弧度。
@englercj同意。 这是那里最简单的方法。 基于 pixi 的引擎可以修复它们的“CONVERSION”常量。
@englercj Processing 做到了这一点,我认为这是一个非常糟糕的设计决定。 它损害了模块化。 如果你有一段代码以一种方式做某事,并尝试使用另一段代码(可能在库中)假设另一种方式,它不会工作。 如果您确保在每次调用与角度相关的函数之前设置单位模式,那么它可能会确保您的代码正常工作但会破坏库代码。 如果有一段使用角度的库代码,是否应该设置角度模式? 这可能会保证其代码按预期工作,但会破坏用户的代码。 这几乎就像 API 设计的囚徒困境。
@OSUBlake这似乎更合理。 虽然名称角度和旋转没有明确表示或禁止一个单位,但肯定存在关联,这使得这比 50/50 猜测更合理。
我认为angleDeg
和angleRad
会更好。 为什么不说清楚呢?
角度是度数,旋转是弧度。
这可能是移相器的做法,但这并没有得到普遍认同。 旋转是动作,角度是动作发生的量。 有时也称为“旋转角度”。 因此,从技术上讲,角度或旋转可能会被重载以指代同一事物,并且可以用任一单位(度或弧度)表示。
任何涉及旋转的数学运算都使用弧度更容易。 这真的不难理解; Math.PI 是圆的一半; Math.PI * 2 是完整的旋转。
唯一合适的时间是当您将可视化用户界面暴露给涉及旋转的人时,并且您的观众是一群不了解基本几何的人(即大多数人)。
我承认这是意见,但只是使用弧度。 javascript 中的所有数学 API 都在弧度上运行,而不是度数,就像大多数非玩具几何库一样。
如果我们真的必须在所有事情上支持每个人,那么我同意@1j01将其明确化。 也许.degrees
或.radians
?
此问题已自动标记为陈旧,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢你的贡献。
由于关闭后没有任何近期活动,因此该线程已自动锁定。 请为相关错误打开一个新问题。
最有用的评论
也许像Phaser那样? 角度是度数,旋转是弧度。