How to project and fit a 2D path onto a 3D surface?

45 views (last 30 days)
I want to project a 2D spiral path on a 3D surface as in the attached image. How can this be done? Any help would be appreciated.

Accepted Answer

Adam Danz
Adam Danz on 28 Dec 2021
> I want to project a 2D spiral path on a 3D surface
Inputs:
  • (x,y) coordinates of the 2D spiral
  • (X,Y,Z) coordinates of the 3D surface
Produce 2D spiral.
t = linspace(0,12*pi,201);
x = t/pi.*cos(t);
y = t/pi.*sin(t);
zBase = -8;
z = zBase * ones(size(x));
cla()
plot3(x,y,z, '-', 'Color', [0.5 0.5 0.5])
Produce 3D surface
% Define surface
hold on
[X,Y,Z] = peaks(25);
X = X*4;
Y = Y*4;
% surf(X,Y,Z)
Interpolate the 3D surface so it shares the same x,y grid values as the spiral.
F = griddedInterpolant(X',Y',Z');
[Xq,Yq] = ndgrid(x,y);
Vq = F(Xq,Yq);
% Plot the interpolated surface
surf(Xq,Yq,Vq,'FaceAlpha',.1,'EdgeAlpha',0)
Add the 3D spiral to the surface
z3D = Vq(logical(eye(size(Vq))));
plot3(x,y,z3D, 'k-', 'LineWidth', 1)

More Answers (1)

DGM
DGM on 28 Dec 2021
Something like
N = 1000;
nturns = 10;
rmax = pi;
zscale = 0.1;
zoffset = 0.5;
r = linspace(0,rmax,N);
th = linspace(0,nturns*2*pi,N);
[x y] = pol2cart(th,r);
z = zoffset + zscale*sin(x);
plot(x,y); hold on
plot3(x,y,z);
view(3)
zlim([0 1])
view(-15,14)

Categories

Find more on Thermal Analysis in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!