The three-dimensional stress state of a point in the solid after rotation is as follows:
EulerMatrix[{α,β,γ}]\[Transpose].{{10, 0,
0}, {0, 20, 0}, {0, 0,
25}}.EulerMatrix[{α,β,γ}]
The three-dimensional Mohr circle represented by this state is as follows:
ContourPlot3D[
Evaluate[((x - #[[1]])^2 + y^2 +
z^2 == #[[2]]^2) & /@ (SortBy[({Mean[#], Abs[#[[2]] - #[[1]]]/
2} & /@ Subsets[Sort[{10, 20, 25}], {2}]), Last])], {x, 0,
30}, {y, -10, 10}, {z, -10, 10}, BoxRatios -> Automatic,
ContourStyle ->
Directive[Orange, Opacity[0.4], Specularity[White, 30]],
Mesh -> None, PlotPoints -> 50, ViewVertical -> {0, 0, 1},
ViewPoint -> {Pi, Pi/2, 2}, AxesOrigin -> {0, 0, 0},
AxesLabel -> {"x", "y", "z"}]
Now we know that the stress in one direction is {12,2,2}
((x - #[[1]])^2 + y^2 + z^2 <= #[[
2]]^2 & /@ ({Mean[#], Abs[#[[2]] - #[[1]]]/2} & /@
Subsets[Sort[{10, 20, 25}], {2}])) /. {x -> 12, y -> 2,
z -> 2}(*The x-axis represents the principal stress,the Y-axis and
the z-axis represents the shear stress*)
How to determine the possible direction angle ({α,β,γ}) of the stress.
The answer of MikeY
is very good. I want to modify this code to get faster speed:
em[α_, β_, γ_] := EulerMatrix[{α, β, γ}]\[Transpose].
{{10, 0, 0}, {0, 20, 0}, {0, 0, 25}}.
EulerMatrix[{α, β, γ}]
res = NMinimize[Norm[{12, 2, 2} - Transpose[em[a, b, c]][[1]]], {a, b, c}]
(* {0.876894, {a -> -1.19281, b -> -0.785398, c -> 1.5708}} *)