# cutSpace: separate a 3D-pointcloud by a hyperplane In Morpho: Calculations and Visualisations Related to Geometric Morphometrics

## Description

separate a 3D-pointcloud by a hyperplane

## Usage

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

## Arguments

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

## Details

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.

## Value

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

## Examples

 ``` 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,normal,normal,d=d) points3d(pointcloud[upper,]) ## End(Not run) ```

Morpho documentation built on Sept. 9, 2021, 9:07 a.m.