给出2个其他点,角度和距离

时间:2017-12-04 20:10:39

标签: algorithm path geometry coordinate

当我有两个其他点(localparam LENGTH = TOTAL_DELAY/FILTER; // must be an integer >=2 wire out; wire [LENGTH-2 : 0] delay_chain; assign #(FILTER) {out,delay_chain} = {delay_chain,in}; (x,y)时,我需要一个通用算法来计算点b坐标(origin) ),角度(a)和距离(angle)。

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

  • distance位于GUI视图的中心
  • origin位于视图的其中一个边缘之外
  • a是从angleaorigin
  • 形成的角度
  • b将被放置在视图边缘之外的其他位置,这样当从baorigin的路径关闭并填充时,它们就会形成形状,中心有一个点,两侧有两条线。
  • b可视为功能无限。为了便于计算,可以认为它等于视图边界框的周长。
distance

这样,通过更改Example: Where `o` is the origin and `A` is the angle: a . ------+ | | +----|----+ | | | | | I can draw more shapes as | .A | --+ necessary to fill other | o \ | | quadrants. I just need `A` | \ | | +-------\-+ | \ | \ | \ | \ .b 的值并重新绘制视图,我可以使用倒计时时钟样式。

如何在广义算法中找到angle的坐标?(我将以多种语言实现此内容)

1 个答案:

答案 0 :(得分:2)

如果a直接位于原点,且只有b移动: 这假定b是'领先'a,请记住角度始终是逆时针测量的。在你的例子中,A将是大的外角,而不是小的内角。如果您希望a领导b,请改用-A

b = (dist x cos(A), dist x sin(A))

如果a不是直接右边的其他地方,则必须添加“起始角度”(在从原点到右边以及从原点到a的线形成的线之间)像这样的alpha:

beta = angle(right, origin, a)
b = (dist x cos(A + beta), dist x sin(A + beta))

如果origin不在(0, 0),则必须将这些坐标添加到b。

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