Beispiel #1
0
        public Simplex(Tuple <int, Vector <double> >[] edges, RiemannianSpace ambiantSpace) : base(edges)
        {
            var directionalVectors = new List <Vector <double> >();

            foreach (var item in edges.Skip(1))
            {
                directionalVectors.Add(item.Item2 - BasePoint);
            }

            DirectionalVectors = directionalVectors.ToArray();

            DimAmbiantSpace = BasePoint.Count();

            Parametrization chart = x => {
                var dir = Matrix <double> .Build.DenseOfColumnVectors(DirectionalVectors);

                return(dir * x + BasePoint);
            };

            PushForward pushForward = x => {
                return(Matrix <double> .Build.DenseOfColumnVectors(DirectionalVectors));
            };

            AmbiantSpace   = ambiantSpace;
            Trivialization = new LocalTrivialization(chart, pushForward, ambiantSpace);
        }