Pixi.js: 返工 API 使用弧度代替度数

创建于 2017-06-30  ·  10评论  ·  资料来源: pixijs/pixi.js

规定的好处:

  • 更易于使用最终用户 API
  • 更容易推理和阅读用户代码
  • 更容易保留度值而不是弧度值
  • 与其他基于 Web 的引擎和其他 2D 引擎更加一致
Stale 🙏 Feature Request

最有用的评论

也许像Phaser那样? 角度是度数,旋转是弧度。

所有10条评论

想到的几个缺点:

  • 内置 javascript 数学函数标准化弧度
  • 内置 glsl 函数标准化弧度
  • 弧度是处理某些类型计算的更方便的格式(例如,我可以从 0-> Math.pi * 2 lerp 并顺时针完整旋转。)

我是数学专家,由于持久性和着色器格式的原因,我更喜欢使用 0..1 或 0..512 中的任一度数。 如果你在两年或两年前问我同样的问题,我可以说弧度更好,因为它们在数学意义上是“纯”的。

但是,在文件中存储 2 x Math.PI 是一个问题(持久性),而“360”只是比 2*PI 写入速度更快,无法以二进制形式清楚地表示。

基于 Flash 的引擎正在以不同的方式工作:

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#getRotation --

http://cocos2d-x.org/docs/programmers-guide/sprites/index.html

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7def.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 猜测更合理。

我认为angleDegangleRad会更好。 为什么不说清楚呢?

角度是度数,旋转是弧度。

这可能是移相器的做法,但这并没有得到普遍认同。 旋转是动作,角度是动作发生的量。 有时也称为“旋转角度”。 因此,从技术上讲,角度或旋转可能会被重载以指代同一事物,并且可以用任一单位(度或弧度)表示。

任何涉及旋转的数学运算都使用弧度更容易。 这真的不难理解; Math.PI 是圆的一半; Math.PI * 2 是完整的旋转。

唯一合适的时间是当您将可视化用户界面暴露给涉及旋转的人时,并且您的观众是一群不了解基本几何的人(即大多数人)。

我承认这是意见,但只是使用弧度。 javascript 中的所有数学 API 都在弧度上运行,而不是度数,就像大多数非玩具几何库一样。

如果我们真的必须在所有事情上支持每个人,那么我同意@1j01将其明确化。 也许.degrees.radians

此问题已自动标记为陈旧,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢你的贡献。

由于关闭后没有任何近期活动,因此该线程已自动锁定。 请为相关错误打开一个新问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

YuryKuvetski picture YuryKuvetski  ·  3评论

zcr1 picture zcr1  ·  3评论

softshape picture softshape  ·  3评论

courtneyvigo picture courtneyvigo  ·  3评论

lunabunn picture lunabunn  ·  3评论