コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }