我们用C++编写代码,有半个圆,从某个点开始(例如(0,-310)),在某个点(0,310)结束。我们有半径,我们有方程X^2 + Y^2 = r^2。现在我们正在尝试计算这条圆线上的一些点(比如10+)。
因此,我们尝试创建一个增量来计算这些点之间的Y/X值,使用上面显示的等式来确保计算的所有点都在圆的直线上。
一旦我们有了这些点,我们就试着把它们放入几个复杂的方程中,来计算绘制这个形状的机械臂的角度。这并不是真正的优先事项,但我认为我应该在问题中包括我们的总体目标。
如何创建增量来计算两个起始点之间的半圆线上的所有坐标?
然后将这些值放入上面代码中的方程式中,以计算机械臂的角度。寻找一种方法来做到这一点,而不是单独计算每个点,即创建一个增量,将它在一次。
This是我们的目标,用粗体计算分数。
发布于 2013-03-20 23:17:10
这些点需要均匀分布吗?如果没有,那么你可以直接使用你的公式:
// 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)偏移实际中心即可。
发布于 2013-03-20 22:19:11
圆的点可以使用以下公式确定:
x = radius * cos(angle)
y = radius * sin(angle)您必须确定正在绘制的圆的段、部分或圆弧,并确定起点角度和终点角度。
否则,在网上搜索"arc drawing algorithm c++“。
发布于 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。
https://stackoverflow.com/questions/15525941
复制相似问题