A Method for Analysis of Rock Blocks with Complex Arbitrary

by

Jair Santos

A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF

MASTER OF APPLIED SCIENCE

in

THE COLLEGE OF GRADUATE STUDIES

(Civil Engineering)

THE UNIVERSITY OF BRITISH COLUMBIA

(Okanagan)

November 2014

© Jair Santos, 2014 Abstract The volume, centre of mass, and inertia properties of a block of rock are important physical characteristics when calculating its stability. As a result, civil and geotechnical engineers often need to determine these properties, which are difficult to obtain due to the complex of typical blocks. Currently, the volume of rock blocks with arbitrary geometries are calculated making use of approximations that include, but are not limited to, filling the total volume with tetrahedral blocks and adding up the units; slicing the block in smaller geometrically regular parts; creating profiles of the block, and other analogous methods. Very often, the shape of the blocks are represented by arbitrary polyhedra with any number of faces and vertices and a variety of methods can be used to potentially obtain properties of the block from a . This thesis describes a new method to calculate the volume and centre of mass of a block of rock represented by a polyhedron, using vector analysis and linear programming, analytic geometry, integral calculus, structural geology and rock mechanics theory. Additionally, methods of computational geometry and algorithms are used to demonstrate the processes. The method calculates the volume as a single body improving accuracy that can be affected only by minor irregularities of the rock. It is more effective with the use of computer automation; therefore, technical aspects of the programming procedures will be outlined. The creation of automatic procedures to obtain the results is of great significance to the geotechnical engineering industry, since it will improve the accuracy of results and speed the development of projects. Consequently, this thesis will provide a base for future software development. The method is restricted to convex polyhedra, with at least one face exposed to the surface.

ii Table of Contents

Abstract ...... ii

Table of Contents ...... iii

List of Tables ...... v

List of Figures ...... vi

List of Symbols ...... viii

Glossary ...... x

Acknowledgements ...... 1

Dedication ...... 2

Chapter 1. Introduction ...... 3

Chapter 2. Problem Statement ...... 5

Chapter 3. Research Goals and Objectives ...... 6

Chapter 4. Methodology ...... 7 4.1 Literature Review ...... 7 4.2 Acquiring Field Data ...... 7 4.3 Calculation Procedures ...... 9

Chapter 5. Regular and Arbitrary Polyhedra ...... 12

Chapter 6. Mass Properties of an Arbitrary Polyhedron – Mirtich Method ...... 14

Chapter 7. Block of Rock Topological Space ...... 17 7.1 Calculation of the Equations of the Planes that Represent the Faces of the Block ...... 17 7.2 Feasibility of Vertices for a Block of Rock ...... 19 7.3 Identification of the Feasible Points on the Block ...... 20 7.3.1 Linear Programming Simplex Method (LPSM) ...... 21 7.3.2 Double Description Method ...... 26 7.3.3 Reverse Search Vertex Enumeration Algorithm ...... 33 7.4 Redundancy ...... 36 7.5 Sorting the Vertices of a Finite Convex Planar Set in the Counter-Clockwise Direction ... 36 7.6 Running the Graham Algorithm ...... 37

iii 7.7 Executing the Mirtich method ...... 39

Chapter 8. Conclusions and Recommendations ...... 42 8.1 Conclusions ...... 42 8.2 Recommendations ...... 43

References ...... 45

Appendices ...... 48 Appendix A – Method Mirtich Sample Tests ...... 48

Appendix B - Pivot Operations for Faces S2, S3, S4, X1, X2, and X3 ...... 56 Appendix C - Original and Rotated Coordinates of all Vertices of Sample Block ...... 62 Appendix D - Copyright Permissions ...... 63

iv List of Tables Table 1. Calculated equations of planes from block in Figure 9 ...... 29 Table 2. Vertices generated from the inequalities for cardinality 3 - cdd ...... 32 Table 3. Vertices and their faces - cdd ...... 32 Table 4.Vertices generated from the inequalities for cardinality 3 - lrs ...... 35 Table 5. Vertices and their faces - lrs ...... 35 Table 6. Calculated equations - faces of block of Figure 9 ...... 38 Table 7. Original and rotated coordinates of all vertices – block of Figure 8 ...... 62

v List of Figures Figure 1.Typical blocky rock mass exposed in a rock face ...... 8 Figure 2 . Snapshot of the 3DM Analyst software...... 9 Figure 3. ULM diagram of the method of calculation of volume and centre of mass ...... 11 Figure 4. Convex block ...... 13 Figure 5. Three-step process to calculate mass properties of a block (©1996, Brian Mirtich by permission)...... 15 Figure 6. Face of a polyhedron projected on α - β plane (©1996, Brian Mirtich by permission)...... 16 Figure 8. Convex polyhedron block (©2006, James Jones, by permission) ...... 20 Figure 9. Block with known coordinates (©2006, James Jones, by permission) ...... 23

Figure 10. Pivot operations for Face S1 ...... 25 Figure 11. Double description method iteration (©2009, Marco Terzer, by permission)...... 27 Figure 12. Input to cdd in polyhedra format ...... 29 Figure 13. cdd output when running with input from Figure 12 ...... 30 Figure 14. Incidence file generated by the cdd program ...... 31 Figure 15. Input to lrs program in polyhedra format obtained from block in Figure 7 ...... 33 Figure 16. Output of the lrs program ...... 34 Figure 17. Graham scan in a set of points (©1985, Preparata et al, by permission) ...... 37 Figure 18. Output of the Graham algorithm...... 39 Figure 19. Block with indexed vertices (©2006, James Jones, by permission) ...... 40 Figure 20. Input to Mirtich method program ...... 41 Figure 21. Output of Mirtich method ...... 41 Figure 22. Cube ...... 49 Figure 23. Cube results ...... 49 Figure 24. ...... 50 Figure 25. Tetrahedron results ...... 51 Figure 26. ...... 53 Figure 27. Icosahedron results ...... 53 Figure 28. Concave block ...... 55 Figure 29. Concave block results ...... 55

vi Figure 30. Pivot operations for Face S2...... 56 Figure 31. Pivot operations for Face S3...... 57 Figure 32. Pivot operations for Face S4...... 58 Figure 33. Pivot operations for Face X1 ...... 59 Figure 34. Pivot operations for Face X2 ...... 60

Figure 35. Pivot operations for Face X3...... 61

vii List of Symbols λ Scalar number cTx Transposed vector A Matrix b Column vector Rd Euclidean space in d dimensions P A subset of points

∫ 1 dV Integral of volume

ρ Density m Mass r Centre of Mass I’xx Moment of Inertia about the x-axis I'yy Moment of Inertia about the y-axis I’zz Moment of Inertia about the z-axis I’xy Product of inertia with respect to xy I’yz Product of inertia with respect to yz I’zx Product of inertia with respect to zx I'yx Product of inertia with respect to yx I’zy Product of inertia with respect to zy I’xz Product of inertia with respect to xz Tx Centre of max x coordinate Ty Centre of max y coordinate Tz Centre of max z coordinate F Vector Field S Closed Surface T Region of space C Smooth curve bounds the plane region R R Region in the Plane  Gradient Vector Field P(x,y) Continuous Function in x and y

viii Q(x,y) Continuous Function in x and y ∂ Partial derivative ϴ Dip direction Ф Dip n Unit vector

ix Glossary Bland’s rule – It is a pivot rule of the simplex method developed by Bland (1977) to decide which row and column of the tableau to pivot on. Discontinuity - Discontinuities are joints, fractures, faults and other geological structures that subdivide the rock.

Extreme ray - A nonzero element x of a polyhedral cone C  Rd is called an extreme ray if there are n-1 linearly independent constraints binding at x. Polyhedron cone – A polyhedron cone is the intersection of a finite number of half-spaces whose hyper-planes pass through the origin. LPSM – Linear Programming Simplex Method

x Acknowledgements I would like to express my gratitude to my supervisor, Dr. Dwayne D. Tannant, whose expertise, understanding, and patience, added considerably to my experience. I appreciate his broad-mindedness and knowledge supervising me in an unconventional field of study. I thank Professor James Jones from the Richland Community College - Illinois – USA for his invaluable help to my understanding of Linear Programming in three dimensions. I must also acknowledge Dr. John Lloyd, Research Engineer, CS, Electrical, and Computer Engineering of UBC, for his help in the search for the best programs to calculate convex hulls and to obtain the right information in computational geometry. I thank Professor David Avis of the School of Computer Science of McGill University for his help with the configuration and use of programs cdd and lrs. Very special thanks go to Dr. Wayne Broughton, Associate Professor of Mathematics at UBCO for providing me the first directions on how to solve the complex problems behind this thesis. In conclusion, I would like to thank my family for the support they provided.

