How to find out the cordinates of the intersection point of a line and a surface?

2 vues (au cours des 30 derniers jours)
Hello
I need to find out weather a line that connect to points in a 3D situation have an intersection with a surface or not, and also report the intersection point for further steps.
Imagine I have two points A and B ( which needs to be connected) a surface z.
A : x= 0.5 y=-0.5 z=-1
B : x=-0.7 y=1 z=1.5
and the surface z is:
[x, y] = meshgrid(linspace(-1, 1));
z = y.^2 + 2*x;
"The above data are just as an example"
Thanks alot for any help on my question

Réponse acceptée

Matt J
Matt J le 30 Juil 2019
Modifié(e) : Matt J le 30 Juil 2019
Plug the equation for the line into the equation for the surface and use fzero to find the root. This root will give the location of the intersection.
L=@(t) A+(B-A)*t; %line equation
S= @(xyz) xyz(3)-xyz(1).^2 -xyz(2).^2; %surface equation
t_intersection = fzero(@(t) S(L(t)) ,t0 )
  1 commentaire
Zarak kh
Zarak kh le 30 Juil 2019
Dear Matt
Thanks for your answer.
I just have some questions about your answer:
1- You use handle function "@", I have searched about it, is it correct to say this function help us not to define the varibale "t" for example for matlab?
2- Would you please explane surface equation? how you write your code like this from the original equation?
3- and I have to define a range for "t0" where the equation chnaged the sign, so what is the best way to do it?
Thanks again for your answer and help. it wsa very useful.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Get Started with MATLAB 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!

Translated by