1. Elliptical Bloodstain Geometry
When a spherical droplet of blood strikes a planar target surface at an acute angle $\alpha$ ($0^\circ < \alpha \le 90^\circ$), momentum elongation produces an elliptical stain whose minor axis (width $W$) and major axis (length $L$, excluding satellite spines/tails) satisfy Victor Balthazard’s trigonometric relationship:
$$\sin(\alpha) = \frac{\text{Width } (W)}{\text{Length } (L)} \implies \alpha = \arcsin\left(\frac{W}{L}\right)$$
2. Reference Lookup Table ($W/L$ to Angle $\alpha$)
| Width $W$ (mm) | Length $L$ (mm) | Ratio ($W/L$) | Angle of Impact ($\alpha$) | Stain Morphology |
|---|---|---|---|---|
| 1.50 | 8.64 | 0.1736 | $10.0^\circ$ | Highly elongated; pronounced directional tail |
| 2.50 | 5.00 | 0.5000 | $30.0^\circ$ | Classic elliptical impact spatter |
| 3.54 | 5.00 | 0.7071 | $45.0^\circ$ | Moderately elliptical; minimal spine formation |
| 4.50 | 4.50 | 1.0000 | $90.0^\circ$ | Circular drop; perpendicular impact |
3. Height Above Floor ($Z$) at Area of Origin
Once strings or laser trajectories from multiple stains converge in 2D plan view at a distance $D$ from the leading edge of a stain to the 2D Area of Convergence, the vertical height $Z$ of the Area of Origin (assuming linear trajectory approximation) is:
$$Z = D \cdot \tan(\alpha)$$
1import math
2
3def compute_bloodstain_origin(width_mm: float, length_mm: float, distance_to_convergence_cm: float) -> dict:
4 if width_mm > length_mm:
5 raise ValueError("Width W cannot exceed Length L.")
6 ratio = width_mm / length_mm
7 alpha_rad = math.asin(ratio)
8 alpha_deg = math.degrees(alpha_rad)
9 height_z_cm = distance_to_convergence_cm * math.tan(alpha_rad)
10 return {
11 "w_l_ratio": round(ratio, 4),
12 "angle_of_impact_deg": round(alpha_deg, 2),
13 "estimated_height_z_cm": round(height_z_cm, 2)
14 }
15
16print(compute_bloodstain_origin(width_mm=2.4, length_mm=4.8, distance_to_convergence_cm=65.0))