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
)
它们将这样使用,形成一个实心径向进度指示器:
位于GUI视图的中心origin
放置在视图的一条边的正上方将一个
是从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
替换β
,因为它总是从顶部开始