Beispiel #1
0
        public void Test_S2Cap_AddNonEmptyCapToEmptyCap()
        {
            S2Cap empty         = S2Cap.Empty;
            S2Cap non_empty_cap = new(new S2Point(1, 0, 0), S1Angle.FromDegrees(10));

            empty = empty.AddCap(non_empty_cap);
            Assert.Equal(non_empty_cap.Area(), empty.Area());
        }
Beispiel #2
0
        public void Test_S2Cap_GetCentroid()
        {
            // Empty and full caps.
            Assert.Equal(new S2Point(), S2Cap.Empty.Centroid());
            Assert.True(S2Cap.Full.Centroid().Norm() <= S2.DoubleError);

            // Random caps.
            for (int i = 0; i < 100; ++i)
            {
                S2Point center   = S2Testing.RandomPoint();
                double  height   = S2Testing.Random.UniformDouble(0.0, 2.0);
                S2Cap   cap      = S2Cap.FromCenterHeight(center, height);
                S2Point centroid = cap.Centroid();
                S2Point expected = center * (1.0 - height / 2.0) * cap.Area();
                Assert.True((expected - centroid).Norm() <= S2.DoubleError);
            }
        }