精度是我想要的矢量点数,从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);
}
编辑:我正在寻找的圆弧是圆弧
答案 0 :(得分:0)
使用atan2()
查找端点相对于中心的角度,对齐它们之间的角度precision - 1
次,并转换极坐标(使用其中一个端点来获取距离中心)到矩形。
答案 1 :(得分:0)
1)翻译三个点,以便// new_table:
+------+------+
| col1 | col2 |
+------|------+
| 111 | 222 |
| 333 | 444 |
| 555 | 666 |
| 777 | 888 |
+------+------+
到达原点
2)考虑向量P0
和P0P1
并通过Gram-Schmidt过程形成标准正交基础(这很容易)
3)在这个新基础上,三个点的坐标为P0P2
,(0, 0, 0)
,(X1, 0, 0)
,您已将3D问题转换为2D。 (实际上(X2, Y2, 0)
和X1=d(P0,P1)
,X2
是从Y2
和P0P2
通过原点的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²
找到与端点对应的角度t0
和t2
。
5)在角度tan(t) = (y - Yc) / (x - Xc)
上进行插值,从参数方程计算简化坐标t0.(1-i/n) + t2.i/n
,x
并应用2)和1)的逆变换。