public void TranslateControlPointTest() { ARAPDeformation target = new ARAPDeformation(new List <PointF>() { new PointF(0, 0), new PointF(100, 0), new PointF(100, 100), new PointF(0, 100), }, null); // TODO: 適切な値に初期化してください target.BeginDeformation(); target.EndDeformation(); target.AddControlPoint(new PointF(0, 0), new PointF(0, 0)); target.AddControlPoint(new PointF(100, 0), new PointF(100, 0)); target.AddControlPoint(new PointF(100, 100), new PointF(100, 100)); //target.AddControlPoint(new PointF(50, 50)); // target.AddControlPoint(new PointF(150, 50)); // target.AddControlPoint(new PointF(150, 150)); target.BeginDeformation(); //target.TranslateControlPoint(new PointF(50, 50), new PointF(-50, -50)); //target.TranslateControlPoint(new PointF(150, 50), new PointF(100, -50)); //target.TranslateControlPoint(new PointF(150, 150), new PointF(50, 50)); target.ToBitmap().Save("../../../before.png"); target.TranslateControlPoint(new PointF(0, 0), new PointF(-100, -100), true); target.ToBitmap().Save("../../../after.png"); Assert.AreEqual(target.meshPointList[0].X, -100, 1); Assert.AreEqual(target.meshPointList[0].Y, -100, 1); target.TranslateControlPoint(new PointF(100, 0), new PointF(0, -100), false); Assert.AreEqual(target.meshPointList[0].X, -100, 1); Assert.AreEqual(target.meshPointList[0].Y, -100, 1); target.TranslateControlPoint(new PointF(100, 100), new PointF(0, 0), true); target.EndDeformation(); Assert.AreEqual(target.meshPointList[0].X, -100, 1); Assert.AreEqual(target.meshPointList[0].Y, -100, 1); Assert.AreEqual(target.meshPointList[1].X, 0, 1); Assert.AreEqual(target.meshPointList[1].Y, -100, 1); Assert.AreEqual(target.meshPointList[2].X, 0, 1); Assert.AreEqual(target.meshPointList[2].Y, 0, 1); Assert.AreEqual(target.meshPointList[3].X, -100, 1); Assert.AreEqual(target.meshPointList[3].Y, 0, 1); var path = target.GetPath(); Assert.AreEqual(path[0].X, -100, 1); Assert.AreEqual(path[0].Y, -100, 1); Assert.AreEqual(path[1].X, 0, 1); Assert.AreEqual(path[1].Y, -100, 1); Assert.AreEqual(path[2].X, 0, 1); Assert.AreEqual(path[2].Y, 0, 1); Assert.AreEqual(path[3].X, -100, 1); Assert.AreEqual(path[3].Y, 0, 1); }
public void newMesh(List <List <int> > neighbors_) { meshFilter = mesh.GetComponent <MeshFilter>().mesh; vertices = meshFilter.vertices; neighbors = neighbors_; arapDeformation = new ARAPDeformation(meshFilter, neighbors); arapDeformation.Initializer(); }
public void ARAPDeformationConstructorTest() { ARAPDeformation refARAP = new ARAPDeformation(new List <PointF>() { new PointF(0, 0), new PointF(100, 0), new PointF(100, 100), new PointF(0, 100), }, null); // TODO: 適切な値に初期化してください ARAPDeformation target = new ARAPDeformation(refARAP); var path1 = refARAP.GetPath(); var path2 = target.GetPath(); Assert.AreEqual(path1.Count, path2.Count); for (int i = 0; i < path1.Count; i++) { Assert.AreEqual(path1[i].X, path2[i].X, 1e-4); Assert.AreEqual(path1[i].Y, path2[i].Y, 1e-4); } }
public void InitializeControlPointsTest() { SegmentMeshInfo_Accessor.InitializeControlPoints(null, null, 0, null, null); ARAPDeformation arap = new ARAPDeformation(new List <PointF>() { new PointF(-10, -10), new PointF(10, -10), new PointF(-10, 10), new PointF(10, 10), }, new List <PointF>()); SkeletonAnnotation an = new SkeletonAnnotation(null); an.joints.Add(new JointAnnotation("0", new PointF(0, 0))); an.joints.Add(new JointAnnotation("1", new PointF(100, 0))); an.joints.Add(new JointAnnotation("2", new PointF(0, 50))); an.joints.Add(new JointAnnotation("3", new PointF(0, 100))); an.joints.Add(new JointAnnotation("4", new PointF(99, 100))); an.bones.Add(new BoneAnnotation(an.joints[0], an.joints[1])); an.bones.Add(new BoneAnnotation(an.joints[0], an.joints[2])); an.bones.Add(new BoneAnnotation(an.joints[3], an.joints[4])); Dictionary <BoneAnnotation, List <PointF> > boneToControl = new Dictionary <BoneAnnotation, List <PointF> >(); SegmentMeshInfo_Accessor.InitializeControlPoints(arap, an, 50, null, boneToControl); Assert.AreEqual(arap.controlPoints.Count, 6); Assert.AreEqual(boneToControl.Sum(kv => kv.Value.Count), 7); Assert.AreEqual(arap.controlPoints[0].X, 0); Assert.AreEqual(arap.controlPoints[1].X, 50, 1e-4); Assert.AreEqual(arap.controlPoints[2].X, 100); Assert.AreEqual(arap.controlPoints[3].X, 0); Assert.AreEqual(arap.controlPoints[3].Y, 50); Assert.AreEqual(arap.controlPoints[4].X, 0); Assert.AreEqual(arap.controlPoints[5].X, 99); }