1 Dedication To my mother, who dedicated her whole life to provide me with a good education.

2 Chapter 1. Introduction The study of the stability of blocks of rock is an important component in the design, construction, and maintenance of roads, dams, buildings, mines, or any project that involves rock as part of the development process. Indeed, engineers have been developing and testing theories to properly analyze the static equilibrium of rocks, which is determined by their physical characteristics and external factors. The volume, density, centre of mass, infilling of the discontinuities, and overall shape of the rock are all aspects that must be considered when determining the safety factor for the stability of potentially unstable blocks of rock. However, because of the natural processes involved in the formation of rocks, the aforementioned theories generally require assumptions to be made, which can affect the calculations and results. One of the critical aspects of these simplifications is related to the calculation of the volume and centre of mass of the blocks, which are usually represented by arbitrary polyhedra. Unlike regular polyhedra, an arbitrary polyhedron is composed of faces of any shape, with many different angles between the edges. These polyhedra can contain forms of great complexity and thus their volume and centre of mass cannot be calculated with a simple mathematical formula. The physical definition of a block of rock is linked to the concepts of intact rock and rock mass. Intact rock is defined as the material that exists between discontinuities in a rock mass (Wyllie and Mah, 2004). As a result, the presence of discontinuities with a variety of sizes, widths, and scales is a characteristic of the rock mass. In this context, a discontinuity is defined as any separation in the rock continuum having effectively zero tensile strength, regardless of the manner in which the separation was formed (Hudson et al., 2000). Therefore, a block of rock is bound by a system of joints, faults, layers or any combination of surfaces that can create a discontinuity. These discontinuities intersect at points or lines, shaping the structure and geometrical properties of the block. This thesis describes a method to calculate the volume and centre of mass of a block of rock represented by a convex polyhedron with any number of faces of any shape and with any number of vertices. The calculations use the theory developed by Mirtich (1996) in his thesis titled “Impulse-based Dynamic Simulation of Rigid Body Systems” and it is implemented in this thesis as a computer program built in the language C using Microsoft Visual Studio 2010. The program was tested comparing the results with traditional volume calculation of a variety of types of blocks that were designed using Autodesk Inventor 2014. The method uses integral

3 calculus, vector analysis, analytic geometry, structural geology and rock mechanics theory, linear programming and trigonometry. This thesis also outlines computational geometry algorithms and independent packages of software, which are used to automatize the method. The approach utilized differs from other methods because the block of rock is treated as a single body unlike usual procedures that add up small blocks to fill the total volume. The procedure in this method clearly improves accuracy that can only be affected by minor irregularities of the rock surface.

4 Chapter 2. Problem Statement The shape and format of blocks of rock depend on several categories of geologic processes that include the genesis of the rock and its mineral composition, the tectonic movements of the region where the rock is located, weathering intensity, grade of metamorphism and geo-structural processes. As a result, very often the blocks do not conform to bodies of regular shapes or symmetry, and occur in nature with arbitrary complex geometries. Consequently, it is not possible to use simple formulae to calculate the volume of the blocks, and several types of approximations are used to obtain the volume. Among these approximations are filling the total volume with small blocks of tetrahedron or pentahedron, creating profiles, splitting the block , or approximating the block with semi-regular blocks. In fact, each calculation of volume of this type of block of rock is a singular problem that must be independently resolved. These procedures are not only time consuming but add unreliability to the results, which can compromise the calculation of the factor of safety when analyzing the stability of blocks of rock. The volume is an essential calculation to obtain the weight of the block, which is critical for the distribution of forces in the system. Therefore, to improve the reliability of the factor of stability calculation, a new method to calculate the volume is necessary. This will increase the accuracy of the analysis and eliminate the need for approximations. Also, the new method must have characteristics to permit future automation with the development of a computer program that will make the calculations fast and accurate.

5 Chapter 3. Research Goals and Objectives The main objective of this research is to develop a new method to calculate the volume and centre of mass of blocks of rocks with arbitrary complex geometries. To fulfill this objective the following tasks are performed:

 Develop a logical sequence of procedures that can be followed for all blocks to obtain the results, independent of their shape or format.  Create the technical foundation for the development of a computer program to calculate the volume and centre of mass of blocks of rock.  Verify the reliability of results based on tests with any type of block.  Investigate already developed code that could be integrated in the final program with little or no modification.  Define the best alternative to acquire data from the field.

6 Chapter 4. Methodology

4.1 Literature Review Several researchers have dedicated studies to the volume calculation problem. Warburton (1981) recognized the complexity of the problem, saying, “the number of discontinuities and excavation surfaces is so great that it becomes necessary to consider [polyhedra] blocks” instead of using approximations with tetrahedral or pentahedral blocks. Additionally, he emphasized that “in spite of recent advances, the complexities of real block geometries can easily exceed the capabilities of existing solutions”. Shubert et al. (2005) based their study on 3D imaging with photogrammetry, and claimed to be able to make translational and rotational analyses. A recent paper by Elmouttie et al., (2009) described an algorithm capable of identifying intersections of planar and curved rock mass discontinuities and accounting for faces with holes. However, this algorithm “can fail if a discontinuity that forms an interior opening intersects the boundary of the outer polygon”. Huang et al. (2009) utilized block theory to determine key blocks associated with stereographic projections and spacing data from discontinuities in order to compute the volume of these blocks. Jafari et al. (2012) used square matrices to perform edge and face regularization in order to detect a block of rock and programmed the process in over 8100 lines of C# code. This amount of code relatively highlights the great complexity of the problem. It was implicitly recognized by the authors that their results are approximations because an exact calculation is likely impossible to achieve. Nonetheless, despite possible discrepancies, the procedures can still be effectively used within certain tolerances, but the errors in the volume calculation will add on to those from other assumptions that are usually present.

4.2 Acquiring Field Data Figure 1 shows a typical rock face with many intersecting discontinuities defining rock blocks. Each block is not an isolated body; rather it is usually part of a rock mass and can be delimited by set of planes regardless of minor concavities. The final shape of the block to be analyzed depends on the user decision when defining the planes and must be a convex solid.

7

Figure 1.Typical blocky rock mass exposed in a rock face

The initial indispensable information to completely define the block of rock are the orientations of all planes that represent the faces of the block. The most traditional hand measurement equipment to obtain these orientations is the compass, but methods using smartphones with inclinometer software and digital photogrammetry are becoming standard procedures. The advantage of photogrammetry is that it can produce precise three dimensional positions of points in the planes in a ground control coordinate system. The process uses a calibrated camera to take pictures of the block of rock from different stations in the ground. The set of pictures is loaded into a software that generates 3D views of the block of rock. In this view it is possible to draw planes that match the faces of the block. The user can read the orientations of planes as dip and dip direction, as well as 3D coordinates of points in the planes, directly from the screen. These parameters must undergo adequate validation to ensure they represent angles and numbers (0˚- 90˚ for dip; 0˚- 360˚ for dip direction; numbers for 3D coordinates). Figure 2 depicts a snapshot of the screen of the 3DM Analyst software used to obtain the block of rock information.

8

Figure 2 . Snapshot of the 3DM Analyst software

4.3 Calculation Procedures The final calculation of the volume and centre of mass of the block of rock is performed by a computer program developed based on the Method Mirtich described in Section 6. The input data to the program are the total number of vertices of the block, the number of faces, and for each face, its number of vertices and an index sorting the vertices of the face in a counter clockwise direction. The starting point to obtain this information uses digital photogrammetry as described in Section 4.2. Once the data is obtained, the equations of the planes that form the block can be calculated using trigonometric relations as explained in Section 7.1. The intersection of these planes in space determine the form of the block of rock. Since not all plane intersections are vertices of the block, it is necessary to figure what are the real vertices. A variation of the Linear Programming Simplex Method can be utilized for the procedure as explained in Section 7.3.1. In this alternative the Simplex Method does not have an objective function and do not follow the pivoting Bland’s rule. To obtain the feasible vertices in this case, the tableau iterations need to establish a loop around the vertices of each face obtaining the

