Description Usage Arguments Details Value Examples

separate a 3D-pointcloud by a hyperplane

1 |

`pointcloud` |
numeric n x 3 matrix |

`v1` |
numeric vector of length=3 specifying a point on the separating plane |

`v2` |
numeric vector of length=3 specifying a point on the separating plane |

`v3` |
numeric vector of length=3 specifying a point on the separating plane |

`normal` |
plane normal (overrides specification by v2 and v3) |

`upper` |
logical specify whether the points above or below the plane are to be reported as TRUE. |

As above and below are specified by the normal calculated from *(v2-v1) x (v3-v1)*, where *x* denotes the vector crossproduct. This means the normal points "upward" when viewed from the positon where v1, v2 and v3 are arranged counter-clockwise. Thus, which side is "up" depends on the ordering of v1, v2 and v3.

logical vector of length n. Reporting for each point if it is above or below the hyperplane

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ```
data(nose)
v1 <- shortnose.lm[1,]
v2 <- shortnose.lm[2,]
v3 <- shortnose.lm[3,]
pointcloud <- vert2points(shortnose.mesh)
upper <- cutSpace(pointcloud, v1, v2, v3)
## Not run:
require(rgl)
normal <- crossProduct(v2-v1,v3-v1)
zeroPro <- points2plane(rep(0,3),v1,normal)
## get sign of normal displacement from zero
sig <- sign(crossprod(-zeroPro,normal))
d <- sig*norm(zeroPro,"2")
planes3d(normal[1],normal[2],normal[3],d=d)
points3d(pointcloud[upper,])
## End(Not run)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.