Math 求与圆相切的向量
我需要用固定范数的向量绕中心圆移动一个点。 要做到这一点,我需要计算圆的切线向量来应用到我的点上 下面是一个描述性图表: 我知道p1坐标,圆半径和圆心,还有向量范数d。我需要找到p2(=找到向量v方向) 我把一些想法放在图表上,我找到了它:p1'是p1投射到圆上的。t是p1'中C的切向量 这应该很容易,但我的数学太弱,不知道如何实现这一点。所以我想知道这个实现的想法(语言不可知是可以的,javascript很酷) 额外的酷,如果你也可以让我如何实施顺时针和逆时针运动与此 编辑:获得了这个Math 求与圆相切的向量,math,vector,geometry,Math,Vector,Geometry,我需要用固定范数的向量绕中心圆移动一个点。 要做到这一点,我需要计算圆的切线向量来应用到我的点上 下面是一个描述性图表: 我知道p1坐标,圆半径和圆心,还有向量范数d。我需要找到p2(=找到向量v方向) 我把一些想法放在图表上,我找到了它:p1'是p1投射到圆上的。t是p1'中C的切向量 这应该很容易,但我的数学太弱,不知道如何实现这一点。所以我想知道这个实现的想法(语言不可知是可以的,javascript很酷) 额外的酷,如果你也可以让我如何实施顺时针和逆时针运动与此 编辑:获得了这个 le
let vx = cx - p1x,
vy = cy - p1y,
norm = Math.sqrt((vx * vx) + (vy * vy)),
p2x = p1x - (vy * d / norm),
p2y = p1y + (vx * d / norm);
但仍然有一个怪癖:利用这个时间,点正在慢慢远离圆心,执行一个螺旋
对于运动,您必须使用标准化(| | v | | |=1)向量。谢谢您的回答。按照你的指示,我得到了这个:
让vx=cx-p1x,vy=cy-p1y,norm=Math.sqrt((vx*vx)+(vy*vy)),p2x=p1x+(vy*d/norm),p2y=p1y+(vx*d/norm)但这仍然不起作用。p2的值不符合预期。我的代码有什么问题吗?好吧,我发现垂直向量不仅是通过你说的交换值获得的,而且是通过反转符号之一获得的。如果你编辑它,我很乐意接受你的答案。顺便问一下,我在问题中添加了算法,点慢慢远离中心,形成一个螺旋,这正常吗?是的,螺旋是因为P1比新P2更接近圆心。P1P2的模量越短,螺旋输出越慢。如果您想要一个圆而不是一个螺旋,那么切线就不能使用。