9 coordinates in the process. In this procedure, the variable that corresponds to the plane must be non-basic at all times, so all iterations will stay in the same plane, moving between adjacent vertices. At the same time, the vertex feasibility is inspected through a fundamental theorem of Linear Programming that states that all variables must be non-negative to assure that the vertex is feasible. A VBA (Visual Basic for Applications) code was developed and used in an Excel spreadsheet to automatize the calculation process. This code can be extended to address any type of block and can be a starting point for the vertices feasibility determination. Two more methods are described to obtain the feasible vertices of the block; the Double Description Method described in Section 7.3.2, and the Reverse Search Algorithm described in Section 7.3.3. They both have open source computer programs developed for the Linux operating system. Therefore, they need to be converted for the Windows operating system and this process requires a detailed investigation of their code to verify the viability of the process. The results returned by any of the three methods are always the same, and the choice of method depends on further investigation. When the feasible vertices are obtained, they are distributed in no particular order and the Graham algorithm is used to sort them in a counter clockwise direction in the face. Once this information is available, it is possible to create the file described in Section 7.7 that will be passed to the Mirtich method for the final calculation of the volume and centre of mass. Several tests have been made to probe the Mirtich method. The volume and centre of mass of blocks using regular formulas were calculated and compared with the output of the Mirtich method. Some of these tests are included in Appendix B. The flow chart in Unified Modelling Language (UML) in Figure 3 outlines the calculation procedures.

10

Figure 3. ULM diagram of the method of calculation of volume and centre of mass

11 Chapter 5. Regular and Arbitrary Polyhedra Cromwell (1999) defines a polyhedral form as anything that is bound by flat surfaces and has well-defined corners. In geometry, a polyhedron is a three-dimensional solid that consists of a collection of polygons that are usually joined at their edges (Weisstein, 1999). The external appearance of the solids that comes from these definitions disregards the type of polyhedron, which can be regular, arbitrary, convex, or non-convex. Alexandrov (2005) defines a polyhedron as “a body [bound] by finitely many polygons as well as a surface composed of finitely many polygons”. He states that the condition that defines convexity is that “the entire figure [must lie] on one side of the plane of each constituent polygon”. Dantzig (1997) defines a set of points as convex “if all points on the straight line segment joining any two points in the set belong to the set”. It is relevant to differentiate between regular and arbitrary polyhedra, since the complexities of determining the mass properties of the two types differ. “A polyhedron is regular if its faces and vertex angles are all regular” (Coxeter, 1973). A fact that can be algebraically proven is that there are only nine types of regular polyhedra. Five of them are platonic solids, where the same numbers of faces, which are congruent and convex, meet at any vertex. The list of regular platonic polyhedra includes the tetrahedron, cube, , , and icosahedron. The determination of the volume and the centre of mass of a regular polyhedron are straightforward processes. Integral calculus has been used for these calculations since Sir Isaac Newton discovered it more than three centuries ago. The volume of a regular polyhedron is calculated with exact methods using cross-sections, slicing of parallel planes, solids of revolution, and triple integrals, which are described by several mathematicians, including Thomas Jr. et al. (2010). These methods rely on mathematical functions that bind the solid and are continuous on some defined finite interval. Furthermore, to make the results easier to obtain, the symmetry of the polyhedron can be considered. The mass properties of a regular polyhedron, including the mass itself, the location of the centre of mass, and the moments and products of inertia of the solid can be computed from integrals of volume. For the most part, a block of rock can be associated with an arbitrary polyhedron, meaning that there are no restrictions on the type of polyhedron, the convexity of the body, or the shape and number of faces and vertices. The method described in this thesis is applicable to convex blocks; however, blocks containing holes or cavities that cannot be considered convex

12 can be subdivided and the parts can be analyzed separately. Figure 4 depicts a convex polyhedron and its components.

Figure 4. Convex block

13 Chapter 6. Mass Properties of an Arbitrary Polyhedron – Mirtich Method The objective of the Mirtich (1996) method is to calculate the mass properties of a rigid body. These properties are the volume V, the centre of mass r, the moments of inertia I, and the products of inertia. Assuming that the body is a polyhedron with uniform density, the method converts the mass integrals into volume integrals. The density of rocks are in the range of 2.5- 3.02 g/cm3 but for the same type of rock, the variation usually is between 0.25-0.30 g/cm3. Usually the block of rock in analysis is composed of a single type of rock. Thus, for the purposes of this method the density of the rock can be considered uniform. Classical formulae to calculate moments and products of inertia are the first steps of the method.

∫ 1 푑푉 (1) 휌 푟 = 〈∫ 푥푑푉, ∫ 푦푑푉, ∫ 푧푑푉〉T (2) 푚 퐼′퓍푥 = 휌 ∫〈푦2 + 푧2〉 푑푉 (3) 퐼′푦푦 = 휌 ∫〈푧2 + 푥2〉 푑푉 (4) 퐼′푧푧 = 휌 ∫〈푥2 + 푦2〉 푑푉 (5) 퐼′퓍푦 = 퐼′푦푥 = 휌 ∫ 푥푦 푑푉 (6) 퐼′푦푧 = 퐼′푧푦 = 휌 ∫ 푦푧 푑푉 (7) 퐼′푧퓍 = 퐼′퓍푧 = 휌 ∫ 푧푥 푑푉 (8) Equations 1 and 2 are of particular importance for the method developed in this thesis. They represent respectively the volume and centre of mass of the block of rock. If the origin of the coordinate system is moved to the centre of mass, the equations of the volume and coordinates of centre of mass become:

푉 = 1 푑푉 (9) ∫푉 푇 = 푥 푑푉 (10) 푥 ∫푉 푇 = 푦 푑푉 (11) 푦 ∫푉 푇 = 푧 푑푉 (12) 푧 ∫푉 The computation of polyhedral mass properties developed by Mirtich includes the three- step process depicted in Figure 5. The volume integral is shown in Equation 9, and the x, y, and z coordinate integrals of the centre of mass are shown in Equations 10, 11 and 12, respectively.

14

Figure 5. Three-step process to calculate mass properties of a block (©1996, Brian Mirtich by permission).

The Mirtich method transforms the formulas to accept the coordinates of the vertices of the block, which will be obtained using the method described in this thesis. The first step of the Mirtich method uses the divergence theorem, which permits the conversion of a surface integral S over a closed surface into a triple integral over the enclosed region T, or vice-versa.

∬ 퐅 ∙ 퐧 푑S = ∭ 훁 ∙ 퐅푑푉 푆 푇 Divergence Theorem (Thomas Jr. et al. (2010)) The second step is a preparation to apply Green’s theorem, which is valid over a region on the plane, thus the faces are projected from three-dimensional space onto one of the Cartesian coordinates planes. The third step transforms the integrals from the planar region to a linear integral around the edges of every face of the polyhedron. The positive direction, as defined by Green’s theorem, is counter-clockwise. After all conversions of the equations have been made, the integral formulas are obtained in terms of the coordinates of the projected vertices. Figure 4 represents a face of the polyhedron projected on the α-β plane.

휕퐐 휕퐏 ∮ 퐏 푑푥 퐐 푑푦 = ∬( − ) 푑퐴 퐶 휕푥 휕푦 푅 Green’s Theorem (Thomas Jr. et al. (2010))

15

Figure 6. Face of a polyhedron projected on α - β plane (©1996, Brian Mirtich by permission).

In Figure 6, α and β are the vertex coordinates in the plane αβ, e is the vertex index, k is the number of vertices of the face, and ∆훼푒 and ∆훽푒 are the hypotenuses formed by the normal to the edge and the adjacent vertices. The purpose of the method is to calculate simple linear integrals, combine them, and then propagate the results back to obtain the results of the initial integrals. The use of this method is only practical when automated by computer software that speeds the process and adds reliability to the results. In this process, the projection integrals are the first to be calculated. The face integrals and the volume integrals are finally calculated using these results. Tests have been made for regular polyhedra, calculating the volume using formulas from geometry and comparing the results with the process of iteration around the faces. Additional tests have been performed with arbitrary polyhedra, and all the results matched when using both methods.

16 Chapter 7. Block of Rock Topological Space

