1
$\begingroup$

Hello I have a large number of data points, from which I want to remove these(between the red lines) that seem to fall onto one plane, what would be the best and easiest approach.

Also added the saved data points : CenterHill.txt

The help is appreciated, thank you.

ListPointPlot3D

$\endgroup$
  • $\begingroup$ So actually your two red lines are two planes. Could find their equations? $\endgroup$ – Αλέξανδρος Ζεγγ Aug 9 '18 at 7:31
1
$\begingroup$

The plane seems to have no slope along the x-axis, and the y slope and z translation can easily be found just by guessing and plotting:

Show[ListPointPlot3D[data], Plot3D[3.69 + (y - 24.4) 1.6,
 {x, Sequence @@ MinMax[data[[All, 1]]]}, {y, Sequence @@ MinMax[data[[All, 2]]]}]]

Signed distances to the plane:

pointOnPlane = {0, 0, 3.69 + (0 - 24.4) 1.6};
normal = Coefficient[3.69 + (y - 24.4) 1.6 - z, #] & /@ {x, y, z};
dists = With[{proj = Projection[# - pointOnPlane, normal]},
           Norm[proj] Sign[proj.normal]] & /@ data;

Guess (or maybe use something like Sort[Differences[Sort[dists]]][[-1]]/2) some appropriate threshold to seperate the points near the plane from the rest:

types = Values[PositionIndex[Sign[Threshold[dists, 0.04]]]];

Show[
 ListPointPlot3D[data[[types[[1]]]], PlotStyle -> Directive[AbsolutePointSize[3], Black], PlotRange -> All],
 ListPointPlot3D[data[[types[[2]]]], PlotStyle -> Directive[AbsolutePointSize[3], Red], PlotRange -> All],
 ListPointPlot3D[data[[types[[3]]]], PlotStyle -> Directive[AbsolutePointSize[3], Green], PlotRange -> All],
PlotRange -> All]

$\endgroup$
  • $\begingroup$ Thank you.Got rid of the points by using nData=data For[i = 1, i < Length[data[[types[[2]]]]] + 1, i++, nData= DeleteCases[nData, data[[types[[2]]]][[i]]]] ListPointPlot3D[nData] $\endgroup$ – Cadis Rai Aug 9 '18 at 8:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.