Not able to Understand Code for "Volume of Solid by Revolution"

6 views (last 30 days)
clc
clear all
close all
syms x
f = input('Enter the function')
fL = input('Enter the interval on which the function is defined')
yr = input('Enter the axis of rotation')
iL = input('integration limits')
volume = pi*int((f-yr)^2,iL(1),iL(2));
disp(['Volume is: ',num2str(double(volume))])
fx = inline(vectorize(f));
xvals = linspace(fL(1),fL(2),201);
xvals = fliplr(xvals);
xivals = linspace(iL(1),iL(2),201);
xivalsr = fliplr(xivals);
xlim = [fL(1) fL(2)+0.5];
ylim = fx(xlim);
figure('Position',[100 200 560 420])
subplot(2,1,1)
hold on
plot(xvals,fx(xvals),'-b','LineWidth',2);
[X,Y,Z] = cylinder(fx(xivals)-yr,100);
figure('Position',[700 200 560 420])
Z = iL(1) + Z.*(iL(2)-iL(1));
surf(Z,Y+yr,X,'EdgeColor','none','FaceColor','flat','FaceAlpha',0.6);
hold on
plot([iL(1),iL(2)],[yr yr], 'r-', 'LineWidth', 2);
xlabel('X-axis');
ylabel('Y-axis');
zlabel('Z-axis');
view(22,11)
  1 Comment
Dhairya
Dhairya on 14 Nov 2022
please explain this part in the code
[X,Y,Z] = cylinder(fx(xivals)-yr,100);
figure('Position',[700 200 560 420])
Z = iL(1) + Z.*(iL(2)-iL(1));
surf(Z,Y+yr,X,'EdgeColor','none','FaceColor','flat','FaceAlpha',0.6);
hold on
plot([iL(1),iL(2)],[yr yr], 'r-', 'LineWidth', 2);

Sign in to comment.

Accepted Answer

Jim Riggs
Jim Riggs on 14 Nov 2022
[X,Y,Z] = cylinder(fx(xivals)-yr,100);
Creates a set of 3D points that define a cylinder
figure('Position',[700 200 560 420])
Creates a figure window, specifying the size and position on the screen
Z = iL(1) + Z.*(iL(2)-iL(1));
Defines variable Z
surf(Z,Y+yr,X,'EdgeColor','none','FaceColor','flat','FaceAlpha',0.6);
Draws a surface plot in the figure window. Specifying the edge color as 'none' Face color is 'flat' and FaceAlpha is 0.6 (The facealpha of 0.6 makes the surfaces partially transparent)
hold on
Turns on 'hold' mode for the figure window, so that the next plot command will be addded to the figure window without erasing the existing figure.
plot([iL(1),iL(2)],[yr yr], 'r-', 'LineWidth', 2);
Adds a line plot to the figure window using, specifying a red color ('r') and a line width of 2.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!