如何在MATLAB中绘制2个内切圆?

时间:2014-06-24 15:59:06

标签: matlab plot

我想绘制2个从内部相互切线的圆,然后较小的圆(内圆)在另一个表面上移动。我想在MATLAB中创建这个函数,我的意思是绘制和移动圆圈。

我想在较大的表面上移动另一个较小的圆圈。

此图像显示圆圈的位置

enter image description here

2 个答案:

答案 0 :(得分:0)

你可能找不到任何人会为你编写这整件事。让我把这个问题分解为你可以自己研究和解决的任务。

  1. 在屏幕上画一个圆圈。谷歌:“matlab画圈”
  2. 为圆圈的位置设置动画。 Google:“matlab animate position”
  3. 创建圆周运动。我会在这里帮助你。
  4. 对于圆周运动,您需要一个表示时间的变量(让我们称之为t)。您需要t的功能,这些功能会使xy位置围绕圆圈前进。 Sine是你的朋友。

    R = 100 # radius of circular motion
    S = 0.1 # speed of animation
    x = R * cos(t*S)
    y = R * sin(t*S)
    

答案 1 :(得分:0)

幸运的你!

正如@Neal Ehardt所说,通常你不会找到能为你做这件事的人,但幸运的是你找到了一个已经在之前的项目中编写过这个的人。

所以这是代码:

function [circ1,circ2]=tangent_circ(c,r1,r2,phi,n)

alpha=0:2*pi/n:2*pi;
x1=c(1)+r1*cos(alpha);
y1=c(2)+r1*sin(alpha);

paux=[c(1)+r1*cos(phi) c(2)+r1*sin(phi)];
vect=[c(1)-paux(1),c(2)-paux(2)];
vect=vect/norm(vect);
c2=paux+vect*r2;

x2=c2(1)+r2*cos(alpha);
y2=c2(2)+r2*sin(alpha);
circ1=[x1;y1];
circ2=[x2;y2];

end

此功能的输入是

  • c:所需圆圈的中心[x,y]格式
  • r1,r2所需圆的半径
  • phy:内圈的位置角度(以弧度表示)
  • n num of points

输出是圆的XY坐标的2x(n + 1)个矩阵。

此代码仅输出1个圆圈设置。如果你想要圆周运动,你需要多次调用该函数以获得不同的phy值。

编辑:检查代码,我在将其放入函数时做了一些拼写错误。 并用phi替换了phy;)