c++ - 在圆上找点

标签 c++ algorithm geometry

<分区>

我们正在用 C++ 编码,有半个圆圈,从某个点开始(例如 (0,-310))并在某个点结束 (0,310) .我们有半径,我们有方程 X^2 + Y^2 = r^2。现在我们正在尝试计算该圆线上的一些(比如 10+)点。

因此,我们正在尝试创建一个增量来计算这些点之间的 Y/X 值,使用上面显示的等式确保所有计算的点都在圆的线上。

一旦我们有了这些点,我们就会尝试将它们放入几个复杂的方程式中,以计算要绘制此形状的机器人 ARM 的角度。这不是真正的优先事项,但我认为我应该在问题中包括我们的总体目标。

如何创建一个增量来计算我们两个起点之间的半圆线上的所有坐标?
然后将这些值代入上面代码中的方程式,计算出机器人 ARM 的角度。寻找一种无需单独计算每个点即可执行此操作的方法,即创建一个一次性完成的增量。

This是我们的目标,计算粗体点。

最佳答案

点是否需要均匀分布?如果没有,那么您可以直接使用您的公式:

// assume half-circle centered at (0,0) and radius=310
double r = 310.0;
int n = 10;
for( int i=0; i<n; i++ )
{
   double x = i*r/n;
   double y = sqrt( r*r - x*x );
   // both (x,y) and (x,-y) are points on the half-circle
}

一旦此操作生效,您还可以使用 x 值的分布来接近圆周上的均匀间距。

如果您的圆圈不以 (0,0) 为中心,则只需将计算出的 (x,y) 偏移实际中心即可。

关于c++ - 在圆上找点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525941/

相关文章:

c++ - 如何使用gcc/g++编译多个cpp文件的头文件?

c++ - 调用 std::unique_ptr 指向的底层对象的operator()

c++ - OpenGL 中的 3 轴四元数旋转

c++ - 在模板函数中使用未声明的变量是否合法?

math - 在给定旋转矩阵的情况下找到顶点的新位置

java - Levenshtein 到 Damerau-Levenshtein

JavaScript 试图打印一个字母在字符串中出现的次数,但它打印了不止一次

algorithm - 从树叶构建一棵八叉树?

postgresql - 在 PostGIS 中,哪一种是计算两点之间距离最准确的方法?

math - 从点计算文档的倾斜度?