Algorithm 点给定另外两个点、一个角度和一个距离

Algorithm 点给定另外两个点、一个角度和一个距离,algorithm,path,geometry,coordinate,Algorithm,Path,Geometry,Coordinate,我需要一个通用算法来计算一个点(b)的(x,y)坐标,当我有另外两个点(origin和a),一个角度(angle)和一个距离(distance) 它们将这样使用,形成一个实心径向进度指示器: origin位于GUI视图的中心 将一个放置在视图的一条边的正上方 angle是从a到origin到b b将放置在视图边缘以外的其他位置,这样当从a到原点到b的路径闭合并填充时,它们形成一个形状,其中一个点位于中心,两条线延伸到侧面 距离可以被认为是功能无限的。为便于计算,可以将其视为等于视图边界框的周长

我需要一个通用算法来计算一个点(
b
)的
(x,y)
坐标,当我有另外两个点(
origin
a
),一个角度(
angle
)和一个距离(
distance

它们将这样使用,形成一个实心径向进度指示器:

  • origin
    位于GUI视图的中心
  • 将一个
    放置在视图的一条边的正上方
  • angle
    是从
    a
    origin
    b
  • b
    将放置在视图边缘以外的其他位置,这样当从
    a
    原点
    b
    的路径闭合并填充时,它们形成一个形状,其中一个点位于中心,两条线延伸到侧面
  • 距离
    可以被认为是功能无限的。为便于计算,可以将其视为等于视图边界框的周长
示例:
其中'o'是原点,'A'是角度:
A.
.  ------+
|        |
+----|----+   |
|| | |我可以根据需要画更多的形状
|.A |--+填写其他
|o \| |象限。我只需要一个`
|      \  |   |
+-------\-+   |
\    |
\   |
\  |
\
B
这样,通过更改
角度的值
并重新绘制视图,我可以得到倒计时时钟样式的形状


如何在通用算法中找到
b
的坐标?
(我将用多种语言实现)

如果
a
直接位于原点右侧,并且只有
b
移动: 这假设
b
是“前导的”
a
,记住角度总是逆时针测量的。在您的示例中,
A
将是大的外角,而不是小的内角。如果您希望
a
领导
b
,只需使用
-a

b = (dist x cos(A), dist x sin(A))
如果
a
不直接位于右侧,则必须向alpha添加“起始角度”(从原点向右移动形成的线与从原点到
a
的线之间),如下所示:

beta = angle(right, origin, a)
b = (dist x cos(A + beta), dist x sin(A + beta))
如果
原点
不在
(0,0)
,则必须将这些坐标添加到b

b = (origin_x + (dist x cos(A + beta)), origin_y + (dist x sin(A + beta)))

在您的示例中,
alpha
是什么?你能用我的问题来解释吗?更新它以更好地适应你的问题事实上这是在给出一些奇怪的行为。。。似乎
b
没有围绕
原点旋转
…修复了我的答案,因此它应该适用于不在(0,0)的原点。这很好地工作:D-同样为了效率,我能够用常量
π/2
替换
β
,因为它总是从顶部开始