7.1 Calculation of the Equations of the Planes that Represent the Faces of the Block Discontinuities in a rock mass consist of fractures, fissures, joints, or faults. In addition, bedding, schistosity, and foliations, which are a result of sedimentary and metamorphic processes, can be classified as discontinuities in a rock mass. Discontinuities create individualized blocks of rock. The planes formed by these geological discontinuities define geometric half-spaces. Their intersections generate a set of points. A subset of these points are the vertices of the blocks. Measurements of the orientation of lines and planes in an exposure of a rock mass are basic structural geological procedures. Planar data include the orientation of foliation, fractures and faults, bedding planes of sedimentary rocks, joints, tabular intrusive bodies such as sills and dikes, and foliation created by the arrangement of sheet silicates. A traditional instrument used to obtain these measurements in the field is the compass, but digital techniques that quicken the measurement processes are becoming more common (Birch 2006; Tannant et al. 2006). Section 4.2 provides details of the process to acquire data using digital photogrammetry. There are various ways to represent the orientation of a geologic plane in space, and the use of one type or another is only a matter of preference. One of the most common ways is the dip/dip direction pair of angles. The dip direction is perpendicular to the plane strike line, which is the bearing of a horizontal line on the plane. The dip is the angle of maximum inclination on the plane. These definitions are illustrated in Figure 7.

17

Figure 7. Representation of geological plane orientations in a block of rock (© USask 2014, by permission)

Once the dip (훷), dip direction (휃), and the coordinates x0, y0, z0 of one point (P0) on the geologic discontinuity plane are obtained, the equation of that plane (Equation 13) is calculated using trigonometric relations.

퐴푥 + 퐵푦 + 퐶푧 = 퐷 (13) The equation depends on the coordinate system defined. When axis x points east, y points north and z points up, the components A, B, and C of the normal vector n to the plane are (Goodman et al., 1985):

퐴 = sin 훷 ⋅ sin휃 (14) 퐵 = sin 훷 ⋅ cos 휃 (15) 퐶 = cos 훷 (16) The vector normal to the plane is 풏 = 퐴퐢 + 퐵퐣 + 퐶퐤 (17)

The plane is the set of all points P(x,y,z) and 푷푷⃗⃗⃗⃗⃗⃗⃗⃗ퟎ is orthogonal to n. Therefore, the dot product n⋅ 푷푷⃗⃗⃗⃗⃗⃗⃗⃗ퟎ is equal to zero, and the equation of the plane is calculated:

(퐴퐢 + 퐵퐣 + 퐶퐤) ⋅ [(푥 − 푥0)풊 + (푦 − 푦0)풋 + (푧 − 푧0)풌] = 0 (18)

(sin휙 ⋅ sin 휃) (푥 − 푥0) + (sin 훷 ⋅ cos 휃)(푦 − 푦0) + cos 훷 (푧 − 푧0) = 0 (19)

Thus, in order to determine the equations of the planes that represent the faces of a block of rock all that is required are the dip and dip direction of the discontinuities that delimit the block and the coordinates of one point on each plane. Once all the equations of the planes are

18 obtained, the coordinates of their intersections can be calculated. The number of intersections that the planes create with each other in 3D space can be obtained using Equation 20, where Int is the number of intersections, np is the number of planes and s is the size; which is equal to three because at least three planes are required to create a point intersection.

푛푝! 퐼푛푡 = (20) 푠!(푛푝−s)! Therefore, combining the plane equations in groups of three will define 3x3 matrices. If each group of matrices has a unique solution, this solution defines a vertex coordinate. A subset of the solutions defines the coordinates that form the block of rock. For example, given the equations of planes 1, 2, and 3, a matrix is formed as follows:

Plane1 퐴1푥 + 퐵1푦 + 퐶1푧 = 퐷1

Plane2 퐴2푥 + 퐵2푦 + 퐶2푧 = 퐷2

Plane 3 퐴3푥 + 퐵3푦 + 퐶3푧 = 퐷3

퐴1 퐵1 퐶1 푥 퐷1 [퐴2 퐵2 퐶2] [푦] = [퐷2] or [퐀][퐗] = [퐃] 퐴3 퐵3 퐶3 푧 퐷3

퐴1 퐵1 퐶1 If the determinant ∆ = [퐴2 퐵2 퐶2] ≠ 0, the system has a unique solution and the planes 퐴3 퐵3 퐶3 intersect at a point.

7.2 Feasibility of Vertices for a Block of Rock The points generated by the intersecting planes are not all part of the block of rock. For example, the block in Figure 8, which is composed of seven planes, generates a total of 퐼푛푡 = 7! = 35 intersections, as defined by Equation 20. However, only ten of these intersections 3!(7−3)! define the block in this case. These ten points are the feasible points, which are defined as the points at which the vertices of the actual block are located. The concept of a feasible point in a polyhedron is linked to the solutions of a matrix, where the terms of the inequalities that represent the planes of the polyhedron are the rows of the matrix. Using the Gauss Jordan elimination and setting the variables that are not part of the identity sub matrix equal to zero, the remaining variables can be determined, creating a basic solution for the system. If all the

19 variables are non-negative, this is a basic feasible solution that corresponds to the vertices of the polyhedron.

Figure 8. Convex polyhedron block (©2006, James Jones, by permission)

7.3 Identification of the Feasible Points on the Block The equations of the planes that define the block of rock can be interpreted as inequalities representing hyper-planes. These hyper-planes delimit half-spaces, and their assemblage in space give form to a polyhedron that represents the block of rock. A subset P of points in Rd is called a convex polyhedron if it is the set of solutions to a finite system of linear inequalities. If the set is bound, it is called a . Otherwise, it is a convex polyhedron (Fukuda, 2004). Consequently, the block of rock should be technically called a polytope, but the common linear algebra jargon uses the term polyhedron for the bound set. Furthermore, the term convex is frequently not used, and the expression polyhedron is accepted for the bound solution. The concept of convex hull conv(S) is intrinsically related to the word polyhedron, and it is identified as the smallest convex set in Rd containing S. The problem of determining all the polyhedron vertices is reduced to the enumeration of all basic feasible solutions for the inequalities (Dyer, 1975), while the computation of the convex hull is the determination of the conv(S) for a finite set of n points in Rd. The theory behind these calculations is generalized to

20 any dimension in space. Therefore, the related calculations for a block of rock in 3D execute faster and allow easier visual interpretation. Several authors dedicated studies for the determination of the vertices of a polyhedron defined by a system of linear inequalities. The majority of researchers consider problems in Rd, adding a level of complexity that is not necessary when determining characteristics of blocks of rock. Dyer et al. (1977) developed an algorithm based on the linear programming simplex method. His approach compares adjacency of vertices to prevent unnecessary pivoting. Fukuda (1996) used the Double Description Method invented by Motzin (1953) to obtain the solution of general finite systems of linear inequalities. Preparata et al. (1977) developed an algorithm to find the intersections of a set of half-spaces. He divided the half-spaces in two parts, one of which contains the origin. From this, the convex hulls of the two sets and the separating plane are obtained. The union of the two convex hulls permits the determination of a three-variable system that can then be solved. Avis (1999) used a linear programming based algorithm to enumerate all vertices. The procedure inverts Bland’s rule, by starting at the optimum vertex and working backwards to find the optimum path. Three of these methods can be used to determine the coordinates of the feasible vertices of the polyhedron that represents the block of rock. They are described in Sections 7.3.1, 7.3.2 and 7.3.3 that follow.

7.3.1 Linear Programming Simplex Method (LPSM) The Linear Programming Simplex method (Dantzig, 1997) was developed in 1947 when George B. Dantzig was part of a research group of the U.S. Air Force known as Project SCOOP (Scientific Computation of Optimum Programs) (Kaibel, 2006). The LPSM aim is to solve linear maximization or minimization problems of linear functions in any dimension. The LPSM is a time linear algorithm that uses the structure of convex polytopes, and can be geometrically described (Preparata, 1985). In fact, the problems can be represented by polyhedra or polytopes, and sometimes can be geometrically solved. The algorithm moves from one vertex to the next of the polyhedra defined by the half-spaces, which are, in turn, defined by the inequalities representing the constraints of the problem. Therefore, the algebraic and geometric parts of the problem are intrinsically connected. Large and practical problems can only be resolved with the algebraic approach, preferably with the use of computer programs. The matrix notation of a linear program as defined by Dantzig (1997) is:

21 Minimize 퐜퐓퐱 Subject to 퐀퐱 = 퐛, 퐀: 퐦 퐱 퐧 ; 퐱 ≥ ퟎ The standard form is:

퐜ퟏ 퐱ퟏ + 퐜ퟐ 퐱ퟐ + ⋯ + 퐜퐧 퐱퐧 = 퐳 (퐌퐢퐧)

