如果给定初始点,终点,随机点+精度,如何沿弧找到点?

时间:2015-07-31 16:35:19

标签: math geometry point angle

精度是我想要的矢量点数,从0,我的弧的初始点到我想要的精度减去1。

c ++中的代码示例:

int precision = 20;
double pointInit[3] = {2,5,2};
double pointRandom[3] = {3,7,1};
double pointInit[3] = {0,-3,1};

std::vector<std::array<double,3>> pointArc;  
std::array<double, 3> currentPoint; 

// Fill the pointArc vector, from 0 (initial point) to precision -1 (ending point)
for (int i = 0 ; i < precision; i++)
{
    // Find the value of the current point
    // currentPoint[0] = ????;
    // currentPoint[1] = ????;
    // currentPoint[2] = ????;
    pointArc.push_back(currentPoint);
}

编辑:我正在寻找的圆弧是圆弧

2 个答案:

答案 0 :(得分:0)

使用atan2()查找端点相对于中心的角度,对齐它们之间的角度precision - 1次,并转换极坐标(使用其中一个端点来获取距离中心)到矩形。

答案 1 :(得分:0)

1)翻译三个点,以便// new_table: +------+------+ | col1 | col2 | +------|------+ | 111 | 222 | | 333 | 444 | | 555 | 666 | | 777 | 888 | +------+------+ 到达原点

2)考虑向量P0P0P1并通过Gram-Schmidt过程形成标准正交基础(这很容易)

3)在这个新基础上,三个点的坐标为P0P2(0, 0, 0)(X1, 0, 0),您已将3D问题转换为2D。 (实际上(X2, Y2, 0)X1=d(P0,P1)X2是从Y2P0P2

的点和交叉产品中获得的

通过原点的2D圆的等式是

P0P1 / X1

插入上述坐标,您可轻松解决x² + y² = 2Xc.x + 2Yc.y Xc的2x2系统。

Yc

4)圆的参数方程是

X1² = 2Xc.X1
X2² + Y2² = 2Xc.X2 + 2Yc.Y2

其中x = Xc + R cos(t) y = Yc + R sin(t)

您可以使用R²=Xc²+Yc²找到与端点对应的角度t0t2

5)在角度tan(t) = (y - Yc) / (x - Xc)上进行插值,从参数方程计算简化坐标t0.(1-i/n) + t2.i/nx并应用2)和1)的逆变换。