mirror | R Documentation |
mirror landmarks or triangular mesh in place
mirror( x, icpiter = 50, subsample = NULL, pcAlign = FALSE, mirroraxis = 1, initPC = TRUE, initCenter = TRUE, v1 = NULL, v2 = NULL, v3 = NULL, normal = NULL, mc.cores = 2 ) ## S3 method for class 'matrix' mirror( x, icpiter = 50, subsample = NULL, pcAlign = FALSE, mirroraxis = 1, initPC = TRUE, initCenter = TRUE, v1 = NULL, v2 = NULL, v3 = NULL, normal = NULL, mc.cores = 2 ) ## S3 method for class 'mesh3d' mirror( x, icpiter = 50, subsample = NULL, pcAlign = FALSE, mirroraxis = 1, initPC = TRUE, initCenter = TRUE, v1 = NULL, v2 = NULL, v3 = NULL, normal = NULL, mc.cores = 2 )
x |
k x 3 matrix or mesh3d |
icpiter |
integer: number of iterations to match reflected configuration onto original one |
subsample |
integer: use only a subset for icp matching |
pcAlign |
if TRUE, the icp will be preceeded by an alignment of the principal axis (only used if icpiter > 0), currently only works for 3D data. |
mirroraxis |
integer: which axis to mirror at |
initPC |
logical: if TRUE the data will be prealigned by its principal axes. |
initCenter |
logical: if TRUE and |
v1 |
point on plane |
v2 |
if normal=NULL, the plane will be defined by three points |
v3 |
if normal=NULL, the plane will be defined by three points |
normal |
plane normal (overrides specification by v2 and v3) |
mc.cores |
use parallel processing to find best alignment to original shape. |
reflect a mesh configuration at the plane spanned by its first 2 principal axis, then try to rigidily register the reflected configuration onto the original one using iterative closest point search to establish correspondences.
Also, if a reflection plane is defined, pcAlign
, initPC
, initCenter
and mirroraxis
will be ignored and the object will be mirrored on the defined plane (and optionally aligned using an ICP approach).
returns the reflected object
data(boneData) boneMir <- mirror(boneLM[,,1],icpiter=50,mc.cores=2,mirroraxis=3) ### mirror on 3 midsaggital landmarks and then optimize it with an ICP boneMirPlane <- mirror(boneLM[,,1],v1=boneLM[1,,1],v2=boneLM[2,,1],v3=boneLM[9,,1]) ## 2D Example: if (require(shapes)) { gorfMir <- mirror(gorf.dat[,,1],mirroraxis=2,pcAlign=TRUE,icpiter = 0) plot(gorfMir,asp = 1) points(gorf.dat[,,1],col=3) } ## Not run: ## now mirror a complete mesh require(rgl) skullMir <- mirror(skull_0144_ch_fe.mesh,icpiter=10,subsample = 30, mc.cores=2,mirroraxis=3,pcAlign=TRUE) ###compare result to original wire3d(skull_0144_ch_fe.mesh,col=3) wire3d(skullMir,col=2) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.