Hello,
I have a 3D surface with the information on the vertices and faces in a matrix. I also have a point that is located on the surface. I would like to move this point in x direction on the surface. So that I can be sure that the new point is also on the surface.
Could someone please help me with that problem?
Thank you,
Theresa

 Akzeptierte Antwort

Bruno Luong
Bruno Luong am 11 Aug. 2023
Bearbeitet: Bruno Luong am 11 Aug. 2023

0 Stimmen

% Generate test mesh
x = 1:15; y = 1:15;
[X,Y] = meshgrid(x,y);
Z = peaks(15);
F = delaunay(X,Y);
% Your points to be projected, with moving xq constant yq
% NOTE: In your case just take the (xknown,yknown) to
% xq = xknown + 2; yq = yknown; to move them at distance 2
xq = linspace(min(x),max(x),101);
yq = 8+zeros(size(xq));
% Build some useful matrices and coordinates in arrays
xyz = [X(:) Y(:) Z(:)]';
xyzF = reshape(xyz(:,F'), 3, 3, []);
baryMat = xyzF;
baryMat(3,:,:) = 1;
figure
trisurf(F,X,Y,Z);
colormap gray
hold on
for k = 1:length(xq)
xyq = [xq(k); yq(k); 1];
w = pagemldivide(baryMat, xyq);
i = find(all(w >= 0, 1), 1); % which face contain the point
if isempty(i)
% point outside the mesh
continue
end
xyzq = xyzF(:,:,i) * w(:,:,i);
plot3(xyzq(1), xyzq(2), xyzq(3), 'g.', 'Markersize', 10)
end

3 Kommentare

Theresa Kandels
Theresa Kandels am 11 Aug. 2023
Thank you for your help Bruno!
I just have problems to apply the script to my data, as I only have the coordinates of the vertices. Do you know how i can convert the informations of the vertices and the faces to your format?
But earlier you wrote "I have a 3D surface with the information on the vertices and faces in a matrix."
So what do you have?
In my code Vertice is
xyz' % n x 3
and face is
F % m x 3
If you only have vertices you might be able to reconstruct connectivity with delaunay as I did.
Explain exactly what you have if you don't want me to guess and fail.
Theresa Kandels
Theresa Kandels am 11 Aug. 2023
Thank you for your answer, this will help!
I'm sorry I'm still very new to this subject.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Version

R2022b

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by