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; }
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)); }