현재 위치: > 최신 기사 목록> ATAN2 함수를 사용할 때 PHP가 음의 각도를 만나면 어떻게 올바르게 처리해야합니까?

ATAN2 함수를 사용할 때 PHP가 음의 각도를 만나면 어떻게 올바르게 처리해야합니까?

gitbox 2025-09-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 이 부분은 텍스트의 내용과 관련이 없습니다.,프레젠테이션 만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"이 기사를 읽을 수 있습니다!"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

---

</span><span><span class="hljs-comment"># PHP 사용 atan2 기능 중에 발생하는 음의 각도,어떻게 올바르게 처리해야합니까??</span></span><span>

존재하다사용 PHP 2 차원 그래프 계산을 수행하십시오、좌표를 변경하거나 게임을 개발할 때,우리는 종종 점의 좌표로 각도를 계산해야합니다.。PHP 내장 `atan2` 기능은 편리하게 기준으로 편리 할 수 ​​있습니다 **y 동등 어구** 그리고 **x 동등 어구** 반환 라디안 값。그러나 실제 적용에서,많은 사람들이 일반적인 문제를 겪을 것입니다:**반환 된 각도는 음수 일 수 있습니다**。

</span><span><span class="hljs-comment">## 1. `atan2` 반환 값 범위</span></span><span>
존재하다 PHP 가운데,`</span><span><span class="hljs-title function_ invoke__">atan2</span></span><span>(y, x)` 반환 값 범위是:
</span></span>

-π ~ π (즉, -180 ° ~ 180 °)

 <span><span>이것은 의미합니다,포인트가 네 번째 사분면에있을 때,반환 된 각도 값은 음수입니다。예를 들어:
```php
</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$angle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">atan2</span></span><span>(-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); 
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$angle</span></span><span>; </span><span><span class="hljs-comment">// 출력 약. -0.785398163 (지금 바로 -45°)</span></span><span>
</span></span>

2. 왜 부정적인 각도가 있습니까?

수학적으로, 각도는 x 축의 양의 방향 으로부터 시동으로 시계 반대 방향으로 계산된다. ATAN2 의 설계로 인해, 각도는 네 번째 사분면의 지점에서 자연스럽게 음수입니다. 이것은 오류가 아니라 함수의 기능입니다.

3. 각도를 0에서 2π 사이로 변환하는 방법은 무엇입니까?

많은 응용 시나리오 (예 : 그래프 회전, 내비게이션 포인팅)에서 각도는 0 ~ 360 ° (0 ~ 2π 라디안) 범위 내에서 균일하게 균일하게되기를 원합니다. 현재 판단을 통해 간단히 전환 할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">atan2To360</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$y</span></span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>) {
    </span><span><span class="hljs-variable">$angle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">atan2</span></span><span>(</span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>); </span><span><span class="hljs-comment">// 반품 -π 도착하다 π</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$angle</span></span><span> &lt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-variable">$angle</span></span><span> += </span><span><span class="hljs-number">2</span></span><span> * M_PI; </span><span><span class="hljs-comment">// 转换도착하다 0 도착하다 2π</span></span><span>
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$angle</span></span><span>;
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">atan2To360</span></span><span>(-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 대략 출력 5.497787143 (지금 바로 315°)</span></span><span>
</span></span>

4. 각도 시스템으로 변환 (0 ° ~ 360 °)

각도로 표현 해야하는 경우 rad2deg 함수를 결합 할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">atan2ToDegree360</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$y</span></span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>) {
    </span><span><span class="hljs-variable">$angle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">atan2</span></span><span>(</span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$angle</span></span><span> &lt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-variable">$angle</span></span><span> += </span><span><span class="hljs-number">2</span></span><span> * M_PI;
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">rad2deg</span></span><span>(</span><span><span class="hljs-variable">$angle</span></span><span>); </span><span><span class="hljs-comment">// 각도로 변환하십시오</span></span><span>
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">atan2ToDegree360</span></span><span>(-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 산출 315</span></span><span>
</span></span>

5. 요약

  • PHP에서 ATAN2 에 의해 반환 된 범위는 [-π, π] 입니다.

  • 음의 각도가 발생하면 오류가 아니라 함수 특성입니다.

  • 통합 범위가 필요한 경우 2π를 추가하여 결과를 [0, 2π] 로 변환 할 수 있습니다.

  • 각도 시스템을 원한다면 Rad2deg를 결합하여 0 ° ~ 360 ° 로 통합하십시오.

이러한 방식으로, 음의 각도로 인한 혼란을 피할 수 있으며, 실제 요구는 계산 및 각도 응용을 조정하기 위해 더 잘 적응할 수 있습니다.