Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Matrix 90 Grad um Z-Achse drehen
14. Jan 2016, 16:10
Habs jetzt. Man kann hier einfach die Koordinaten X und Y vertauschen (X = -Y, Y = X). Die Matrix muß eh später in ein globales Bezugssystem transformiert werden, damit kann man es erledigen.
Delphi-Quellcode:
function TZzBeamTools.SmGc(const E, G, Iy, It, x1, y1, x2, y2: double): TZzFloatMat66; // Unterzüge: z1 = z2 = 0;
var
I, J: integer;
ASmLc, ASmGc, T: TZzFloatMat1212; // SmLc = StiffnessMatrixLocalCoordinates, SmGc = .. Global Coo.
begin
for I := 1 to 6 do
for J := 1 to 6 do
Result[I, J] := 0;
if (Iy > 1E-8) and (It > 1E-8) and (Sqrt(Sqr(x2 - x1) + Sqr(y2 - y1)) > 1E-8) then
begin
ASmLc := BeamSmLc(E, G, Iy, It, x1, y1, x2, y2); // 12x12 XYZ;
T := TransformationMatrix(-y1, x1, -y2, x2); // *** T bezügl. YXZ ***
ASmGc := SmLcToSmGc(ASmLc, T); // SmLc * T,trans * T; 12x12 XYZ to 12x12 YXZ
Result := BeamSmGcToPlateSmGc(ASmGc); // 12x12 YXZ to 6x6 YXZ;
end;
end;
|
|
Zitat
|