gpt4 book ai didi

javascript - 物体中的负数/正数自身反转?

转载 作者:行者123 更新时间:2023-11-28 16:34:01 28 4
gpt4 key购买 nike

所以我确信这个问题的答案很简单,我会阅读它并立即开始史诗般的捂脸,但此刻我花了一整天的时间想知道为什么这不起作用,我只是找不到问题...

我正在尝试构建一个简单的(应该是)系统来围绕中心轴旋转 2d 点,但到目前为止我发现了 2 个对我来说毫无意义的问题。

问题 1:分配给输入对象的正/负数以看似随机的方式翻转。问题 2:旋转数学是正确的,但结果却完全不正确。

这是重现此问题的代码:

function doRotate(pos){
//convert angle to radians
var ang = 90 * Math.PI / 180;

//rotate points
pos.left = Math.round(pos.left * Math.cos(ang) + pos.top * Math.sin(ang));
pos.top = Math.round(pos.top * Math.cos(ang) - pos.left * Math.sin(ang));

return pos;
}

var points = {
'a':{left:32,top:32},
'b':{left:-32,top:32},
'c':{left:-32,top:-32},
'd':{left:32,top:-32}
};

for( var k in points ){
var msg = 'Start: X:'+points[k].left+' Y:'+points[k].top+'<br />';
points[k] = doRotate(points[k]);
var msg = msg+'End: X:'+points[k].left+' Y:'+points[k].top+'<br />';
document.write( '<p>'+k+':<br />'+msg+'</p>' );
}

现在您希望看到:A:开始:X:32 Y:32结束:X:32 Y:-32

b:开始:X:-32 Y:32结束:X:-32 Y:-32

c:开始:X:-32 Y:-32结束:X:-32 Y:32

d:开始:X:-32 Y:32结束:X:32 Y:32

但是你会得到这个:

一个:开始:X:32 Y:32结束:X:32 Y:32

b:开始:X:-32 Y:-32结束:X:32 Y:32

c:开始:X:-32 Y:-32结束:X:-32 Y:-32

d:开始:X:32 Y:32结束:X:-32 Y:-32

我已经对数学进行了三次检查,结果表明在 2D 中绕原点旋转点是 100% 准确的。我什至用 PHP 重新创建了这个测试,它运行得很好。我不明白的是为什么 JS a) 搞砸了变量赋值 b) 没有得出正确的结果?

任何可以提供帮助的人都可以放心,我会用手掌向他们的洞察力致敬,帕特里克爵士会为此感到自豪;)

最佳答案

等一下 - 在计算 pos.top 之前您不应该保存 pos.left 以便可以使用旧的 pos.left 计算中的值?

关于javascript - 物体中的负数/正数自身反转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com