# Clarification on dip calculation from principal stress direction cosines in 3DEC

**URL:** <https://forum.itascainternational.com/t/clarification-on-dip-calculation-from-principal-stress-direction-cosines-in-3dec/2199>\
**Category:** 3DEC\
**Created:** [August 11, 2025, 6:14pm UTC](https://forum.itascainternational.com/t/clarification-on-dip-calculation-from-principal-stress-direction-cosines-in-3dec/2199 "2025-08-11T18:14:29Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![emegag](https://avatars.discourse-cdn.com/v4/letter/e/f475e1/32.png) [@emegag](https://forum.itascainternational.com/u/emegag)\
**Post date:** [August 11, 2025, 6:14pm UTC](https://forum.itascainternational.com/t/clarification-on-dip-calculation-from-principal-stress-direction-cosines-in-3dec/2199/1 "2025-08-11T18:14:29Z")

</div>

Hi all,

I’m working with principal stress direction cosines exported from 3DEC, and I’m trying to understand how the software converts these direction cosines into dip and dip direction values shown in the built-in stereonet plot.

I can manually calculate trend from the direction cosines using `atan2(x, y)`, and my results match the software’s dip direction values. However, I can’t reproduce the dip values. I tried asin(z) and acos(z).

Could someone please explain the formula or method 3DEC uses to convert direction cosines into dip?

Here’s a list of ten examples, all values in degrees:

| S3 | X | Y | Z | Dip (3DEC) | Dip Dir (3DEC) | Dip (from asin(z)) | Dip Dir (from atan2(x,y) + 180 if negative) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| -4.27332e+10 | 0.635 | 0.767 | -0.095 | 100.00 | 39.63 | 5.45 | 39.62 |
| -4.22866e+10 | 0 | 1 | 0 | 90.00 | 0.00 | 0.00 | 0.00 |
| -3.14838e+10 | 0 | 1 | 0 | 90.00 | 0.00 | 0.00 | 0.00 |
| -3.02755e+10 | -0.469 | 0.883 | -0.025 | 92.82 | -28.00 | 1.43 | 152.03 |
| -3.09667e+10 | -0.918 | -0.394 | 0.044 | 94.87 | 66.77 | 2.52 | 66.77 |
| -1.36971e+10 | -0.929 | 0.37 | 0.02 | 92.27 | 111.73 | 1.15 | 111.72 |
| -9.80977e+09 | -0.748 | 0.663 | -0.01 | 91.14 | -48.43 | 0.57 | 131.55 |
| -1.90269e+10 | 0.305 | 0.951 | -0.045 | 94.97 | 17.76 | 2.58 | 17.78 |
| -2.43889e+10 | 0.674 | 0.738 | 0.023 | 92.56 | -137.61 | 1.32 | 42.40 |
| -1.95732e+10 | 0.64 | 0.764 | 0.078 | 98.34 | -140.03 | 4.47 | 39.95 |

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![jhazzard](https://avatars.discourse-cdn.com/v4/letter/j/4af34b/32.png) [@jhazzard](https://forum.itascainternational.com/u/jhazzard)\
**Post date:** [August 12, 2025, 5:31pm UTC](https://forum.itascainternational.com/t/clarification-on-dip-calculation-from-principal-stress-direction-cosines-in-3dec/2199/2 "2025-08-12T17:31:21Z")

</div>

The dip shown on the stereonet is acos(z)

Note that this is actually the normal to the s3 vector. The s3 vector plots correctly as a point on the steroenet (i.e., a sub-horizontal stress direction plots as a point near the outside of the stereonet), but when you hang your mouse over the point, it will give you a dip close to 90 (the dip of the perpendicular plane). So the _actual_ dip of the stress vector is 90-acos(z) (or asin(z) as you suggest).

---

<div class="post-metadata">

**Author:** ![emegag](https://avatars.discourse-cdn.com/v4/letter/e/f475e1/32.png) [@emegag](https://forum.itascainternational.com/u/emegag)\
**Post date:** [August 12, 2025, 7:58pm UTC](https://forum.itascainternational.com/t/clarification-on-dip-calculation-from-principal-stress-direction-cosines-in-3dec/2199/3 "2025-08-12T19:58:51Z")

</div>

Thanks Jim, I appreciate it!

I got the 3DEC dip values by exporting data from the stereonet as a .csv, which exports the dip/dip direction of the stress vector itself.

If I am understanding correctly, this dip value should equal 90-acos(z) yet in the first row example I provided, then shouldn’t the z-value be cos(-(100-90)) = 0.984. And not -0.095 which is the z-value obtained using _block zone list principal-stress_ for that zone. Am I missing something?

Thanks.

---

<div class="post-metadata">

**Author:** ![jhazzard](https://avatars.discourse-cdn.com/v4/letter/j/4af34b/32.png) [@jhazzard](https://forum.itascainternational.com/u/jhazzard)\
**Post date:** [August 13, 2025, 1:24am UTC](https://forum.itascainternational.com/t/clarification-on-dip-calculation-from-principal-stress-direction-cosines-in-3dec/2199/4 "2025-08-13T01:24:13Z")

</div>

I think the exporting to CSV from the stereonet is not correct. It assumes a cartesian x,y system, which the stereonet is not. I don’t know that there is any way to dump the actual values from the stereonet to a file.
