Re: determining boundary of a region in n-dimensional euclidean space
- To: mathgroup at smc.vnet.net
- Subject: [mg117315] Re: determining boundary of a region in n-dimensional euclidean space
- From: Fred Klingener <gigabitbucket at BrockEng.com>
- Date: Tue, 15 Mar 2011 06:02:51 -0500 (EST)
- References: <ilabtt$1su$1@smc.vnet.net>
Nabeel,
I might be misunderstanding the details of your task, but I've usually
been able to cast my (3D) region specifications in a way that'll fit
into one of Mathematica's 3D surface functions. I try first for
RegionPlot3D, and I'll illustrate with an example from the doc center.
rp3D = RegionPlot3D[x^2 + y^3 - z^2 > 0, {x, -2, 2}, {y, -2, 2}, {z,
-2, 2},
Mesh -> None]
rp3D is a Graphics3D. The first argument of that is a GraphicsComplex,
and the first argument of that is a list of all the surface nodes.
You can extract all the region's surface nodes by brute force or by
picking off the first argument of the GraphicsComplex.
Graphics3D[
Point[
Cases[
rp3D
, GraphicsComplex[pt__, ___] :> pt
, Infinity]
]
]
If you want to strip off the bounding planes, you can do that in one
ugly Cases or in a couple of DeleteCases.
If, for some reason, you want only the mesh lines, you can form
rp3DMesh =
RegionPlot3D[x^2 + y^3 - z^2 > 0, {x, -2, 2}, {y, -2, 2}, {z, -2,
2},
PlotStyle -> None]
and separate out their structure by first applying Normal[] to
rp3DMesh to resolve the GraphicsComplex to graphics primitives:
Graphics3D[
Cases[
rp3DMesh // Normal
, _Line
, Infinity]
]
It' s sort of a stunt, but you can work out ways to do 3D picking by
extracting the surface Polygons and applying Mouseovers or Tooltips to
each. Go back to the meshless example.
rp3D = RegionPlot3D[x^2 + y^3 - z^2 > 0, {x, -2, 2}, {y, -2, 2}, {z,
-2, 2},
Mesh -> None]
It helps me to see what's going on if I strip out the vertex shading
and don't show the edges of the polygons:
Graphics3D[{
EdgeForm[None]
, faces = Cases[rp3D // Normal
, Polygon[p__, ___] :> Polygon[p]
, Infinity]
}]
Here's a first cut at applying a Tooltip to each Polygon. The
following shows the mean coordinates of a polygon's nodes at the mouse
cursor. Bigger tricks could be done with Mouseover.
Graphics3D[{
EdgeForm[None]
, Tooltip[#, Mean[#[[1]]]] & /@ faces
}
]
AFAIK, there's a lot to be gained if you can cast your region's
specification or get your dataset to fit one of Mathematica's
functions.
Hth,
Fred Klingener
On Mar 10, 7:16 am, Nabeel Butt <nabeel.b... at gmail.com> wrote:
> Dear Mathematica lovers ,
> A simple but interesting question which w=
ould help me in my
> research.I have written mathematica programs which help me define a regio=
n
> in terms of numerical points in that space.Visualising the boundary if th=
e
> region is not difficult since it is just a simple plotting task.I am howe=
ver
> interested in determining a smooth functional equation for the boundary o=
f
> the region or even the set of points on boundary.Does there exist
> Mathematica programs or built-in functions that could effectively deal wi=
th
> this kind of problem.
> Thanks in advance !
> I have uploaded the file on web and the link is :http://w=
ww.megaupload.com/?d=EYOAPU9Q
> Nabeel
>
> --
> "We have not succeeded in answering all our problems.The answers we have
> found only serve to raise a whole set of new questions.In some ways we fe=
el
> that we are as confused as ever,but we believe we are confused on a highe=
r
> level and about more important things."
> "Maybe one day we get to see all the beauty present in this world"
>
> Nabeel Butt
> UWO,London
> Ontario, Canada