MATLAB Answers


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

Asked by Zarak Mo on 29 Jul 2019
Latest activity Commented on by Zarak Mo on 30 Jul 2019
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


Sign in to comment.

1 Answer

Answer by Matt J
on 30 Jul 2019
Edited by Matt J
on 30 Jul 2019
 Accepted Answer

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 Comment

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.

Sign in to comment.