当我有两个其他点(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
是从angle
到a
到origin
b
将被放置在视图边缘之外的其他位置,这样当从b
到a
到origin
的路径关闭并填充时,它们就会形成形状,中心有一个点,两侧有两条线。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
的坐标?(我将以多种语言实现此内容)
答案 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)))