Math 求与圆相切的向量

Math 求与圆相切的向量,math,vector,geometry,Math,Vector,Geometry,我需要用固定范数的向量绕中心圆移动一个点。 要做到这一点,我需要计算圆的切线向量来应用到我的点上 下面是一个描述性图表: 我知道p1坐标,圆半径和圆心,还有向量范数d。我需要找到p2(=找到向量v方向) 我把一些想法放在图表上,我找到了它:p1'是p1投射到圆上的。t是p1'中C的切向量 这应该很容易,但我的数学太弱,不知道如何实现这一点。所以我想知道这个实现的想法(语言不可知是可以的,javascript很酷) 额外的酷,如果你也可以让我如何实施顺时针和逆时针运动与此 编辑:获得了这个 le

我需要用固定范数的向量绕中心圆移动一个点。 要做到这一点,我需要计算圆的切线向量来应用到我的点上

下面是一个描述性图表:

我知道p1坐标,圆半径和圆心,还有向量范数d。我需要找到p2(=找到向量v方向)

我把一些想法放在图表上,我找到了它:p1'是p1投射到圆上的。t是p1'中C的切向量

这应该很容易,但我的数学太弱,不知道如何实现这一点。所以我想知道这个实现的想法(语言不可知是可以的,javascript很酷)

额外的酷,如果你也可以让我如何实施顺时针和逆时针运动与此

编辑:获得了这个

let vx = cx - p1x,
    vy = cy - p1y,
    norm = Math.sqrt((vx * vx) + (vy * vy)),
    p2x = p1x - (vy * d / norm),
    p2y = p1y + (vx * d / norm);
但仍然有一个怪癖:利用这个时间,点正在慢慢远离圆心,执行一个螺旋

  • 获取圆心向量-点P1。我们称之为向量 v1

  • 切向量“t”垂直于v1。如果v1=(vx,vy),则 t=(-vy,vx)。只需交换值和符号(我写了-vy,它也可以是-vx,但不能同时是-vy和-vx)

  • 设置一个方向或顺序只是使用t2=-t1=(vy,-vx)或(-vy,vx)


  • 对于运动,您必须使用标准化(| | 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)