<- previous index next ->
This lecture shows how to create a .dat file for a solid cube
with three square holes and digitize to get a .dat file
A crude 3D view is:
A wire frame view is:
2B
box_end.txt explanation of vertex numbering
box_end.txt describes a cube pierced with three square holes.
the cube has outer vertices x, y, z at 0.0 and 1.0
the holes have inner vertices x, y, z at 0.333 and 0.666
box_end.dat data file defining vertices and surfaces
all sections of surface are 4 point polygons
there are 40 vertices and 48 polygons
box_endw.png graphic of wire frame showing all edges
box_ends.png graphic of cube with square holes
volume_dat_box_end.out computation of volume and area
volume of material = 0.889558
total surface area = 8.0
vertex numbering looking at 3D view
outer vertices vertex 11 at x=1.0, y=1.0, z=1.0
12 11
*---------------*
/| /|
Y / | / |
^ / | / |
| / | Z / |
|/ | / / |
4*-- ------------*3 |
| |/ | |
| 9*---------|-----*10
| / | /
| / | /
| / | /
| / | /
|/ |/
*---------------* --> X
1 2
vertex 1 at x=0.0, y=0.0, z=0.0
no material outside these boundaries
looking from outside the cube
front face vertices z=0 back face vertices z=1
4 3 11 12
*-- ------------* *-- ------------*
| 8 7 | | 15 16 |
| *-----* | | *-----* |
| | | | | | | |
| | | | | | | |
| *-----* | | *-----* |
| 5 6 | | 14 13 |
| | | |
*---------------* *---------------*
1 2 10 9
left face vertices x=0 right face vertices x=1
12 4 3 11
*-- ------------* *-- ------------*
| 19 18 | | 22 23 |
| *-----* | | *-----* |
| | | | | | | |
| | | | | | | |
| *-----* | | *-----* |
| 20 17 | | 21 24 |
| | | |
*---------------* *---------------*
9 1 2 10
bottom face vertices y=0 top face vertices y=1
1 2 12 11
*-- ------------* *-- ------------*
| 25 26 | | 32 31 |
| *-----* | | *-----* |
| | | | | | | |
| | | | | | | |
| *-----* | | *-----* |
| 28 27 | | 29 30 |
| | | |
*---------------* --> X *---------------*
9 10 4 3
looking at 3D view
inner vertices vertex 39 at x=.666, y=.666, z=.666
center 40*-----------*39
/| /|
/ | / |
/ | / |
36*-----------*35 |
| | | |
| 37*-------|---*38
| / | /
| / | /
|/ |/
33*-----------*34
vertex 33 at x=.333, y=.333, z=.333
no material inside these boundaries
none of these are surfaces
inner vertices front z=0 inner vertices back z=1
36*-----------*35 16*-----------*15
/| /| /| /|
/ | / | / | / |
/ | / | / | / |
8*-----------*7 | 40*-----------*39 |
| | | | | | | |
| 33*-------|---*34 | 13*-------|---*14
| / | / | / | /
| / | / | / | /
|/ |/ |/ |/
5*-----------*6 37*-----------*38
vertex 5 at x=.333, y=.333, z=0.0 vertex 13 at x=.333, y=.333, z=1.0
vertex 7 at x=.666, y=.666, z=0.0 vertex 15 at x=.666, y=.666, z=1.0
no material inside these boundaries
no surface 5, 6, 7, 8 and 33,34,35,36
no surface 37,38,39,40 and 13,14,15,16
inner vertices left x=0 inner vertices right x=1
19*-----------*40 39*-----------*23
/| /| /| /|
/ | / | / | / |
/ | / | / | / |
18*-----------*36 | 35*-----------*22 |
| | | | | | | |
| 20*-------|---*37 | 38*-------|---*24
| / | / | / | /
| / | / | / | /
|/ |/ |/ |/
17*-----------*33 34*-----------*21
vertex 17 at x=0.0, y=.333, z=.333 vertex 21 at x=1.0, y=.333, z=.333
vertex 19 at x=0.0, y=.666, z=.666 vertex 23 at x=1.0, y=.666, z=.666
no material inside these boundaries
no surface 17,18,19,20 and 33,36,40,37
no surface 21,22,23,24 and 34,35,39,38
inner vertices bottom y=0 inner vertices top y=1
37*-----------*38 32*-----------*31
/| /| /| /|
/ | / | / | / |
/ | / | / | / |
33*-----------*34 | 29*-----------*30 |
| | | | | | | |
| 28*-------|---*27 | 40*-------|---*39
| / | / | / | /
| / | / | / | /
|/ |/ |/ |/
25*-----------*26 36*-----------*35
vertex 25 at x=.333, y=0.0, z=.333 vertex 29 at x=.333, y=1.0, z=.333
vertex 27 at x=.666, y=0.0, z=.666 vertex 31 at x=.666, y=1.0, z=.666
no material inside these boundaries
no surface 25,26,27,28 and 33,34,38,37
no surface 29,30,31,32 and 33,34,38,37
box_end.dat the file defining the object
40 48
0.0 0.0 0.0 # 1 z=0
1.0 0.0 0.0 # 2
1.0 1.0 0.0 # 3
0.0 1.0 0.0 # 4
.333 .333 0.0 # 5
.666 .333 0.0 # 6
.666 .666 0.0 # 7
.333 .666 0.0 # 8
0.0 0.0 1.0 # 9 z=1
1.0 0.0 1.0 # 10
1.0 1.0 1.0 # 11
0.0 1.0 1.0 # 12
.333 .333 1.0 # 13
.666 .333 1.0 # 14
.666 .666 1.0 # 15
.333 .666 1.0 # 16
0.0 .333 .333 # 17 x=0
0.0 .666 .333 # 18
0.0 .666 .666 # 19
0.0 .333 .666 # 20
1.0 .333 .333 # 21 x=1
1.0 .666 .333 # 22
1.0 .666 .666 # 23
1.0 .333 .666 # 24
.333 0.0 .333 # 25 y=0
.666 0.0 .333 # 26
.666 0.0 .666 # 27
.333 0.0 .666 # 28
.333 1.0 .333 # 29 y=1
.666 1.0 .333 # 30
.666 1.0 .666 # 31
.333 1.0 .666 # 32
.333 .333 .333 # 33 inside empty z=.333
.666 .333 .333 # 34
.666 .666 .333 # 35
.333 .666 .333 # 36
.333 .333 .666 # 37 inside empty z=.666
.666 .333 .666 # 38
.666 .666 .666 # 39
.333 .666 .666 # 40
4 1 5 6 2
4 2 6 7 3
4 3 7 8 4
4 4 8 5 1
4 9 13 14 10
4 10 14 15 11
4 11 15 16 12
4 12 16 13 9
4 1 17 18 4
4 4 18 19 12
4 12 19 20 9
4 9 20 17 1
4 2 21 22 3
4 3 22 23 11
4 11 23 24 10
4 10 24 21 2
4 1 25 26 2
4 2 26 27 10
4 10 27 28 9
4 9 28 25 1
4 4 29 30 3
4 3 30 31 11
4 11 31 32 12
4 12 32 29 4
4 5 33 34 6 # small z in 33 to 40
4 6 34 35 7
4 7 35 36 8
4 8 36 33 5
4 37 13 14 38 # big z in 33 to 40
4 38 14 15 39
4 39 15 16 40
4 40 16 13 37
4 17 33 36 18 # small x in 33 to 40
4 18 36 40 19
4 19 40 37 20
4 20 37 33 17
4 21 34 35 22 # big x in 33 to 40
4 22 35 39 23
4 23 39 38 24
4 24 38 34 21
4 25 33 34 26 # small y in 33 to 40
4 26 34 38 27
4 27 38 37 28
4 28 37 33 25
4 29 36 35 30 # big y in 33 to 40
4 30 35 39 31
4 31 39 40 32
4 32 40 36 29
volume_dat2_box_end.out computed surface and volume
Output from: volume_dat2 box_end.dat
volume_dat2.c reading box_end.dat
status=0, zmax=1, points=40, polys=48
xmin=0.000000, xmax=1.000000, ymin=0.000000, ymax=1.000000
zmin=0.000000, zmax=1.000000
enclosing area= 6, enclosing volume= 1
final total area = 7.99999, total volume = 0.889558
digitize to make a .dat file
Here is a small python program using tk graphics toll
kit to demonstrate digitizing ( mouse clicking around
some shape).
This example program uses a simple square.
The source code square.py3 when executed,
records mouse click location, normalizes size
of x,y to 0.0 ... 1.0 and write square_py3.dat.
This source code and be used to get a graphics
line around any 2D shape. OK to modify code.
square.py3 source code
square_py3.out output with extra information
Screen shot after clicking mouse button 3, program connected digitized points.
Program light_dat showing output square_py3.dat graphics.
square_py3.dat standard .dat file
<- previous index next ->
Many web sites on Java GUI, AWT, Swing, etc.
Many web sites on Python wx, tk, qt, etc.