Кто-нибудь знает, как построить купол (он же полусфера) в MATLAB ... или любой другой язык программирования? - PullRequest
1 голос
/ 30 августа 2010

Мне нужно построить купол или половину сферы и уметь изменять размеры купола. Я подумал, что MATLAB будет моим лучшим выбором.

есть предложения?

БЛАГОДАРЯ

Ответы [ 4 ]

6 голосов
/ 30 августа 2010

Функция SPHERE генерирует координаты x, y и z для сферической поверхности.Вы просто должны удалить точки, соответствующие нижней части сферы, чтобы сделать купол.Например:

[x,y,z] = sphere;      %# Makes a 21-by-21 point sphere
x = x(11:end,:);       %# Keep top 11 x points
y = y(11:end,:);       %# Keep top 11 y points
z = z(11:end,:);       %# Keep top 11 z points
r = 3;                 %# A radius value
surf(r.*x,r.*y,r.*z);  %# Plot the surface
axis equal;            %# Make the scaling on the x, y, and z axes equal
2 голосов
/ 30 августа 2010

Вот отправная точка:

R = 7;
[X,Y] = meshgrid(-10:.1:10);
Z = sqrt(R.^2 - X.^2 - Y.^2);
Z(imag(Z) ~= 0) = 0;
mesh(X,Y,Z);
2 голосов
/ 30 августа 2010

взгляните на surf. формула для сферы:

x^2+y^2+z^2 = R^2

Вам также может понадобиться meshgrid

0 голосов
/ 16 февраля 2015

Я взял построенный круговой график и адаптировал его для построения купола.Я не могу проверить это, но это должно работать, так как круг работал нормально.

Я сделал это в JavaScript.setVox - это просто функция, которая печатает воксель на трехмерной плоскости.

  var rad = 1; //radius

  for (var z = -(rad); z < 0; z++) {
    r = Math.round(Math.sqrt(Math.pow(rad,2) - Math.pow(z,2)));
    for (var x = -(r); x < r; x++) {
      y = Math.round(Math.sqrt(Math.pow(r,2) - Math.pow(x,2)));
      setVox(x,y,z);
      setVox(x,-(y),z);
    }
    for (y = -(r); y < r; y++) {
      x = Math.round(Math.sqrt(Math.pow(r,2) - Math.pow(y,2)));
      setVox(x,y,z);
      setVox(-(x),y,z);
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...