【发布时间】:2018-06-13 10:34:41
【问题描述】:
我目前正在寻求实现一种能够计算弧中点的算法。从这里开始,我将参考下图。已知的是开始和结束节点(分别为 A 和 B)、中心(点 C)和点 P,它是线 AB 和 CM 的交点(我能够在不知道点 M 的情况下找到该点,因为线AB 垂直于线 CM,因此斜率为 -1/m)。我也知道弧角和弧的半径。我正在寻找 M 点。
我一直在寻找不同的来源。一些人建议将坐标转换为极坐标,从极坐标计算中点,然后恢复为笛卡尔坐标。这涉及到 sin 和 cos(以及 arctan),因为三角函数需要计算时间,所以我有点不愿意这样做。
我一直希望通过将圆弧视为圆并将线 CP 作为与圆在点 M 相交的线来直接计算点 M。然后我会得到两个值,最接近点 P 的值将是正确的交点。但是,这种方法,代数变得又长又复杂。然后我需要为 P = C 和 AB 线是水平和垂直的情况创建特殊情况。这种方法还可以,但我想知道是否有更好的方法可以计算更简单的这一点?
另外,作为旁注,我将在 C++ 中创建此算法。
【问题讨论】:
-
是的,我知道这个地方
-
您知道向量 CP 并希望对其重新归一化以使其具有与 CA 相同的长度?顺便说一句,P 只是 AB 的中点。
-
这是一道数学题,不是编程题。
-
似乎矢量
CM只是矢量CP,其长度等于圆弧半径。CM = CP / |CP| * [arch radius]?
标签: c++ algorithm geometry computational-geometry