Javascript 围绕圆旋转三角形(2D)

Javascript 围绕圆旋转三角形(2D),javascript,math,geometry,html5-canvas,Javascript,Math,Geometry,Html5 Canvas,我试着绕着一个圆旋转一个三角形,这个三角形应该始终朝外,这意味着它应该绕着这个圆旋转,我猜它应该绕着它的中心旋转。 我找到了一个问题,这和我需要的差不多,但正好相反。 我需要的另一件事是让三角形指向用户的鼠标坐标。也就是说,三角形有点像箭头。我刚刚编辑了您链接的代码,并用三角形替换了矩形,当然,还用鼠标移动侦听器设置了animate(): var canvas=document.getElementById(“canvas”); var ctx=canvas.getContext(“2d”);

我试着绕着一个圆旋转一个三角形,这个三角形应该始终朝外,这意味着它应该绕着这个圆旋转,我猜它应该绕着它的中心旋转。 我找到了一个问题,这和我需要的差不多,但正好相反。
我需要的另一件事是让三角形指向用户的鼠标坐标。也就是说,三角形有点像箭头。

我刚刚编辑了您链接的代码,并用三角形替换了矩形,当然,还用鼠标移动侦听器设置了
animate()

var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var-cx=100;
var-cy=100;
放射值=10;
var-gap=5;
var三角光=25;
var三角基=10;
重新绘制(cx+1,cy);
函数重画(mx,my)
{
mox=mx-cx;
moy=我的cy;
旋转=数学atan2(moy,mox);
clearRect(0,0,canvas.width,canvas.height);
ctx.beginPath();
ctx.arc(cx,cy,radious,0,Math.PI*2);
ctx.closePath();
ctx.fill();
ctx.save();
翻译(cx,cy);
ctx.旋转(旋转);
ctx.beginPath();
ctx.moveTo(radious+间隙,-三角形基/2);
ctx.lineTo(radious+间隙,三角形基/2);
ctx.lineTo(无线电+间隙+三角光,0);
ctx.lineTo(radious+间隙,-三角形底座/2)
ctx.stroke();
ctx.restore();
}
canvas.addEventListener(“mousemove”,函数(e){
重画(e.pageX,e.pageY);
},假)

您的情况需要与您链接的问题的答案中给出的相同的“保存、翻译、旋转、绘制、恢复”过程。如果你已经这样做了,但仍然有问题,请展示你的尝试。到目前为止,我还没有尝试过任何东西,因为我不确定像那样旋转三角形所需的数学知识。。。我对代码部分没有什么问题,但更像是数学部分,你不需要旋转三角形。只要旋转画布,它就会为你画出旋转的三角形。是的。。。这就是问题所在。。。我和旋转数学伙伴有问题只是。。。试试看。将画布旋转大约30度,然后画一个三角形。塔达,它旋转了30度。不需要旋转数学。相当容易理解的解决方案!非常感谢。我不知道atan2函数的存在。。。我想我有点想得太多了。这将非常有效,谢谢!