Draw triangle on 3d mesh

조회 수: 6 (최근 30일)
Jerry
Jerry 2020년 4월 18일
댓글: Steven Lord 2020년 8월 21일
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
Jerry
Jerry 2020년 4월 19일
please help
Steven Lord
Steven Lord 2020년 8월 21일
This is a copy of the original question in case it gets edited away like this one.
"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)."

댓글을 달려면 로그인하십시오.

답변 (1개)

darova
darova 2020년 4월 19일
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
Jerry
Jerry 2020년 4월 19일
no, unfortunately I don't
darova
darova 2020년 4월 19일
편집: darova 2020년 4월 19일
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')

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Graphics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by