How to resize (shrink) 3d surface ?

3 Ansichten (letzte 30 Tage)
Teerapong Poltue
Teerapong Poltue am 21 Nov. 2020
Kommentiert: Image Analyst am 21 Nov. 2020
syms x y z
f = @(x,y,z) cos(x) + cos(y) + cos(z) ;
interval = [-pi:0.1:pi];
a= interval ;
b= interval;
c= interval;
[X,Y,Z] = meshgrid(a,b,c);
data = f(X,Y,Z);
p = patch(isosurface(a,b,c,data,0));
cdata = smooth3(rand(size(data)),'box',7);
isonormals(X,Y,Z,data,p)
isocolors(X,Y,Z,cdata,p)
p.FaceColor = 'interp';
p.EdgeColor = 'none';
view(150,30)
daspect([1 1 1])
colorbar
axis tight
camlight
lighting gouraud
Now I have plot a unit cell with domension of -pi to pi
I would like to have the same shape but shrink to a smaller size let say 1*1*1
how can I do that

Antworten (1)

Image Analyst
Image Analyst am 21 Nov. 2020
1*1*1 would be a single 1*1*1 would be a single element, right? What sense does that make?element, right? What sense does that make? You can vary the number of elements in the grid by adjusting the starting, step, and stopping parameters in this line:
interval = [-pi:0.1:pi];
Just look at the length of interval. Alternatively you could use linspace() to more directly specify how many elements there should be:
interval = linspace(-pi, pi, numElements);
  2 Kommentare
Teerapong Poltue
Teerapong Poltue am 21 Nov. 2020
I mean now I have 1 element size of -pi to pi in 3D.
But I want 1 element size of -0.5 to 0.5 (with full element so interval have to remain -pi to pi)
Image Analyst
Image Analyst am 21 Nov. 2020
2 pi is not even divisible by 0.5 so you have to decide what's more important: the spacing per element, or the ending values of the range.
>> 2*pi/0.5
ans =
12.5663706143592
You can't have 12.566 elements. You can have either 13 or 14 with a spacing of 0.5 but then the ending value won't be pi:
>> interval = -pi : 0.5 : pi
interval =
Columns 1 through 11
-3.1416 -2.6416 -2.1416 -1.6416 -1.1416 -0.64159 -0.14159 0.35841 0.85841 1.3584 1.8584
Columns 12 through 13
2.3584 2.8584
Or you can have exactly 13 elements with the starting point = -pi and the ending point = pi, but the spacing (step) won't be exactly 0.5:
>> interval = linspace(-pi, pi, 13)
interval =
Columns 1 through 11
-3.1416 -2.618 -2.0944 -1.5708 -1.0472 -0.5236 0 0.5236 1.0472 1.5708 2.0944
Columns 12 through 13
2.618 3.1416

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by