# Angle measurement range

**URL:** <https://discourse.slicer.org/t/angle-measurement-range/35081>\
**Category:** Support\
**Created:** [March 26, 2024, 12:17am UTC](https://discourse.slicer.org/t/angle-measurement-range/35081 "2024-03-26T00:17:29Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [March 26, 2024, 4:48am UTC](https://discourse.slicer.org/t/angle-measurement-range/35081/3 "2024-03-26T04:48:10Z")

</div>

I split the topic because I interpreted the same way it as you @muratmaga but I’ve read it again and realized that maybe @learn_shape refers to the C-arm angles?

Those [angles are defined in DICOM](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.7.5.html#sect_C.8.7.5.1.2). The primary positioner angle is indeed allowed to be in the +/-180deg range, while the secondary angle is always between +/-90deg. You can get the +/-180deg range if you switch to use atan2 in the [script](https://discourse.slicer.org/t/get-c-arm-angles-from-3d-view-orientation/24435/3). The end result will be something like this:

```python
    nx = viewNormal[0] # R
    ny = viewNormal[1] # A
    nz = viewNormal[2] # S
    import math
    if abs(ny) > 1e-6:
      primaryAngleDeg = math.atan2(nx, -ny) * 180.0 / math.pi
    elif nx >= 0:
      primaryAngleDeg = 90.0
    else:
      primaryAngleDeg = -90.0
    secondaryAngleDeg = math.asin(nz) * 180.0 / math.pi
    return [primaryAngleDeg, secondaryAngleDeg]

```

---

_[View the full topic](https://discourse.slicer.org/t/angle-measurement-range/35081)._
