【问题标题】:Create Circle In 3-D Axes在 3-D 轴中创建圆
【发布时间】:2015-01-12 16:02:28
【问题描述】:

我是matlab的新手。

我想在 3-D 轴上绘制类似下图的东西,然后用鼠标移动它。

我对第二部分没有问题(鼠标移动时移动对象), 我不知道如何在 3-D 轴上创建这个圆

【问题讨论】:

  • slm,你如何通过鼠标点击获得3D坐标?因为您将单击 2D 表面,所以 ginput 会给出 [x y]。你想让z通过鼠标点击改变吗?
  • @Kamtal 请参阅此链接:stackoverflow.com/a/26892489/401403
  • 参见plot 中的filled 选项。
  • @ParagS.Chandakkar 我不能使用绘图,因为我想在鼠标移动时移动圆圈

标签: matlab 3d geometry axes


【解决方案1】:
elevation = linspace(0,2*pi,100);
r = ones(1,100);
azimuth = .75 * pi *ones(1,100);
while 1
  axis([-10 10 -10 10 -10 10])
  view([20 20 5])
  [newx newy] = ginput(1);
  [x,y,z] = sph2cart(azimuth,elevation,r);
  x = x + newx;
  y = y + newy;
  patch(x,y,z,[1 0 0],'EdgeColor','r');
  axis([-10 10 -10 10 -10 10])
end

您可以通过r 更改半径,例如r = .5 * ones(1,100);

但是click的坐标好像不对。

我认为你在上一个问题中已经解决了这个问题。

注意

ginput 返回的坐标被缩放到您单击的轴的 XLim 和 YLim 边界(数据单位)。 相比之下,图形 CurrentPoint 属性始终以图形单位返回,而与轴单位或限制无关`

【讨论】:

  • 谢谢,但是你可以看到你的圆圈的形状和我的图片不同
  • @Arash,看看有没有好转。我更改了azimuthview
  • 谢谢,但现在有一个问题,圆圈只是在轴的中间,而不是任何地方
  • @Arash,这是因为ginput 只给出了x,y,而圆圈绘制在z=0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 2016-04-25
相关资源
最近更新 更多