我想绘制2个从内部相互切线的圆,然后较小的圆(内圆)在另一个表面上移动。我想在MATLAB中创建这个函数,我的意思是绘制和移动圆圈。
我想在较大的表面上移动另一个较小的圆圈。
此图像显示圆圈的位置
答案 0 :(得分:0)
你可能找不到任何人会为你编写这整件事。让我把这个问题分解为你可以自己研究和解决的任务。
对于圆周运动,您需要一个表示时间的变量(让我们称之为t
)。您需要t
的功能,这些功能会使x
和y
位置围绕圆圈前进。 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
此功能的输入是
输出是圆的XY坐标的2x(n + 1)个矩阵。
此代码仅输出1个圆圈设置。如果你想要圆周运动,你需要多次调用该函数以获得不同的phy
值。
编辑:检查代码,我在将其放入函数时做了一些拼写错误。 并用phi替换了phy;)