gpt4 book ai didi

javascript - 多边形变形的旋转公式

转载 作者:行者123 更新时间:2023-12-03 12:28:45 24 4
gpt4 key购买 nike

我自己编写了一个公式,用于围绕方向点旋转规则多边形(甚至可能是不规则多边形)的点。该公式似乎适用于离散编码的矩形:

tempShape.points = [[0,0],[wid,0],[wid,hig],[0,hig]];

但不适用于由公式生成的多边形:

tempShape.points = [[len,0]];
for(var i=1; i < poin; i++){
if(gen){
tempShape.points[i] = [0,0];
tempShape.points[i][0] = len*Math.cos(angle*i);
tempShape.points[i][1] = len*Math.sin(angle*i);
}
}

这是我的旋转公式:

    for(var i2 = 0; i2 < displayList[i].points.length; i2++){
displayList[i].points[i2][0] = (displayList[i].pointsRot[i2][0] + displayList[i].oPoint[0]) * Math.cos(displayList[i].rotation) - (displayList[i].pointsRot[i2][1] + displayList[i].oPoint[1]) * Math.sin(displayList[i].rotation);
displayList[i].points[i2][1] = (displayList[i].pointsRot[i2][1] + displayList[i].oPoint[1]) * Math.cos(displayList[i].rotation) + (displayList[i].pointsRot[i2][0] + displayList[i].oPoint[0]) * Math.sin(displayList[i].rotation);
}

其中displayList[i]是形状,.points是包含所有点的数组,.rotation是形状的旋转,.oPoint是方向点。我希望你能帮忙,提前致谢。凯尔。

编辑:只是尝试而不是增加旋转,我设置了 0.01 的静态旋转,但这使得它的行为就像通常将旋转增加 0.01 一样,所以在某个地方(我不知道在哪里)它一定就像将我的旋转增加了设置旋转,我只需要弄清楚。我可以提供我的完整代码以供他人查看以帮助我吗?

最佳答案

您在第二个公式中使用的值 displayList[i].pointsRot[i2][0] 已在第一个公式中更改。只需记住临时变量中的原始值并使用它即可。

编辑:看来我对你的长长长的名字很纠结。检查您的公式是否匹配:

  NewX = CenterX + (OldX-CenterX)*Cos(Fi) - (OldY-CenterY)*Sin(Fi)
NewY = CenterY + (OldX-CenterX)*Sin(Fi) + (OldY-CenterY)*Cos(Fi)

其中(CenterX,CenterY)是旋转点

关于javascript - 多边形变形的旋转公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045036/

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