Inset a 3D Graphic
- To: mathgroup at smc.vnet.net
- Subject: [mg82171] Inset a 3D Graphic
- From: "David Park" <djmpark at comcast.net>
- Date: Sat, 13 Oct 2007 04:05:18 -0400 (EDT)
I find it difficult to Inset a Graphic3D image into Graphics2D and obtain
precise size and spacings. In general I want to Inset several graphics into
precise spaces with precise spacings between the various Insets. However, as
an example I will use a single Inset that I want centered in a Graphics2D
image.
Here is the Graphics3D to be Inset.
plot1 = Graphics3D[Sphere[],
ImageSize -> {300, 300},
AspectRatio -> Automatic,
Background -> LightBrown]
This overall image appears to me to be perfectly square. Now here is an
Inset construction that works. The image is 10 x 10 centered in a 12 x 12
plot region. Normally I wouldn't have a Frame, but I include one to make it
easy to check the alignment.
Graphics[
{Inset[plot1, {6, 6}, {Center, Center}, {10, 10}]},
PlotRange -> {{0, 12}, {0, 12}},
Background -> Orange,
Frame -> True,
ImageSize -> 400]
However, there should be various ways of doing this, and my first attempts
involved aligning the lower left corner of the Graphics3D image with the
position {1,1} in the 2D graphics. First I tried using ImageScaled to
specify the position in the Graphics3D image.
Graphics[
{Inset[plot1, {1, 1}, ImageScaled[{0, 0}], {10, 10}]},
PlotRange -> {{0, 12}, {0, 12}},
Background -> Orange,
Frame -> True,
ImageSize -> 400]
That does not work at all. The vertical alignment is correct, but the
horizontal alignment is way off. It seems like a bug to me, but maybe I
don't understand ImageScaled. So I also tried:
Graphics[
{Inset[plot1, {1, 1}, {Left, Bottom}, {10, 10}]},
PlotRange -> {{0, 12}, {0, 12}},
Background -> Orange,
Frame -> True,
ImageSize -> 400]
with the same undesired result. If I try to align on the upper right hand
corner the horizontal alignment is again off.
Graphics[
{Inset[plot1, {11, 11}, ImageScaled[{1, 1}], {10, 10}]},
PlotRange -> {{0, 12}, {0, 12}},
Background -> Orange,
Frame -> True,
ImageSize -> 400]
Using the center point again with ImageScaled the alignment does work.
Graphics[
{Inset[plot1, {6, 6}, ImageScaled[{0.5, 0.5}], {10, 10}]},
PlotRange -> {{0, 12}, {0, 12}},
Background -> Orange,
Frame -> True,
ImageSize -> 400]
It seems that the only reliable point for alignment of a 3D graphic is the
center point of the image. One can waste a lot of time trying something
else.
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/