如何将非直线划分为偶数段?
我有一条由一系列x,y坐标点定义的非直线。我可以在这些点之间直接在屏幕上绘制一条直线,没有任何问题。不幸的是,我必须在相同长度的段中绘制线条。
下面是一个示例,说明我需要如何将具有3个点的非直线分解为多个等距点的数组。 (忽略最后的红点,这是一条线不均匀划分的结果,也是终点)
请注意“关节”处的红线。考虑到我有一条线A-> B-> C,矢量AB和BC形成一些角度。基本上,线在B点弯曲。
在A点和B点之间划分一条直线是没有问题的。但是当AB没有按段长度均匀划分时,我需要做一些特殊的事情。我需要考虑剩下的长度并将其视为三角形的一侧。恒定段长度是与BC段(上面的红线)连接的三角形的另一侧。我需要知道从B点到这个交叉点的长度。有了这些信息,我可以继续计算BC上的线段。
这是我想要解决的三角形(此后我将参考这张图片中出现的变量)
到目前为止,我已经将问题分解为使用余弦定律。 c2 = a2 + b2 - 2ab * Cos(y)
问题是我已经知道c,它是段长度。我需要解决一个(我可以计算y)。
我已经写了一个多项式方程,但现在我卡住了:
a2 + b2 - 2ab * Cos(y) - c2 = 0
或Ax2 + Bx + C(A = 1,B = -2b * Cos(y),C = b2-c2,x = a)
这甚至是正确的方法吗?接下来我该怎么办?我需要在Actionscript中实现它。
编辑:Duh,我将不得不使用二次方程式。所以我现在得到:
a = b * Cos(y)+/- SqrRoot(c2-b2 * Sin(y)2)
现在如何把它放入代码......
没有找到相关结果
已邀请:
1 个回复
栖很钾是狠
它是一个返回具有多个属性的对象的函数,因此要在代码中实现它非常简单。你需要传递三个点和一个半径。前两个点只是上面定义的B和C,以及我在开头解释的A点。再次,半径是您的段长度。
而已! D点(见上文)的坐标为: