public void TransformedPolysurface_Vertex_points_result_from_original_IPolysurface_Vertex_points_by_applying_RotoTranslation3() { var origSurface = MockPolysurface(); var transformation = new RotoTranslation3(new Rotation3(new Quaternion(1.1, -2.2, 3.3, -4.4)), new Vector3(4.1, -2.4, 1.3)); var transSurface = new TransformedPolysurface(origSurface, transformation); var point = transSurface.Vertices.ElementAt(1).Point; Expect(Vector3.Distance(point, transformation.Apply(MockVertexPoint(1))), Is.LessThan(_tolerance)); }
public void TransformedPolysurface_Face_polygons_result_from_original_IPolysurface_Face_polygons_by_applying_RotoTranslation3() { var origSurface = MockPolysurface(); var transformation = new RotoTranslation3(new Rotation3(new Quaternion(1.1, -2.2, 3.3, -4.4)), new Vector3(4.1, -2.4, 1.3)); var transSurface = new TransformedPolysurface(origSurface, transformation); var polygon = transSurface.Faces.ElementAt(1).Polygon; var actualVertex = polygon.Contours().First().Vertices.First(); var expectedVertex = transformation.Apply(MockFacePolygon(1)).Contours().First().Vertices.First(); Expect(Vector3.Distance(actualVertex, expectedVertex), Is.LessThan(_tolerance)); }
public void CropVisible_returns_correct_result_when_LocalModel_CropVisible_returns_not_null() { var point = new Vector3(3.141, 0.577, 2.718); var localModelMock = new Mock <IImageModel>(); localModelMock.Setup(model => model.CropVisible(It.IsAny <Segment3>())).Returns((Segment3 s) => new Segment3(s.Start, point)); var localToGlobal = new RotoTranslation3((Rotation3) new Quaternion(1.1, 2.2, 3.3, 4.4), new Vector3(1.23, 4.56, 2.56)); var globalModel = new TransformedImageModel(localModelMock.Object, localToGlobal); var segment = new Segment3(new Vector3(7, 8, 9), new Vector3(-1, -2, -4)); var crop = globalModel.CropVisible(segment); var transPoint = localToGlobal.Apply(point); Expect(crop != null); Expect(Vector3.Distance(crop.Value.Start, segment.Start), Is.LessThan(_tolerance)); Expect(Vector3.Distance(crop.Value.End, transPoint), Is.LessThan(_tolerance)); }