Draw triangle on 3d mesh
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I have an irregualar 3d surface plot build just with faces and vertices. Now I want to select 3 random points from the plot and automatically draw a triangle with these corner points on top of the surface (so that the triangle nestles on the given 3D surface).
5 Kommentare
Steven Lord
am 21 Aug. 2020
"Hi, I have an irregualar 3d surface plot build just with faces and vertices. Now I want to select 3 random points from the plot and automatically draw a triangle with these corner points on top of the surface (so that the triangle nestles on the given 3D surface)."
Antworten (1)
darova
am 19 Apr. 2020
What about this?
function main
opengl software
h = surf(sphere(20));
axis vis3d
set([h gcf],'hittest','off') % не знаю почему
set(gca,'buttondownfcn',@func) % клацать только на 'axes'
function func(hobj,hev)
p = get(hobj,'currentpoint');
p
line(p(:,1),p(:,2),p(:,3),'marker','o')
4 Kommentare
darova
am 19 Apr. 2020
Bearbeitet: darova
am 19 Apr. 2020
I want to explain you how does it work: you can't choose points you want directly. But you can pick some point and then calculate distances from this point to every existing points on plot. Having smallest distance using min you can choose closest point
Here is a simple script
x = rand(20,1);
y = rand(20,1);
plot(x,y,'.b')
p = ginput(1);
[~,ix] = min(pdist2(p,[x y]));
line(x(ix),y(ix),'marker','o')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285824/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285825/image.png)
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!