Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Matrix 90 Grad um Z-Achse drehen

  Alt 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;
  Mit Zitat antworten Zitat