How to find Intersection of 2 surfaces ?
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello
I have two surface made from discreate data. I want to find the cordinates of intersecting line. The surface are named as
Surface1 = (A1,A2,C)
Surface2 = (B1,B2,C)
My problem is that as data is discreate so I am not able to know the precise intersecting points of the surface.
For reference I have attached the file.
I want to find cordinates of this particular line.
Thanks in Advance
2 commentaires
Réponse acceptée
Matt J
le 24 Déc 2021
Modifié(e) : Matt J
le 27 Déc 2021
One way,
load data
F1=griddedInterpolant({A1,A2},C,'linear','none');
F2=griddedInterpolant({B1,B2},C,'linear','none');
figure(1)
surf(A1,A2,C','FaceColor', [0 0 1],'EdgeColor','none','FaceAlpha',1)
hold on
surf(B1,B2,C','FaceColor', [1 0 0],'EdgeColor','none','FaceAlpha',1)
xlabel x; ylabel y; view(-30,50); axis vis3d
xl=xlim; yl=ylim;
x=linspace(xl(1),xl(2),500);
y=linspace(yl(1),yl(2),500);
C1=F1({x,y});
C2=F2({x,y});
cm=contourc(x,y,(C1-C2)',[0,0]);
[~,coords]=getContourLineCoordinates(cm);
for i=1:numel(coords)
tmp=coords{i};
tmp(:,3)=F2(tmp);
coords{i}=num2cell(tmp,1); %coordinates of the surface intersection
end
for i=1:numel(coords)
[x,y,z]=deal(coords{i}{:});
line(x,y,z,'Color','g','LineWidth',3);
end
hold off
3 commentaires
Matt J
le 27 Déc 2021
The intersection line which I see from that I need their cordinates. I was unable to to find the variables where these values are stored
I had thought that XData, YData would give you the coordinates, but apparently I was wrong. I have updated my answer, using Adam Danz's File Exchange tool that you referenced. It works well, as the plot shows.
I there a way that I can see this contour line on my actual graph.
That is now demonstrated.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!