首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在圆上查找点

在圆上查找点
EN

Stack Overflow用户
提问于 2013-03-20 22:11:20
回答 3查看 10.8K关注 0票数 4

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

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

一旦我们有了这些点,我们就试着把它们放入几个复杂的方程中,来计算绘制这个形状的机械臂的角度。这并不是真正的优先事项,但我认为我应该在问题中包括我们的总体目标。

如何创建增量来计算两个起始点之间的半圆线上的所有坐标?

然后将这些值放入上面代码中的方程式中,以计算机械臂的角度。寻找一种方法来做到这一点,而不是单独计算每个点,即创建一个增量,将它在一次。

This是我们的目标,用粗体计算分数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-20 23:17:10

这些点需要均匀分布吗?如果没有,那么你可以直接使用你的公式:

代码语言:javascript
运行
复制
// 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)偏移实际中心即可。

票数 3
EN

Stack Overflow用户

发布于 2013-03-20 22:19:11

圆的点可以使用以下公式确定:

代码语言:javascript
运行
复制
x = radius * cos(angle)  
y = radius * sin(angle)

您必须确定正在绘制的圆的段、部分或圆弧,并确定起点角度和终点角度。

否则,在网上搜索"arc drawing algorithm c++“。

票数 4
EN

Stack Overflow用户

发布于 2013-03-20 22:20:20

你可以这样改变你的方程式,使之成为Theta (角度):

X = X0 + Cos(Theta)*r

Y = Y0 +Sin(θ)*r

而在你的例子中(X0,Y0) = (0,0),r= 310,Theta范围在-180 - 180之间(如果你的cos和sin以度为单位)或-Phi - Phi之间(如果cos和sin以半径为单位)。

现在,如果你想要10个点,你需要取你的Theta范围,把它分成10,然后对每个值调用X,Y。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15525941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档