cutSpace | R Documentation |

separate a 3D-pointcloud by a hyperplane

```
cutSpace(pointcloud, v1, v2 = NULL, v3 = NULL, normal = NULL, upper = TRUE)
```

`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) \times (v3-v1)`

, where `\times`

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

```
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.