퐚ퟏퟏ 퐱ퟏ + 퐚ퟏퟐ 퐱ퟐ + ⋯ + 퐚ퟏ퐧 퐱퐧 = 퐛ퟏ

퐚ퟐퟏ 퐱ퟏ + 퐚ퟐퟐ 퐱ퟐ + ⋯ + 퐚ퟐ퐧 퐱퐧 = 퐛ퟐ ......

퐚퐦ퟏ 퐱ퟏ + 퐚퐦ퟐ 퐱ퟐ + ⋯ + 퐚퐦퐧 퐱퐧 = 퐛퐦,

and x1 ≥ 0, x2 ≥ 0,..., xn ≥ 0. The purpose of the simplex method is to minimize or maximize the objective function z. In the process, a tableau is created using the standard form, and elementary matrix operations are performed, selecting pivots to obtain the best improvement of the objective function. The selection of the pivots is based on criteria defined by the method, and the iterations are performed until an optimal solution is produced. The simplex algorithm was developed as a two- phase process. If a feasible solution exists as part of the input, Phase I can be eliminated and Phase II is executed in search for the optimal solution. When such a solution is not available, artificial variables must be added, and a special procedure is followed to obtain an initial feasible solution. In the block of rock problem, the tableau components are the coefficients of the equations of the planes that define the faces of the block. The coordinates of any vertex of the block represent a feasible solution. Consequently, if the coordinates of a vertex are not gathered when collecting the data, in the field or digitally, there is no initial feasible solution. Therefore, in this case, the simplex method requires two phases to be completed. The use of the simplex algorithm to determine the feasible vertices of the block of rock does not require an objective function, and the iterations do not define a path in search for an optimal solution. Thus, use of the method to determine the feasible vertices is slightly different from the original procedure proposed by Dantzig (1997). In this case, the pivots must be selected to keep the algorithm moving around the edges of the same face in every step, until all vertices of this face are identified. The process must be performed on all the faces until the identification of all vertices is completed.

22 The validity of the simplex method to determine the feasible vertices of the polyhedron can be confirmed using a block with known coordinates. The equations of the planes defining the faces can be calculated using any three coordinates of each face. The block in Figure 9 has the origin of the system of coordinates as the initial feasible solution. Faces x1, x2 and x3 are parallel to planes y-z, x-z, and x-y, eliminating the requirement of their equations. The simplified equations of the remaining faces are:

푆1: 3푥 + 2푦 + 5 푧 = 55 푆2: 2푥 + 푦 + 푧 = 26 푆3: 푥 + 푦 + 3푧 = 30 푆4: 5푥 + 2푦 + 4 = 57 푥, 푦, 푧 ≥ 0

Figure 9. Block with known coordinates (©2006, James Jones, by permission)

A fundamental theorem of linear programming states that a basic feasible solution corresponds to an extreme point in the convex set of feasible solutions to the linear program (Dantzig, 1985). Consequently, obtaining all the feasible solutions contained in a face will return the coordinates of all its vertices. For example, to find all feasible vertices on plane S1, it is necessary to find all pivots that keep the S1 column non-cleared, and see which ones return a non-negative value for all variables in the last row of the tableau. In LPSM context, non-cleared means that the variable that corresponds to the face is non-basic. Figure 10 shows a series of trial-and-error pivoting operations for face S1. Columns A and B contain the row and column where the pivot operation was applied for the tableau. Columns D, E, F, G, H, I, and J contain the coefficients of the plane equations in the first tableau, and the results of the pivot operations in the subsequent ones. The last row of any tableau shows the variables that resulted from the

23 pivot calculations. When all of them are non-negative, the vertex is feasible and their values represent their coordinates, as seen in the highlighted cells in Figures 10 and 30 to 35. For example in Figure 10, the first tableau is an initial given feasible solution and the coordinates on planes x1, x2, and x3 are (0, 0, and 0). Pivoting on row 1, column 1, returns negative variables, so the point (18.3333, 0, 0) is not feasible. The next iteration pivot row 4, column 3 and the point (5, 0, and 8) is a feasible vertex of the polyhedron. Following this procedure, all feasible vertices of face S1 have been determined at the end of the iterations.

24

Figure 10. Pivot operations for Face S1

In a manner similar to Face S1, the modified simplex method can be executed with the remaining faces to obtain all feasible vertices for each face. Figures 30, 31, 32, 33, 34 and 35 in

Appendix C depict the pivot operations for faces S2, S3, S4, X1, X2, and X3 respectively.

25 7.3.2 Double Description Method The double description method is an algorithm invented by Motzkin et al. (1950) to obtain the solution of general finite systems of linear inequalities and corresponding maximization problems. It was published in the “Contributions to the Theory of Games” in 1950. It is based on the fact that two matrices A and R describe the same object when the following conditions are met:

Ax ≥ 0 if and only if x = R λ for some λ ≥ 0 The implementation of this method permits the enumeration of all extreme rays of a d general polyhedron in R . It constructs intermediary pairs of matrices (Ai,Bi) iteratively, taking B as input and returning A. In every step of the process, a new polyhedron cone is obtained and a new constraint, represented by the next half-space, is added. The new vertex obtained in the step must be on the hyper-plane represented by the inequality. The method was the object of study by Fukuda et al. (1996) investigating the difficulties involved with the implementation. They introduced techniques of row decomposition to prevent memory problems when running on computers, and coded the algorithm following some of the ideas of the original authors. The program, called cdd, is available as open source software and can be downloaded from http://www.inf.ethz.ch/personal/fukudak/cdd_home/. To enumerate the vertices of the polyhedron, the extreme rays are required. The program computes them together, and includes important runtime options that permit the determination of the vertices and the faces that they belong to. The basic procedure of the algorithm is described below (Fukuda, 1996).

26 procedure DoubleDescriptionMethod(A); begin

Obtain any initial DD pair (Ak;R); while K ≠ {1, 2,…,m} do begin Select any index i from {1, 2,…,m} \ K;

Construct a DD pair (AK+I, ;R’) from (AK,R); /* by using Lemma 3 */ R := R’; K := K + i; end; Output R; end;

Figure 11 outlines geometrically the Double Description method. It shows one-step of the iterative process. A new constraint is added (hyper-plane in blue), which separates the valid rays and creates new extreme rays. The ray h is a new extreme ray adjacent to a and g, while i is not an extreme ray as it was generated from c and g.

Figure 11. Double description method iteration (©2009, Marco Terzer, by permission).

In each step, one constraint is added, and the polyhedron is constructed iteratively, producing new vertices on the hyperplane that bound the constraint.

27 The input and output of the program cdd must be in the Polyhedra format defined by Fukuda (1999). The format was developed based on the two representations of a convex polyhedron. The H-representation is based in the intersection of finite half- spaces and the V- representation as the sum of the convex hull of finite points. The input definition format is: ______various comments begin m d + 1 numbertype b -A end various options ______The attribute numbertype can be an integer, rational, or real number, while d is the dimension, b is a column m-vector, A is an m x n matrix from the inequality 퐀퐱 ≤ 퐛, 퐀: 퐦 퐱 퐧 , which represents the half- spaces that are the polyhedron constraints. The output format is: ______Various comments produced by the cdd program begin n + s d + 1 v1 . . . . 1 vn

0 r1 . . . .

0 rs end

28 The number 1 indicates that v1 … vn are the vertices and r1 … rs are the extreme rays of the polyhedron. When running the program with the inequalities for a block of rock, the output will ideally contain only the number 1 starting each line. Table 1 contains the calculated inequalities of the block in Figure 9.

Table 1. Calculated equations of planes from block in Figure 9

Plane Equation # Equation

x1 1 -130x ≤ 0

x2 2 -91.2 y ≤ 0

x3 3 -296.4 z ≤ 0

S1 4 18.75 x + 12.50 y + 31.25 z ≤ 343.75

S2 5 10x + 5y + 5z ≤ 130

S3 6 18.75x + 18.75x + 56.25z ≤ 562.50

S4 7 128x + 51.2y + 102.4z ≤ 1459.20

Consequently, the corresponding input data in polyhedra format are as shown in Figure 12.

Figure 12. Input to cdd in polyhedra format

Executing the cdd program will generate the output in Figure 13.

29

Figure 13. cdd output when running with input from Figure 12

