Re: Question of function for hexahedron
- To: mathgroup at smc.vnet.net
- Subject: [mg23580] Re: [mg23562] Question of function for hexahedron
- From: BobHanlon at aol.com
- Date: Sun, 21 May 2000 18:12:50 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
In my initial reply I stated:
>
>In a message dated 5/20/2000 3:35:53 AM, khs at procd.sogang.ac.kr writes:
>
>>I want to find out the function that will generate hexahedron,however
>I
>>heard there are some founctions related to 'hexahedron' like 'Cubid' or
>>'Ployhedron'. But I want to generate hexahedron for given eight numbers.
>>
>>for example
>>
>> (0.0057 0.0052 0.0052)
>> (-0.0057 0.0063 0.0051)
>> ( 0.0057 -0.0052 0.0062)
>> ( 0.0057 -0.0063 0.0063)
>> ( 0.0057 -0.0063 -0.0051)
>> (-0.0057 -0.0052 -0.0052)
>> (-0.0057 0.0063 -0.0063)
>> (0.0057 0.0052 -0.0062)
>>
>
> vert = {{0.0057, 0.0052, 0.0052}, {-0.0057, 0.0063, 0.0051},
>{
> 0.0057, -0.0052, 0.0062}, { 0.0057, -0.0063, 0.0063},
>{
> 0.0057, -0.0063, -0.0051}, {-0.0057, -0.0052, -0.0052},
>\
>{-0.0057, 0.0063, -0.0063}, {0.0057, 0.0052, -0.0062}};
>
>Checking the location of the vertices
>
>Show[Graphics3D[{RGBColor[1, 0, 0], Line[vert]}]];
>
>There appears to be a mistake in defining the vertices. The third point
>should have a negative x value.
>
> vert = {{0.0057, 0.0052, 0.0052}, {-0.0057, 0.0063,
> 0.0051}, { -0.0057, -0.0052, 0.0062}, { 0.0057, -0.0063,
>
> 0.0063}, {
> 0.0057, -0.0063, -0.0051}, {-0.0057, -0.0052, -0.0052},
>\
>{-0.0057, 0.0063, -0.0063}, {0.0057, 0.0052, -0.0062}};
>
>Rechecking
>
>Show[Graphics3D[
> Join[{RGBColor[1, 0, 0], Line[vert], RGBColor[0, 0, 1]},
> Table[Text[ToString[k], vert[[k]]], {k, Length[vert]}]]]];
>
>Each of the six faces will be a polygon formed by four vertices
>
>faces = {{1, 2, 3, 4}, {5, 6, 7, 8}, {3, 4, 5, 6}, {1, 2, 7, 8}, {2, 3,
>6,
> 7}, {1, 4, 5, 8}};
>
>Drawing the hexahedron
>
>Show[Graphics3D[Polygon[#] & /@ (vert[[#]] & /@ faces)]];
>
Needs["Graphics`Polyhedra`"]
Needs["DiscreteMath`Permutations`"]
This function allows the vertices of the Hexahedron to be given in any
sequence
drawHexahedron[vertices_List, opts___] :=
Module[{origin = Chop[(Plus @@ #) & /@ Transpose[vertices]], seq1, seq2,
remap},
seq1 = (FromDigits[#,
2] & /@ ((1 + Sign[#])/2 & /@ ((# - origin) & /@ vertices)));
seq2 = FromDigits[#, 2] & /@ ((1 + Sign[#])/2 & /@ Vertices[Hexahedron]);
remap = Inner[Rule, seq2, Range[8], List];
orderedVertices =
Transpose[
Rest[Transpose[
Sort[Transpose[Join[{seq1 /. remap}, Transpose[vertices]]]]]]];
Show[Graphics3D[
Polygon[#] & /@ (orderedVertices[[#]] & /@ Faces[Hexahedron])], opts]
]
vert = {{0.0057, 0.0052, 0.0052}, {-0.0057, 0.0063,
0.0051}, { -0.0057, -0.0052, 0.0062}, { 0.0057, -0.0063,
0.0063}, {
0.0057, -0.0063, -0.0051}, {-0.0057, -0.0052, -0.0052}, \
{-0.0057, 0.0063, -0.0063}, {0.0057, 0.0052, -0.0062}};
Demonstrating that the vertices can be entered in any order
drawHexahedron[vert[[#]] & /@ RandomPermutation[8],
ViewPoint -> {1.300, -2.400, 2.000}];
Bob
BobHanlon at aol.com