幾何学幾何学
空間上の円単体テスト; 3D Circle Unit Test

概要
空間上の円の単体テスト
テスト対象の空間上の円クラスはこちら


ソースコード

namespace Geometry.Geometry3D.Tests {
    [TestClass()]
    public class Circle3DTests {
        [TestMethod()]
        public void Circle3DTest() {
            Circle3D circle = new Circle3D(new Vector3D(1, 3, 5), new Vector3D(2, 4, 6), 2);

            Assert.AreEqual(circle.Center, new Vector3D(1, 3, 5));
            Assert.AreEqual(circle.Normal, new Vector3D(2, 4, 6).Normal);
            Assert.AreEqual(circle.Radius, 2.0);

            Assert.AreEqual(circle.Area, 4 * Math.PI);
        }

        [TestMethod()]
        public void CircumTest() {
            Vector3D v0 = new Vector3D(3, 9, 1), v1 = new Vector3D(4, 2, 1), v2 = new Vector3D(12, 6, 1);

            Circle3D circle1 = Circle3D.Circum(new Triangle3D(v0, v1, v2));

            Assert.AreEqual(circle1.Center, new Vector3D(7, 6, 1));
            Assert.AreEqual(circle1.Normal, new Vector3D(0, 0, 1));
            Assert.AreEqual(circle1.Radius, 5);

            Matrix3D matrix = Matrix3D.RotateAxis(new Vector3D(1, 2, 3), 0.5);

            Circle3D circle2 = Circle3D.Circum(new Triangle3D(matrix * v0, matrix * v1, matrix * v2));

            Assert.AreEqual((circle2.Center - matrix * new Vector3D(7, 6, 1)).Norm < 1e-12, true);
            Assert.AreEqual((circle2.Normal - matrix * new Vector3D(0, 0, 1)).Norm < 1e-12, true);
            Assert.AreEqual(circle2.Radius, 5, 1e-12);
        }

        [TestMethod()]
        public void IncircleTest() {
            Vector3D v0 = new Vector3D(2, 1, 1), v1 = new Vector3D(6, 1, 1), v2 = new Vector3D(6, 4, 1);

            Circle3D circle1 = Circle3D.Incircle(new Triangle3D(v0, v1, v2));

            Assert.AreEqual(circle1.Center, new Vector3D(5, 2, 1));
            Assert.AreEqual(circle1.Normal, new Vector3D(0, 0, 1));
            Assert.AreEqual(circle1.Radius, 1);

            Matrix3D matrix = Matrix3D.RotateAxis(new Vector3D(1, 2, 3), 0.5);

            Circle3D circle2 = Circle3D.Incircle(new Triangle3D(matrix * v0, matrix * v1, matrix * v2));

            Assert.AreEqual((circle2.Center - matrix * new Vector3D(5, 2, 1)).Norm < 1e-12, true);
            Assert.AreEqual((circle2.Normal - matrix * new Vector3D(0, 0, 1)).Norm < 1e-12, true);
            Assert.AreEqual(circle2.Radius, 1, 1e-12);
        }

        [TestMethod()]
        public void ValidTest() {
            Assert.AreEqual(Circle3D.IsValid(new Circle3D(new Vector3D(1, 3, 5), new Vector3D(2, 4, 6), 2)), true);
            Assert.AreEqual(Circle3D.IsValid(Circle3D.Invalid), false);
        }
    }
}

関連項目
空間上の円

ライブラリライブラリ
確率統計確率統計
線形代数線形代数
幾何学幾何学
最適化最適化
微分方程式微分方程式
画像処理画像処理
補間補間
機械学習機械学習
クラスタリングクラスタリング
パズルゲーム・パズル
未分類未分類