The output shows the coordinates of the vertices containing the number 1 in the beginning of the line, indicating that it is a valid vertex. The number and coordinates of the vertices of the block perfectly match the ones used to calculate the hyper-planes inequalities. When the number 0 starts the line, it represents a ray. In the case of a block of rock, this is an indication that there is an error in the input data. Additionally, the incidence file generated on Figure 14 provides information that allows the deduction of which face each vertex belongs to.

30

Figure 14. Incidence file generated by the cdd program

The word begin denotes the start of the output information. The first line after the word begin is the number of outputs. In this case, 10 represent the number of vertices. The second number, 7, is the number m of inequalities (faces) in the input file. The third number is usually m+1, but it will be m when the input linear inequality system is homogeneous. Any line will include the number of inequalities (generally, this number is 3) and their order as defined in the input file. In the case above, inequalities of order 1, 4, and 6 will generate one vertex, 2, 4, and 6 will generate another one, and so on. Using this information, Table 2 can be created, where the planes that intersect to create the vertices are obtained. Consequently, the vertices that are part of each face can be easily determined, and are depicted in Table 3.

31 Table 2. Vertices generated from the inequalities for cardinality 3 - cdd

Equation (Plane) Vertex Generated

1 4 6 –> x1, S1, S3 E

2 4 6–> x2 ,S1,S3 C

1 2 6–> x1, x2, S3 D

1 3 5–> x1, x3, S2 G

1 2 3–> x1, x2, x3 O

1 4 5–> x1, S1, S2 F

2 3 7–> x2, x3, S4 A

3 5 7–> x3, S2, S4 H

4 5 7–> S1,S2, S4 I

2 4 7–> x2,S1,S4 B

Table 3. Vertices and their faces - cdd

Equation (Plane) Vertices

1 – (x1) E,D,G,O,F,

2 – (x2) C,D,O,A,B

3 – (x3) G,O,A,H

4 – (S1) E,C,F,I,B

5 – (S2) G,F,H,I

6 – (S3) E,C,D

7 – (S4) A,H,I,B

32 7.3.3 Reverse Search Vertex Enumeration Algorithm David Avis and Komei Fukuda developed the Reverse Search Vertex Enumeration Algorithm in 1990 and revised it in 1992 (Avis et al., 1992). It is based on inverting finite pivot algorithms for linear programming. Unlike the process described in Section 4.2.1, where the objective function is eliminated, this algorithm follows Bland’s rule to determine a unique path from the starting vertex to the optimum vertex. Afterwards, the procedure moves backwards from the optimum vertex and inverts Bland’s rule, enumerating all vertices in the process that works even for degenerate hyper-planes. The algorithm is described in Avis (2000) and an open source program called lrs is publicly available to download from http://cgm.cs.mcgill.ca/~avis/C/lrs.html. The lrs code uses the same polyhedra input format as Fukuda’s cdd, described in Section 4.2.2, with the difference that it accepts integer or rational numeric data only. The incidence option permits obtaining the vertices that define the face. The block on Figure 9 will generate the input in Figure 15.

Figure 15. Input to lrs program in polyhedra format obtained from block in Figure 7

The input data is the same as in the cdd program, but some numbers are transformed to rational format to match lrs requirements. Running the lrs program with the input of Figure 15 generates the output in Figure 16.

33

Figure 16. Output of the lrs program

The results are in rational or integer format, and include the faces of each vertex that allows obtaining the vertices that are part of each face on Table 1. Using this information, Table 4 can be created, where the planes that intersect to create the vertices are obtained. Consequently, the vertices that are part of each face can be easily determined, and are depicted in Table 5.

34

Table 4.Vertices generated from the inequalities for cardinality 3 - lrs

Equation(Plane) Vertex Generated

2 4 7 -> X2, S1, S4 B

4 5 7 -> S1, S2, S4 I

3 5 7 -> X3, S2, S4 H

1 3 5 -> X1, X3, S2 G

1 4 5 -> X1, S1, S2 F

2 3 7 -> X2, X3, S4 A

1 2 3 -> X1, X2, X3 O

2 4 6 -> X2, S1, S3 C

1 4 6 -> X1, S1, S3 E

1 2 6 ->X1, X2, S3 D

Table 5. Vertices and their faces - lrs Equation (Plane) Vertices 1 – (x1) G, F, O, E, D 2 – (x2) B, A, O, C, D 3 – (x3) H, G, A, O 4 – (S1) B, I, F, C, E 5 – (S2) I, H, G, F, 6 – (S3) C, E, D 7 – (S4) B, I, H, A

35 7.4 Redundancy

In a system of m linear inequalities with d variables Ax ≤ b, the inequality Ai x ≤ bi is redundant if the set of solutions does not change when it is removed (Fukuda, 2011). When the orientation of the planes of the block of rock is obtained, some redundant inequalities may be introduced. It is necessary to validate the plane inequalities before the identification of the feasible vertices, and if redundancy is detected, it is necessary to review the input data. Avis (1999) developed the program called redund, which is part of the lrs package that receives as input the H-representation of polyhedra described on Section 5.2.2 . The program removes and informs any redundancy in the set of inequalities. In this case, rays substituted the vertices in the output, indicating that it is necessary to review the orientations of the planes. It is an open-source program that can be included as part of the validation process and before the determination of the feasible vertices.

7.5 Sorting the Vertices of a Finite Convex Planar Set in the Counter- Clockwise Direction To calculate the volume and centre of mass of an arbitrary block, the Mirtich method requires the coordinates of the vertices on the face sorted in the counter-clockwise direction. After the execution of the modified Simplex, Double Description, or Reverse Search Vertex Enumeration methods, the faces and their respective vertices are obtained in no particular order. Consequently, it is necessary to sort the vertices on each face in order to match the required format. A convex hull is the smallest convex set containing a set of points (Preparata, 1985). Graham (1972) developed an algorithm to find the convex hull from a finite set of points on the plane, which represents the vertices of the faces of the polyhedron. The procedure determines which points of the set are extreme, and progresses in five steps. It first determines an internal point of the hull by testing the linearity of three element subsets, eliminating collinear middle points and stopping when the first non-collinear set is found. In other words, it starts with two random points, verifying if any of the remaining points are not in the line determined by the first two. When such a point is found, it is used as the origin of the local system of reference. The selection of the internal point is because the centroid of a set of points is internal to its convex

36 hull (Graham, 1972). The remaining points are then sorted by polar angle and the distance from the origin. The scan starts with the point with the smallest y-coordinate at the rightmost position in the set (Preparata, 1985). Examining consecutive points in groups of three in counter- clockwise direction, it eliminates the ones that define a right turn. Figure 17 depicts the Graham scan around a set of points.

Figure 17. Graham scan in a set of points (©1985, Preparata et al, by permission)

When the initial point is reached, the scan terminates the output and the set of points is sorted in the counter-clockwise direction.

7.6 Running the Graham Algorithm The input to the Graham algorithm is an unsorted set of points on the plane. The outputs of the modified Simplex, Double Description, or Reverse Search Vertex Enumeration methods are sets of 3D points, so they cannot be directly used in the Graham algorithm. Thus, the face needs to be rotated around one of the axes to make it parallel to a Cartesian plane. As a result, one of the coordinates will be constant, and the remaining two can be used as inputs to the algorithm. It is important to note that the Graham algorithm will be used only to determine the order of the points on the face. Therefore, after the rotation this order will be obtained corresponding to the existing coordinates before the rotation. Multiplying the coordinates (x, y, z) of all corners of a face as a column vector by the matrix M in Equation 21, the calculated

37 coordinates will be the corners of the face parallel to the x-y plane. The choice of the x-y plane is arbitrary because making the faces parallel to the y-z or x-z planes will produce identical results when the Graham algorithm procedure is applied.

푎2푐+푏2 푎푏(1−푐) − −푎 푎2+푏2 푎2+푏2 M = 푎푏(1−푐) 푎2+푏2푐 (21) − −푏 푎2+푏2 푎2+푏2 ( 푎 푏 푐 ) Variables a, b and c are the terms of the unit vector that defines the face from Table 6. The rotated coordinates in the blue rows does not contain the z coordinate since they are constant for each vertex, and are not necessary for the algorithm. There is no need to rotate face x3 since its normal vector is (0, 0, 1). Multiplying the coordinates of the remaining faces by the matrix M causes rotation of the faces, and produces the coordinates in the blue rows of table 7 in Appendix D. When the face is already parallel to the x-y Cartesian plane, or in other words, when its normal vector is (0, 0, 1) or (0, 0,-1) a rotation is not necessary and the face’s initial x and y coordinates can be used. Additionally, in cases when the face normal vector is close to (0, 0, 1) or (0, 0,-1) a tolerance must be established to prevent large errors, because some denominators in the matrix are a2 + b2. Since the objective is only to sort the vertices, the results will not be affected.

