在MATLAB中绘制参数化的3D圆

时间:2011-07-22 19:15:28

标签: matlab

我是MATLAB的新手,并且遇到了一个根本问题,即我在寻找在线资源时遇到了问题。我有一个圆的方程:C =中心+(半径* cos(theta))+(半径* sin(theta))。我想把这个圈子加上其他我预先绘制的东西......全部用3D。我已经尝试过使用theta = linspace(0,2 * pi),但是在构造圆的方程时,它表示矩阵大小不一致!如果你能提供任何可能很棒的帮助!

3 个答案:

答案 0 :(得分: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绘图基础知识的一个很好的起点:

答案 1 :(得分:1)

由于圆基本上是一个2D实体,因此您需要生成表示它的点到嵌入在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')

答案 2 :(得分: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