Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to analyse abitrary 3D plane in 2D

I need to analyze a 3d curve in a 2d (x,y) manner in the BEST fitting 2d plane where the original 3d curves covers the biggest area possible.

Given: 2 sets of datapoints(x,y,z) which forms an arbitrary 3D curve.

Has: Calculated 2 surface planes using least square plane fitting

Needs: 1)Data points of each original dataset projected onto corresponding least square fitted plane 2)The projected datapoints transformed into a 2d XY like plane for 2D analysis of the original curve in context of the best suitable plane.

Any idea how to obtain this? I think the first step should be an orthogonal projection of each original data point onto the calculated plane - correct?

But I cannot figure out how to transform the stuff from there to a 2D geometry where I will have (x,y) datapoints to process?

The following picture shows the original data plots (red and blue curves) and their calculated planes (red and blue surface)

So far - so good

like image 928
user2500605 Avatar asked Jan 26 '26 21:01

user2500605


1 Answers

If you succeed in finding the plane, as you say, the best thing to do is to rotate and translate your coordinate system in order to look the points in their natural projection.

If your (x,y,z) data lies on a plane, then you know that a*x+b*y+c*z = 1. If you are able to find a, b, and c, you can use the transformation for doing ternary plots (Take a look at wikipedia).

The only thing you have to do is to transform your coordinates as follow:

x' = a*x ,y' = b*y, z' = c*z

In this way, your data will satisfy x'+y'+z' = 1. After that, using the transformation x'' = 0.5*(2y'+z') and y'' = sqrt(3)/2 * z', your data will be seen in its natural projection. If you data is always positive, then the curve will lie in a triangular region.

like image 88
Alejandro Avatar answered Jan 29 '26 09:01

Alejandro



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!