find the intersection point between 2 plane in matlab

Let's say I have: the set of 3D data point (xi,yi,zi) contains around 10,000 points located in plane L
I also have : plane M which is specified by normal vector n , and point A(xA,yA,zA). How to find the intersection point between 2 plane L & M?

 Réponse acceptée

ha ha
ha ha le 13 Mai 2018
Modifié(e) : ha ha le 13 Mai 2018

0 votes

Plane L contains 10,000 points in 3D space OXYZ
Plane M contains (normal_vector & center_point). Firstly, finding the perpendicular distance of each point in plane L to the plan M. Example: 10,000 distance corresponding to 10,000 points.
Then check the condition to the Plane M. If the distance < distance_threshold. Example: 1cm or 5mm ====> then, choose those point satisfying that condition only

Plus de réponses (1)

Ameer Hamza
Ameer Hamza le 13 Mai 2018

0 votes

For plane L find a normal to that plane using this FEX submission. This will give you a normal and a point on the plane L. Since you already have a normal and point to plane M, use another FEX submission to calculate their intersection.

7 commentaires

ha ha
ha ha le 13 Mai 2018
Modifié(e) : ha ha le 13 Mai 2018
You give a promise solution. But I use the function "plane_intersect" as your suggestion, the result is given only 1 point P(belong to plane L), not the set of intersection data https://www.mathworks.com/matlabcentral/fileexchange/17618-plane-intersection
plane_intersect() can returns two arguments, first is point and second in the direction vector of the line. You can use the two to construct a line. Call it like this
[point direction] = plane_intersect(...);
Yes, I know that plane_intersect() can returns two arguments (point & direction). But How can I return the intersection point(x,y,z) which is belong to the plane L from that results
The point returned is the point of intersection. It belongs to both planes. So the point returned by plane_intersect lies of plane L as well as on plane M.
ha ha
ha ha le 13 Mai 2018
Modifié(e) : ha ha le 13 Mai 2018
The point returned is the point of intersection, and this is only 1 point coordinate.
Assume: the plane L contains 10,000 points. And example, the intersection contains 1,000 points. How can I return that 1,000 points intersection (x,y,z) which is belong to the plane L from that results
Ameer Hamza
Ameer Hamza le 13 Mai 2018
Modifié(e) : Ameer Hamza le 13 Mai 2018
If you just want to get 1000 points which lie on the line of intersection and plane L. Then you just need to sample the line of intersection. One example
p = [1 2 3]; % point of intersection returned by 'plane_intersect'
dir = [0.2 0.6 0.6]; % direction of intersection returned by 'plane_intersect'
t = (0:0.1:100)'; % to get 1000 samples
points = p.*(1-t)+(p+dir).*t; % p and dir must be row vectors
If you want points that lie on the line of intersection and also belongs to the initial dataset (xi, yi, zi) for plane L, then it is highly unlikely that any of that point will precisely lie on the line of intersection.
Ok, thank @Ameer Hamza for providing me the idea.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Polynomials dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by