Hello everyone,
I have a 3D point cloud, and I want to find the cross section of it by slicing it with a plane that is defined by a point and a perpendicular vector. Then I wish to detect and store the points close to the plane on either side. Any ideas on how to do this? Thanks in advance.

4 comentarios

John D'Errico
John D'Errico el 7 de Jul. de 2017
Editada: John D'Errico el 7 de Jul. de 2017
Given that there will probably be no points at all that lie exactly in any random plane that passes through a point cloud, you need to decide what it means for a point to be contained in the plane.
Beyond that, even if a point happens to mathematically lie in a plane, any numerical computations will show the point falls on one side or the other by tiny amounts on the order of eps.
Justin Park
Justin Park el 7 de Jul. de 2017
Editada: Justin Park el 7 de Jul. de 2017
Sorry, I will rephrase that.
I want to detect and store points that are fairly close to the plane on either side (within a threshold distance which will be defined in the code).
Sallymarc
Sallymarc el 19 de Jul. de 2017
Editada: Sallymarc el 19 de Jul. de 2017
Hi, I have a problem, having 3D points and I need to see the cross section of that by slicing that. But I need to know one step back. I do not know even how to define a plane, based on points and the normal to the plane. Also, I do not know how to define a threshold for a plane. Any one can explain this in more detail or willing to share the example code here? Thanks
Steven Amor
Steven Amor el 21 de Mayo de 2020
We have been playing around with our Euclideon Vault SDK inside Matlab as a way to view massive 3D Point Clouds - similar to what we've previously done for the Unity platform.
(The full SDK includes the ability to do cross sections)
My question to this forum is whether anyone has a need for such a thing, and if so what specific features would you want?
We can render our Unlimited Detail models inside Matlab using CPU only, rotate the model but what else?
- specify camera position?
- would you want geospatial support? what geo-zones? local grid?
- select a point to see meta-data?
- select and area?
- export an area to Point Cloud / LAS?
- Anything else?
I assume currently people are using Matlab for Point Cloud processing, transformation, classification, ML, etc. and exporting the data into other packages for viewing. Would it be useful to view the point cloud instantly inside Matlab?
Steve
samor@euclideon.com
[url]http://www.euclideon.com/vault[/url]

Iniciar sesión para comentar.

 Respuesta aceptada

John D'Errico
John D'Errico el 7 de Jul. de 2017
Editada: John D'Errico el 7 de Jul. de 2017

0 votos

Ok. Given a tolerance in the form of a distance, then just compute the distance to the plane!
Retain any points that lie within the tolerance.
Personally, I'd probably color code the points as plotted, based on how far they lie off the plane, but within the tolerance.
If you know how to define a plane, based on a point and the normal to the plane, then the distance is given by a simple dot product. So if pointInPlane is the point, and normalToPlane is the normal vector (assume it is of unit length)
D = dot(P-pointInPlane,normalToPlane);
If you do this carefully, the above computation is vectorized. Even simpler, you can do it as a simple matrix multiply, without even needing the function dot. After all, a matrix*vector multiply is just a dot product anyway. Use find to choose the points that are closer than the indicated tolerance. Then I'd just use a tool like scatter to plot the points with my chosen color mapping.

1 comentario

Justin Park
Justin Park el 7 de Jul. de 2017
Great! I'll definitely give it a go. Thanks John!

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 7 de Jul. de 2017

Comentada:

el 21 de Mayo de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by