2023-04-28
Suppose a hole is drilled underground into the back of a drift. The hole is drilled from a pivot point at a particular height from the floor. Typically this height is a characteristic of the drill. In itself, this is relatively moderate and quite standard in underground mining. Sometimes, the drill may break down, and they need to use a different drill. Suppose further that the alternate drill has a different pivot height from the floor. How can we determine where the new pivot point of each hole would be without re-designing the pattern? To narrow the scope a little, how can we determine the new horizontal distance of the pivot point from the reference line?
The idea is to show the horizontal distance from the reference line for a drill with pivots on a horizontal line at 2.15m from the floor. The mathematics will be developed for the general case solving for the horizontal distance of a new pivot point projected along the hole vector to a horizontal line.
The following diagram (fig. 1) outlines the geometry that is used to derive the equation. It is based on similar triangles.
This is a similar triangle problem, and we can equate the similar triangles and solve for \(X\).
\[ \frac{H_C - H_P}{V_C - V_P} = \frac{H_C - X}{V_C - V_{NP}} \qquad{(1)}\]
Solving for X:
\[ X = H_C - \left(H_C - H_P \right) \left( \frac{V_C - V_{NP}}{V_C - V_P} \right) \qquad{(2)}\]
We will use some Python to help with the math.
from pint import UnitRegistry
= UnitRegistry() ureg
Let us assume that the distance from the floor of the drift to the horizontal line is: \(V = 2.15 \text{m}\)
# HorizontalCollarOffset variable
= 4.30*ureg.meter
HC
# VerticalCollarOffset variable
= 2.88*ureg.meter
VC
# HorizontalPivotOffset variable
= 3.45*ureg.meter
HP
# VerticalPivotOffset variable
= 0.62*ureg.meter
VP
# User must supply this number
= 2.15*ureg.meter
V
# We need to know what the height of the reference line is from the floor of the drive. We can figure it out based on the pivot height and from the vertical pivot offset:
# `PivotHeight` custom formula variable
= 2.78*ureg.meter
pivot_from_floor
# Height of reference line from floor
= pivot_from_floor - VP
R
# We have enough information to calculate the vertical distance to the new pivot point on the horizontal line.
# Let us calculate V_np
= V - R
v_np
# Display the results
print(f'R = {R:.1f~P}')
print(f'v_np = {v_np.to(ureg.mm):.1f~P}')
print(f'VP - v_np = {(VP - v_np):.3f~P}')
R = 2.2 m
v_np = -10.0 mm
VP - v_np = 0.630 m
Solving for X:
= HC - (HC - HP)*((VC - v_np)/(VC - VP))
X print(f'X = {X:.3f~P}')
# print(f'HP = {HP:.3f~P}')
# print(f'HP - X = {(HP - X).to(ureg.mm):.3f~P}')
X = 3.213 m
If we have a vertical hole \((H_C = 0)\), it is assumed that the pivot is vertical as well \((H_P = 0)\).
# HorizontalCollarOffset variable
= 0*ureg.meter
HC
# VerticalCollarOffset variable
= 2.88*ureg.meter
VC
# HorizontalPivotOffset variable
= 0*ureg.meter
HP
# VerticalPivotOffset variable
= 0.62*ureg.meter
VP
# User must supply this number
= 2.15*ureg.meter
V
# `PivotHeight` custom formula variable
= 2.78*ureg.meter
pivot_from_floor
# Height of reference line from floor
= pivot_from_floor - VP
R
# Let's calculate V_np
= V - R
v_np
= HC - (HC - HP)*((VC - v_np)/(VC - VP))
X print(f'X = {X:.3f~P}')
X = 0.000 m
This behaves as expected. The horizontal offset for the new pivot should be 0.
Can we use the values from the custom formula variables directly and get a result that makes sense?
# HorizontalCollarOffset variable
= -4.30*ureg.meter
HC
# VerticalCollarOffset variable
= 2.88*ureg.meter
VC
# HorizontalPivotOffset variable
= -3.45*ureg.meter
HP
# VerticalPivotOffset variable
= 0.62*ureg.meter
VP
# User must supply this number
= 2.15*ureg.meter
V
# `PivotHeight` custom formula variable
= 2.78*ureg.meter
pivot_from_floor
# Height of reference line from floor
= pivot_from_floor - VP
R
# Let's calculate V_np
= V - R
v_np
= HC - (HC - HP)*((VC - v_np)/(VC - VP))
X print(f'X = {X:.3f~P}')
X = -3.213 m
Negative values will work, and we can use the formula directly. That means using negative numbers to represent left-hand values will work.