Table 6. Calculated equations - faces of block of Figure 9

Plane Equation # Equation

x1 1 -130x ≤ 0

x2 2 -91.2 y ≤ 0

x3 3 -296.4 z ≤ 0

S1 4 18.75 x + 12.50 y + 31.25 z ≤ 343.75

S2 5 10x + 5y + 5z ≤ 130

S3 6 18.75x + 18.75y + 56.25z ≤ 562.50

S4 7 128x + 51.2y + 102.4z ≤ 1459.20

38 An open source code that implements the Graham algorithm has been modified to fulfill the requirements of this thesis. Running the Graham algorithm software to the x and y coordinates of each point returns them sorted in a counter-clockwise direction on the face. For example, for face S1, the inputs to the program are the number of vertices (5) of the face, and the rotated x and y coordinates: -40.28845 -30.19230 -81.77884 -57.01923 115.67310 92.11535 330.28850 245.19225

299.89619 219.53072 Figure 18 depicts the input and output of the program.

Figure 18. Output of the Graham algorithm.

This corresponds correctly to the counter-clockwise direction order of the points C, B, I, F, E on face S1. Likewise, all other faces can have their vertices sorted, and the original corresponding 3D coordinates can be used as input to the Mirtich method, completing the procedure.

7.7 Executing the Mirtich method The final step for calculating the volume and centre of mass of the block is to execute the Mirtich method running a program that was developed based on Mirtich’s pseudo code. The input of the program is a data file containing the number of faces, their coordinates, and the number of vertices per face indexed in counter-clockwise direction. To create the data file, the first step is to assign an arbitrary index to each vertex of the block, which ranges from 0 to n-1, where n is the number of vertices. The output of Graham algorithm defines the vertices’ order on each face. For example, face S1 generates the order 1 8 5 4 2. It corresponds to the order obtained from Figure 19, after correlating them with the original coordinates before the rotation. Figure 19 depicts the block with the indexed vertices.

39

Figure 19. Block with indexed vertices (©2006, James Jones, by permission)

The program automatically identifies the data file structure, which is depicted in Figure 20 for the block of Figure 19. The included descriptions are for clarification only, and are not accepted by the program.

40

Figure 20. Input to Mirtich method program

Figure 21 depicts the output of the program, showing the volume and centre of mass of the block in Figure 19.

Figure 21. Output of Mirtich method

41 Chapter 8. Conclusions and Recommendations

8.1 Conclusions The main contribution of this research is the development of a method to calculate the volume and centre of mass of blocks of rock with convex arbitrary geometries. The problem has been an object of study by researchers and engineers because it is a critical property required in a variety of geotechnical, civil and geologic projects. The volume and centre of mass of the block of rock is required when calculating its stability and the volume is important when budgeting excavations in large construction projects such as railroads, highways, dams and bridges. The cost to excavate rock is usually paid in terms of volume and the volume is measured in situ. The current methods of investigation to calculate the volume, among others, include drilling, excavation of test pits, or seismic measurements, all of which require the application of significant amount of resources. The availability of a fast and accurate low cost method to calculate the volume of the arbitrary shaped block would be a significant benefit to such projects, making them more time and cost effective. The method developed in this thesis requires only the measurements of the orientations of the planes that form the block of rock and the coordinates of one point on each plane. These procedures are fast and can be performed in the field or using digital techniques. However, the use of the method requires computer automation since the calculations involve multiple mathematical techniques, making the calculations impractical without specialized software. The complexity of the calculations arise from the fact that there is no regular geometric form to be used as a template. Consequently, a polyhedron with any number of faces, edges, and vertices is used as a physical representation of the block. This research revealed the technical aspects to confront these problems, indicating solutions for the calculations and a logical procedure for the development of the software. All steps to obtain the solution have been defined, starting with the data collection in the field, the necessary transformation to input into the software and the validation of the data. Once the geologic information is input to the system, the software generates the data transformations and validation, and the output is available almost instantaneously. Depending on the measurement method or the operator, the orientation of the planes that form the block can present small differences. In this context, the software can make several calculations with different data, and the results are easily compared and adjusted. Thus,

42 the accuracy of the results are only dependent on the quality of the input data, since the internal calculations performed by the software are precise. Some code has been already developed, and open source programs are available to be included as is or with minor modifications. Most of these programs were developed as ANSI C standard code that makes it possible to integrate them in the Microsoft Windows operating system, even if developed for the Linux environment. The user interface is generally the quickest part to design, develop, and test, while the core of programming logic usually requires much more effort. Since most of the complex parts have already been developed and tested, future work using this method will provide benefits in terms of cost and reliability.

8.2 Recommendations One of the most challenging tasks of this method is the enumeration of the vertices from the inequalities that represent the planes defining the boundary of the block of rock. To address this problem, three alternatives have been described, two of which are the cdd and lrs open source programs that run in a Linux operating system. The third option is to use the Linear Programming Simplex method, which is simple and reliable. The selection of the method depends on further detailed assessment of the options. The open source programs cdd and lrs require modifications to adapt them to the Windows operating system. Likewise, the linear programming code developed for this thesis needs to be modified. There are general linear programming open source solvers available, but their objective is to maximize or minimize a given function, while in the block of rock problem, the objective is only to enumerate the polyhedron vertices. Therefore, the use of these linear programming packages is probably impractical, since they will require many modifications. On the other hand, the trial and error simplex code developed for this thesis is a starting point that can likely be improved to be a simple vertices enumeration solution. It still requires features such as automation to select the pivots in each step and to address blocks with any number of faces. The aforementioned alternatives need to be compared in terms of amount of code to be written and level of complexity of this code. The selection of the best option to integrate the software depend on these assessments. Finally, a factor that must be taken in consideration when selecting the method is the possibility to later convert the program to run on small devices and

43 tablets. This implementation will let the engineers to make the calculations directly in the field, accelerating and improving technical and cost effective decisions.

44 References

Alexandrov, A.D. 2005. Convex Polyhedra. Springer-Verlag Berlin Heidelberg New York.

Avis, D. and Fukuda, K. 1992. A pivoting algorithm for convex hulls and vertex enumeration of arrangements and polyhedra. Discrete and Computational Geometry, 8: 295-313.

Avis, D. 2000. A revised implementation of the reverse search vertex enumeration algorithm. In Polytopes – Combinatorics and Computation. Edited by Kalai, G. and Ziegler, G., Published by Birkhauser Basel, 29: 177-198.

Avis, D., Fukuda, K., and Picozzi, S. 2002. On canonical representations of convex polyhedra. In Proceedings of the First International Congress of Mathematical Software, p. 350-360, Beijing, China, 17-19 August 2002.

Bland, R. 1977. New finite pivoting rules for the simplex method. Mathematics of Operations Research, 2(2): 103-108.

Birch, J.S. 2006. Using 3DM Analyst mine mapping suite for rock face characterisation. In Proceedings of Laser and Photogrammetric Methods for Rock Face Characterization. Edited by F. Tonon and J. Kottenstette, Golden, USA.

Cromwell, P. 1999. Polyhedra. Cambridge University Press, 1st edition.

Coxeter, H. 1973. Regular Polytopes, 3rd edition, Dover Publications, Inc., New York.

Dantzig, G. and Thapa, M. 1997. Linear Programming vol 1,2, Springer Series in Operations Research - Springer-Verlag, New York.

Dyer, M.E., and Proll, L.G. 1977. An algorithm for determining all extreme points of a convex polytope, Mathematical Programming 12:81-96 – North-Holland Publishing Company.

Elmouttie, M., Poropat, G., and Krähenbühl, G. 2010. Polyhedral modelling of rock mass structure. International Journal of Rock Mechanics & Mining Sciences 47: 544-552.

Fukuda, K., and Prodon, A. 1996. Double description method revisited. Combinatorics and Computer Science, 1120: 91-111.

Fukuda, K. 1999. cddlib Reference Manual, Institute for Operations Research and Institute of Theoretical Computer Science – Zurich ,Switzerland. ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlibman/cddlibman.html [cited July 2014].

Fukuda, K. 2004. Frequently asked questions in polyhedral computation, Swiss Federal Institute of Technology - http://www.cs.mcgill.ca/~fukuda/soft/polyfaq/polyfaq.html [cited July 2014].

