2011-07-22 63 views
3

我是MATLAB新手,有一个根本性问题,就是我在查找在线资源时遇到问题。我有一个圆的方程:C = center +(radius * cos(theta))+(radius * sin(theta))。我想把这个圆圈图形化为我之前绘制的其他东西......所有这些都是3D。我已经尝试过使用theta = linspace(0,2 * pi),但是在构建矩阵大小不同意的圆的方程时!如果你能提供任何好的帮助!在MATLAB中绘制参数化的3D圆圈

回答

0

我不知道你正在尝试做的,但考虑到这个例子:

theta = linspace(0,2*pi,100); 
C = [0;0]; 
r = 1; 

p = bsxfun(@plus, r.*[cos(theta);sin(theta)], C); 
plot(p(1,:), p(2,:), '.-') 
axis equal 

enter image description here

1

这里是绘制一个圆与给定的半径和中心(假设圆的一个例子位于平面z = 0):

radius = 2;  %# Define your radius 
center = [1 2]; %# Define your circle center [Cx Cy] 
theta = linspace(0,2*pi);   %# Create an array of theta values 
X = center(1)+radius.*cos(theta); %# Create the X values for the circle 
Y = center(2)+radius.*sin(theta); %# Create the Y values for the circle 
Z = zeros(size(X));    %# Create the Z values for the circle (needed 
            %# for 3D plotting) 
hold on;  %# Add to the current existing plot 
plot3(X,Y,Z); %# Plot your circle in 3D 

这里有一些在线资源的链接,应该是一个很好的起点学习MATLAB绘图的基本知识:

+0

啊,这大大示范帮助,唯一增加的是,它不在于Z = 0。我将如何去修改代码的三维圆,使z =/= 0?与此同时,我会继续在这里和在发布的资源上进行重击。 – sue

+0

@sue:如果圆圈位于平面'z = N'中,那么您可以按如下方式初始化'Z':'Z = N. * ones(size(X));'然而,如果圆圈倾斜这样它不会平躺在XY平面上,您的方程将比您上面的方程更复杂。 – gnovice

+0

啊,就是这样。我试图在任何一点上绘制曲线的密切圈。无论哪种方式,该圆都可以倾斜。我相信我有这个圈子的公式是正确的......但图表一直是相当艰巨的。 – sue

1

由于圆本质上是一个二维的实体,您会需要生成代表它的点到3D空间中嵌入的已知2D平面。然后,您可以随意旋转,缩放和翻译。

一个简单的演示代码,希望清楚:

n= 78; theta= linspace(0, 2* pi, n); c= [1 2 3]'; r= sqrt(2); 

points= r*[cos(theta); sin(theta); zeros(1, n)]+ repmat(c, 1, n); 
plot3(points(1,:), points(2,:), points(3,:), 's-') 
axis equal, hold on 

R= rref([rand(3) eye(3)]); R= R(:, 4: 6); 
points= R* points; 
plot3(points(1,:), points(2,:), points(3,:), 'ro')