Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用坐标以编程方式旋转形状_Javascript_Canvas_Rotation_Shapes_Programmatically - Fatal编程技术网

Javascript 使用坐标以编程方式旋转形状

Javascript 使用坐标以编程方式旋转形状,javascript,canvas,rotation,shapes,programmatically,Javascript,Canvas,Rotation,Shapes,Programmatically,如果我有一些使用坐标数组定义的形状,例如 [[-30, -30], [-30, 30], [30, 30], [30, -30]] 和使用以下方法定义的边: [[0,1],[0,3],[1,2],[2,3]] 做一个正方形 在javascript中,如何通过编程告诉形状在中心以0->359的角度旋转* *或者更好的是,是否有一个函数允许我选择旋转中心 ** 目前,我已通过以下方法获得了环绕画布的形状: var x_rotate = Math.sin(angle * Math.PI /180)

如果我有一些使用坐标数组定义的形状,例如

[[-30, -30], [-30, 30], [30, 30], [30, -30]]
和使用以下方法定义的边:

[[0,1],[0,3],[1,2],[2,3]]
做一个正方形

在javascript中,如何通过编程告诉形状在中心以0->359的角度旋转*

*或者更好的是,是否有一个函数允许我选择旋转中心

** 目前,我已通过以下方法获得了环绕画布的形状:

var x_rotate = Math.sin(angle * Math.PI /180);
var y_rotate = Math.cos(angle * Math.PI /180);

// for each coordinate
//add x_rotate and y_rotate if coordinate > 0 or subtract if coordinate < 0 
使用css转换 并通过javascript进行更改和转换

使用css转换 并通过javascript进行更改和转换


在这里,围绕点centerx、centery旋转点x、y。返回浮点值,如果需要,则舍入

要旋转形状,请旋转所有点。如果需要,请计算中心,但这不起作用

函数旋转点X、y、centerx、centery、度{ var newx=x-centerx*Math.cosdegrees*Math.PI/180-y-centery*Math.sindegrees*Math.PI/180+centerx; var newy=x-centerx*Math.sindegrees*Math.PI/180+y-centery*Math.cosdgrees*Math.PI/180+centery; 返回[newx,newy]; }
在这里,围绕点centerx、centery旋转点x、y。返回浮点值,如果需要,则舍入

要旋转形状,请旋转所有点。如果需要,请计算中心,但这不起作用

函数旋转点X、y、centerx、centery、度{ var newx=x-centerx*Math.cosdegrees*Math.PI/180-y-centery*Math.sindegrees*Math.PI/180+centerx; var newy=x-centerx*Math.sindegrees*Math.PI/180+y-centery*Math.cosdgrees*Math.PI/180+centery; 返回[newx,newy]; } 可以使用旋转轴围绕原点旋转点

函数旋转方向、角度{ return array.mapp函数{ 函数r2da{返回a*Math.PI/180;} 返回[ Math.cosr2dangle*p[0]-Math.sinr2dangle*p[1], Math.sinr2dangle*p[0]-Math.cosr2dangle*p[1], ]; }; } 控制台.logrotate[-30,-30],-30,30],[30,30],[30,-30]],45; 控制台.logrotate[-30,-30],-30,30],[30,30],[30,-30]],90; .作为控制台包装{max height:100%!important;top:0;}您可以使用a围绕原点旋转点

函数旋转方向、角度{ return array.mapp函数{ 函数r2da{返回a*Math.PI/180;} 返回[ Math.cosr2dangle*p[0]-Math.sinr2dangle*p[1], Math.sinr2dangle*p[0]-Math.cosr2dangle*p[1], ]; }; } 控制台.logrotate[-30,-30],-30,30],[30,30],[30,-30]],45; 控制台.logrotate[-30,-30],-30,30],[30,30],[30,-30]],90;
.作为控制台包装{最大高度:100%!重要;顶部:0;}旋转到大多数角度将无法保持精度。你想要近似值吗?是的近似值很好谢谢这个答案告诉你如何旋转点盲人我需要一些时间来验证你的评论请告诉我我的小提琴里有50个。。。如果你需要所有的形状都有自己的角度和角度速度,这种技术也可以工作,旋转到大多数角度都不能保持精度。你想要近似值吗?是的近似值很好谢谢这个答案告诉你如何旋转点盲人我需要一些时间来验证你的评论请告诉我我的小提琴里有50个。。。如果你需要所有的形状都有自己的角度和角度速度,这项技术也可以使用。很抱歉,我没有明确指定我使用的是html画布,形状完全是抽象的,不是html dom元素。OP没有要求旋转html元素。他要求使用JavaScript查找新坐标。很抱歉,我没有明确指定我使用的是html画布,形状完全是抽象的,不是html dom元素。OP没有要求旋转html元素。他要求使用JavaScript来寻找新的坐标。但上面的答案还包括重新翻译到原点中心的代码,所以我接受这个答案。非常感谢你的回答。但是上面的答案还包括代码,可以重新翻译到原点中心,所以我接受这个答案。非常感谢你的回答。