diff --git a/AmpScan/pca.py b/AmpScan/pca.py index 73cdb302a2c9a887838d09c7d1b647a9bcc0d3b2..3ee7d5ff74ae19e5ea7f5e81db67cf98bca14340 100644 --- a/AmpScan/pca.py +++ b/AmpScan/pca.py @@ -35,11 +35,11 @@ class pca(object): for s in self.shapes: s.planarTrim(height) - def register(self): + def register(self, scale=None): r""" Function to register all the shapes to a baseline """ - self.registered = [registration(self.baseline, t) for t in self.shapes] + self.registered = [registration(self.baseline, t, fixBrim=True, steps=10).reg for t in self.shapes] self.X = np.array([r.vert.flatten() for r in self.registered]).T def pca(self): diff --git a/AmpScan/registration.py b/AmpScan/registration.py index 764662668c73256bb0651bd36c8d262fa372ad77..b89fc6a8effa41f8727ff814d8a3b1159f3850ab 100644 --- a/AmpScan/registration.py +++ b/AmpScan/registration.py @@ -47,7 +47,8 @@ class registration(object): getattr(self, method)(*args, **kwargs) - def point2plane(self, steps = 1, neigh = 10, inside = True, subset = None, smooth=1, fixBrim=False): + def point2plane(self, steps = 1, neigh = 10, inside = True, subset = None, + scale=False, smooth=1, fixBrim=False): r""" Point to Plane method for registration between the two meshes @@ -80,6 +81,13 @@ class registration(object): [self.b.vert, self.b.faces, self.b.values])) regData = copy.deepcopy(bData) self.reg = AmpObject(regData, stype='reg') + if scale is not None: + tmin = self.t.vert.min(axis=0)[2] + rmin = self.reg.vert.min(axis=0)[2] + SF = 1 - ((tmin-scale)/(rmin-scale)) + logic = self.reg.vert[:, 2] < scale + d = (self.reg.vert[logic, 2] - scale) * SF + self.reg.vert[logic, 2] += d normals = np.cross(self.t.vert[self.t.faces[:,1]] - self.t.vert[self.t.faces[:,0]], self.t.vert[self.t.faces[:,2]] - diff --git a/GUIs/AmpScanGUI.py b/GUIs/AmpScanGUI.py index 2ed12338c98b54a0b34cb57c1c5f968a60568baf..4ff33f64f4c2845c4bd52750c3e029c8225922ef 100644 --- a/GUIs/AmpScanGUI.py +++ b/GUIs/AmpScanGUI.py @@ -143,7 +143,6 @@ class AmpScanGUI(QMainWindow): ang = float(button.text()) idx = [0, 0, 1] self.files[moving].rotateAng([ang*i for i in idx], 'deg') - print(self.files[moving].actor.GetOrigin()) self.files[moving].tform.RotateZ(ang) self.renWin.Render() @@ -188,8 +187,8 @@ class AmpScanGUI(QMainWindow): maxiter=10, method='linPoint2Plane').m al.tform = vtk.vtkTransform() al.tform.PostMultiply() - al.actor.SetUserTransform(al.tform) al.addActor() + al.actor.SetUserTransform(al.tform) alName = moving + '_al' self.files[alName] = al self.filesDrop.append(alName)