【发布时间】:2018-12-01 03:58:17
【问题描述】:
编写以下代码以在 2D 中围绕原点旋转一个点。然而,它并没有绕圈子,而是不断地向中心汇聚。 (最初在 Three.js 上运行)此代码绝对正确。 (我在其他平台上也做过,甚至在 excel 表中也做过数值模拟)。
为什么会这样?
<body>
<div id="vals"></div>
<script>
theta = Math.PI / 90.0;
var x = 1;
var y = 1;
var element = document.getElementById("vals");
var i;
for (i = 0; i < 10000; i++){
var r = Math.sqrt( x * x + y * y );
var para = document.createElement("pre");
var node = document.createTextNode("x="+x+" y="+y+" r="+r);
para.appendChild(node);
element.appendChild(para);
x = (x * Math.cos(theta)) - (y * Math.sin(theta));
y = (y * Math.cos(theta)) + (x * Math.sin(theta));
}
</script>
</body>
附言 我知道,如果我将值归一化并乘以幅度,我会得到正确的答案。但是我想知道为什么这个确切的东西不起作用。
【问题讨论】:
标签: javascript math rotation trigonometry