45 Fukuda, K. 2011 – Institute for Operations Research – Swiss Federal Institute of Technology Zurich, https://www.ifor.math.ethz.ch/teaching/lectures/poly_comp_ss11/lecture9 [cited July 2014]

Fukuda, K. 2014. cdd and cddplus homepage. www.inf.ethz.ch/personal/fukudak/cdd_home/index.html [Accessed July 2014]

Goodman, R., and Shi, G. 1985, Block Theory and Its Application to Rock Engineering, Prentice-Hall, New Jersey.

Graham, R. 1972. An efficient algorithm for determining the convex hull of a finite planar set. Information Processing Letters 1: 132-133. North-Holland Publishing Company.

Huang, T., Chen, J., and Chang, C. 2003. Stability analysis of rock slopes using Block Theory, Journal of the Chinese Institute of Engineers, 26(3): 353-359.

Hudson, J., and Harrison, J. 2000. Engineering Rock Mechanics- An Introduction to the Principles, Pergamon – Elsevier Science Ltd.

Jafari, A., and Khishvand, M. 2012. An efficient block detection algorithm in 3D-DDA. In Advances in Discontinuous Numerical Methods and Applications in Geomechanics and Geoengineering, Honolulu-USA

Kaibel, V., Metchel, R., Sharir, M., and Ziegler, G. 2006. The simplex algorithm in dimension three, SIAM Journal of Computing, 34(2), 475-497

Mirtich, B. 1996. Impulse-based Dynamic Simulation of Rigid Body Systems. PhD thesis, Computer Science in the Graduate Division, University of California at Berkeley.

Motzkin, T., Raiffa, H., Thompson, G., and Thrall, R. 1950. The Double Description Method. Contributions to the Theory of Games. Princeton University Press.

Preparata, F., and Shamos, M. 1985. Computational Geometry - An Introduction. Springer- Verlag, New York.

Preparata, F., and Muller, D. 1977. Finding the intersection of n half-spaces in time O(n log n) Mathematics for Key Technologies – DFG Research Center, Berlim

Schubert, W., and Potsch, M. 2005. Kinematical analysis of rock blocks supported by 3D imaging – In Proceedings of the 41st Symposium on Rock Mechanics (USRMS): 50 Years of Rock Mechanics - Landmarks and Future Challenges. Golden, Colorado, June 17-21, 2006

Tannant, D.D, Radmanovic, J., and Jiang L. 2006. Digital photogrammetry for surface mining applications. In Proceedings of CIM Mining Conference and Exhibition, Vancouver, 12 p.

Terzer, M. 2009. Large Scale Methods to Enumerate Extreme Rays and Elementary Modes. PhD thesis, Swiss Federal Institute of Technology, Zurich

46 Thomas, Jr., Weir, M., and Haas, J. 2010. Thomas’ Calculus Early Transcedentals, 12th edition. Addison-Wesley.

USask. 2014. Strike and Dip. http://homepage.usask.ca/~mjr347/prog/geoe118/geoe118.045.html [cited July 2014]

Warburton, P. 1981. Vector stability analysis of an arbitrary polyhedral rock block with any number of free faces. International Journal of Rock Mechanics & Mining Sciences & Geomech. Abstr. 18: 415-427.

Weisstein, E. 1999. Polyhedron. From MathWorld- A Wolfram Web Resource http://mathworld.wolfram.com/Polyhedron.html [cited July 2014]

Wyllie, D.C., and Mah C.W. 2004. Rock Slope Engineering – Civil and Mining 4th ed. Spon Press.

47 Appendices

Appendix A – Method Mirtich Sample Tests Input File for Cube in Figure 22 8 -10 -10 -10 +10 -10 -10 +10 +10 -10 -10 +10 -10 -10 -10 +10 +10 -10 +10 +10 +10 +10 -10 +10 +10

6

4 0 3 2 1 4 4 5 6 7 4 0 1 5 4 4 6 2 3 7 4 1 2 6 5 4 0 4 7 3

48

Figure 22. Cube

Method Mirtich Output - Cube

Figure 23. Cube results

49 Input File for Tetrahedron in Figure 24 4

0 0 0 0 0 4 0 4 0 4 0 0

4

3 0 3 2 3 3 0 1 3 2 1 0 3 1 2 3

Figure 24. Tetrahedron

50 Method Mirtich Output - Tetrahedron

Figure 25. Tetrahedron results

Input File for Icosahedron in Figure 26

12

+0.00000000 +0.00000000 +1.00000000 +0.00000000 +0.00000000 -1.00000000 +0.89442719 +0.00000000 +0.44721360 +0.27639320 +0.85065081 +0.44721360 -0.72360680 +0.52573111 +0.44721360 -0.72360680 -0.52573111 +0.44721360 +0.27639320 -0.85065081 +0.44721360 +0.72360680 +0.52573111 -0.44721360 -0.27639320 +0.85065081 -0.44721360 -0.89442719 +0.00000000 -0.44721360 -0.27639320 -0.85065081 -0.44721360 +0.72360680 -0.52573111 -0.44721360

20

3 6 11 2 3 3 2 7 3 7 2 11 3 0 2 3

51 3 0 6 2 3 10 1 11 3 1 7 11 3 10 11 6 3 8 7 1 3 8 3 7 3 5 10 6 3 5 6 0 3 4 3 8 3 4 0 3 3 9 8 1 3 9 1 10 3 4 5 0 3 9 10 5 3 9 5 4 3 9 4 8

52

Figure 26. Icosahedron

Method Mirtich Output - Icosahedron

Figure 27. Icosahedron results

53 Input File for Concave Block in Figure 28

16

0 0 0 120 0 0 120 10 0 0 10 0 0 0 50 70 0 50 70 0 25 100 0 25 100 0 50 120 0 50 120 10 50 100 10 50 100 10 25 70 10 25 70 10 50 0 10 50

10

4 0 3 2 1 8 0 1 9 8 7 6 5 4 4 0 4 15 3 4 1 2 10 9 8 3 15 14 13 12 11 10 2 4 14 5 6 13 4 13 6 7 12 4 8 11 12 7

54 4 5 14 15 4 4 9 10 11 8

Figure 28. Concave block

Method Mirtich Output - Concave Block

Figure 29. Concave block results

55 Appendix B - Pivot Operations for Faces S2, S3, S4, X1, X2, and X3

Figure 30. Pivot operations for Face S2

56

Figure 31. Pivot operations for Face S3

57

Figure 32. Pivot operations for Face S4

58

Figure 33. Pivot operations for Face X1

59

Figure 34. Pivot operations for Face X2

60

Figure 35. Pivot operations for Face X3

61 Appendix C - Original and Rotated Coordinates of all Vertices of Sample Block

Table 7. Original and rotated coordinates of all vertices – block of Figure 8

Face Coordinates x1 O (0,0,0) D (0,0,10) E (0,15,5) F (0,25,1) G (0,26,0) x1 O(0,0) D(1300,0) E(650,15) F(130,25) G(0,26) x2 O (0,0,0) D (0,0,10) C(3.75,0,8.75) B (5,0,8) A (11.4,0,0) x2 O(0,0) D(0,912) C(3.75,798) B(5.0,729.6) A(11.4,0) x3 O (0,0,0) A (11.4,0,0) H (5,16,0) G (0,26,0) --- x3 O (0,0) A (11.4,0) H (5,16) G (0,26) ---

S1 B (5,0,8) C(3.75,0,8.75) E (0,15,5) F (0,25,1) I(1.8,20.8,1.6) C(-81.77884,- S1 B(-40.28845,-30.19230) E(115.67310,92.11535) F(330.28850,245.19225) I(299.89619,219.53072) 57.01923)

S2 H (5,16,0) I(1.8,20.8,1.6) F (0,25,1) G (0,26,0) ---

S2 H(46.6,36.8) I(24.84,32.32) F(30,40) G(41.6, 46.80) ---

S3 C(3.75,0,8.75) D (0,0,10) E (0,15,5) ------D(-187.5,- S3 C(-56.71875,-60.46875) E(320.625,335.625) ------187.5)

S4 A (11.4,0,0) B (5,0,8) I(1.8,20.8,1.6) H (5,16,0) --- B(-581.9301,- S4 A(1007.9193483,398.60690) I(681.6279,292.73103) H(1001.518165,414.60690) --- 234.7724)

62 Appendix D - Copyright Permissions

63

64

65