如何实施......?给定角度找到弧度范围

时间:2012-10-16 05:20:11

标签: matlab if-statement

在MATLAB上为我的项目实现这一点。

我有一个最多分为3个圆弧的圆圈。 所以每个弧的角度范围是[0,120),[120,240],[240,360]度。

现在我有一个代码,可以找出角度是否在给定任何θ的圆弧A,B,C中。

theta = mod(theta,360);
if theta >= 0 && theta < 120
    Arc = A;
elseif theta >= 120 && theta < 240
   Arc = B;
elseif theta >= 240 && theta < 360
   Arc = C;

这很好用。以下是我正在努力争取的情况:

圆圈可以旋转角度phi。

因此,例如,如果圆圈顺时针旋转30度,我的角度范围将是 [30,150],[150,270],[270,390]

我应该怎么写if语句来处理这个案子? 我的θ输入范围从0到无穷大,所以我试图进行模数除法 [30,150],[150,270],[270,30]

但是现在我被困住了如何使它一般化,因此它可以适用于theta的任何输入 和phi输入范围从[0,360)

提前感谢您的建议。

1 个答案:

答案 0 :(得分:2)

如果您知道圆圈的旋转角度(如您所说,phi = 30°),则只需使用theta-phi代替theta。其余代码保持不变:

theta = mod(theta-phi,360);
if theta >= 0 && theta < 120
   Arc = A;
elseif theta >= 120 && theta < 240
   Arc = B;
elseif theta >= 240 && theta < 360
   Arc = C;

或者,您可以phi添加到所有角度

theta = mod(theta,360);
ranges = mod([0 120; 120 240; 240 360])
if theta >= 0+phi && theta < 120+phi
   Arc = A;
elseif theta >= 120+phi && theta < 240+phi
   Arc = B;
elseif theta >= 240+phi && theta < 360+phi
   Arc = C;

使用您认为最直观的内容;六次添加对单次添加的性能影响完全可以忽略不计。

编辑:忘了第二种方法,它太乱了。