|
Hallo Leonardo,hier ist ein drawIt[] ohne Performanceprobleme; das wird dadurch erreicht, dass die Durchsichtigkeits- und Glanzgimmicks und auch die Polygone aus der Projektion entfernt werden:
(* drawIt *)
drawIt[lat_Integer, mI_List?VectorQ, mode_Integer] :=
Module[{latD,
pom = N[IdentityMatrix[3] -
Outer[Times, Normalize[mI], Normalize[mI]]]},
If[ mI[[1]] == 0 && mI[[2]] == 0 && mI[[3]] == 0,
CreateDialog["Miller Indices all zero! Bye."];
Return[$Failed]
];
Switch[lat,
0, latD = LatticeData["SimpleCubic", "Image"][[1, All]],
1, latD = LatticeData["FaceCenteredCubic", "Image"][[1, All]],
2, latD = LatticeData["BodyCenteredCubic", "Image"][[1, All]],
_, CreateDialog[
"Lattice " <> ToString[lat] <> " not implemented! Bye."]
];
Switch[mode,
0, Show[
Graphics3D[{latD, {Opacity[0.66], millerPlane[mI]}},
Axes -> True, AxesLabel -> {"X", "Y", "Z"}]],
1,
Show[Graphics3D[
GeometricTransformation[
Fold[DeleteCases[#1, #2, Infinity] &,
latD, {_Specularity, _Opacity, _Polygon, _GrayLevel}], pom],
Axes -> True, AxesLabel -> {"X", "Y", "Z"}]],
_, Text["Mode " <> ToString[mode] <> " not implemented!"]
]
]
Offensichtlich hat Mma (zu Recht) Probleme mit der Durchsicht durch ein
Polygon auf ein anderes, wenn beide nicht zueinander bis auf allenfalls
eine gemeinsame Kante disjunkt sind.
Schönen Sonntag Udo. Attachment:
agudoProjection.nb |