示例#1
0
        public IActionResult Calculation()
        {
            var graph = new OrientedGraph(new RelationsAdapter(Request.Query).Adapt());

            var adjMatrix = graph.ToMatrix();

            var graphInfo         = new GraphInfo(graph);
            var taktsOfCreation   = graphInfo.TactsOfCreation();
            var taktsOfExtinction = graphInfo.TactsOfExtinction();
            var taktsOfStore      = graphInfo.TactsOfStore();
            var inputs            = graphInfo.Inputs;
            var outputs           = graphInfo.Outputs;
            var power             = graphInfo.Power;

            var powers  = graphInfo.MatricesToZero;
            var bMatrix = new BMatrix(adjMatrix);

            var matrixAdapter    = new MatrixAdapter();
            var graphInfoAdapter = new GraphInfoAdapter();

            return(Json(new
            {
                aMatrices = matrixAdapter.AdaptAdjacencyMatrixWithPowers(powers),
                graphInfo = graphInfoAdapter.AdaptGraphInfo(power, inputs, outputs),
                tactsTable = graphInfoAdapter.AdaptTacts(taktsOfCreation, taktsOfExtinction, taktsOfStore),
                bMatrix = matrixAdapter.AdaptBMatrix(bMatrix)
            }));
        }
示例#2
0
        private void CalculateTransformationMatrix()
        {
            _transformationMatrix = MatrixAdapter.Create(Size, Size);
            double leftAngle  = _span.LeftNode.Angle * Math.PI / 180;
            double rightAngle = _span.RightNode.Angle * Math.PI / 180;

            _transformationMatrix[0, 0] = Math.Cos(leftAngle);
            _transformationMatrix[0, 1] = -Math.Sin(leftAngle);
            _transformationMatrix[1, 0] = Math.Sin(leftAngle);
            _transformationMatrix[1, 1] = Math.Cos(leftAngle);
            _transformationMatrix[2, 2] = 1;
            _transformationMatrix[3, 3] = Math.Cos(rightAngle);
            _transformationMatrix[3, 4] = -Math.Sin(rightAngle);
            _transformationMatrix[4, 3] = Math.Sin(rightAngle);
            _transformationMatrix[4, 4] = Math.Cos(rightAngle);
            _transformationMatrix[5, 5] = 1;
        }
示例#3
0
        private void SetMatrix()
        {
            Matrix = MatrixAdapter.Create(Size, Size);

            int i = 0;
            int j = 0;

            foreach (var position in MatrixOfPositions)
            {
                Matrix[j, i] = position.Value;
                i++;
                if (i % Size == 0)
                {
                    j++;
                    i = 0;
                }
            }
        }
        public void SpanCalculate_Force_Success()
        {
            Mock <IStiffnessMatrix> stiffnessMatrix = new Mock <IStiffnessMatrix>();

            stiffnessMatrix.Setup(sm => sm.Matrix)
            .Returns(MatrixAdapter.Create(rows: 2, columns: 2, values: new double[4] {
                1, 2, 3, 4
            }));

            Mock <ISpan> span = new Mock <ISpan>();

            var spanCalculationEngine = new SpanCalculationEngine(span.Object, stiffnessMatrix.Object);
            var loadVector            = VectorAdapter.Create(values: new double[2] {
                2, 1
            });
            var displacements = VectorAdapter.Create(values: new double[2] {
                1, 3
            });

            spanCalculationEngine.CalculateForce(loadVector, displacements);

            Assert.That(spanCalculationEngine.Forces[0], Is.EqualTo(12));
            Assert.That(spanCalculationEngine.Forces[1], Is.EqualTo(15));
        }