- 세상의 모든 계산기 수학, 과학, 공학 이야기 수학 ()
직교 좌표계 vs 극좌표계의 시각적 비교
1. 두 개의 극좌표 함수가 있습니다.
2. 직교좌표계에서 표시.
Rectangular Coordinate = 카르테시안 좌표계 Cartesian coordinate system

각 축이 서로 수직(직각)으로 만남.
각 축의 값이 커지거나 작아지는 것은 일직선 위에서 발생
3. 극좌표계에서 표시
Polar Coordinate
import numpy as np
import matplotlib.pyplot as plt
# t의 범위 설정 (0부터 2π까지)
t = np.linspace(0, 2 * np.pi, 100)
# 극좌표 함수 정의
r1 = np.ones_like(t) # r(t) = 1
r2 = 1 - np.cos(t) # r(t) = 1 - cos(t)
# 극좌표 그래프 그리기
fig = plt.figure(figsize=(12, 6))
# r(t) = 1 그래프
ax1 = fig.add_subplot(121, projection='polar')
ax1.plot(t, r1, label='r(t) = 1', color='b')
ax1.fill(t, r1, color='blue', alpha=0.2) # 그래프 아래 영역 채우기
ax1.set_title('Polar Plot of r(t) = 1', va='bottom')
ax1.set_ylim(0, 2) # 반지름 범위 설정
ax1.legend()
# r(t) = 1 - cos(t) 그래프
ax2 = fig.add_subplot(122, projection='polar')
ax2.plot(t, r2, label='r(t) = 1 - cos(t)', color='r')
ax2.fill(t, r2, color='red', alpha=0.2) # 그래프 아래 영역 채우기
ax2.set_title('Polar Plot of r(t) = 1 - cos(t)', va='bottom')
ax2.set_ylim(0, 2) # 반지름 범위 설정
ax2.legend()
# 그래프 보여주기
plt.tight_layout()
plt.show()

극좌표계의 구조
-
각도 축: 극좌표계에서tt 축(각도 축)은 원점을 기준으로 하는 방향을 나타냅니다. 각도는 일반적으로 반시계 방향으로 측정되며, 0에서 2π까지 변화합니다.
-
반지름 축: r 축(반지름)은 원점으로부터의 거리로, 특정 각도에 따라 뻗어 있습니다. 반지름은 원점에서 시작하여 외부로 나아가며, 주어진 각도 t에서의 반지름 r 값에 따라 점이 위치하게 됩니다.
-
동심원: 극좌표계는 다양한 반지름에 대해 중심이 같은 원을 그리는 "동심원" 형태로 되어 있습니다. 즉, 반지름 r의 값에 따라 같은 각도 t에서 원의 크기가 결정됩니다.
4. 비교
- 직교좌표계에서는 x축과 y축이 수직으로 만나며, 각 축이 서로의 기준을 이루는 데 반해,
- 극좌표계에서는 각도와 반지름이 서로 독립적인 성질을 가지며, 각도는 방향을, 반지름은 거리를 나타내게 됩니다.
댓글4
-
세상의모든계산기
극좌표계에서의 면적 요소 \(dA\)
1. 부채꼴 형상:
- 극좌표계에서 \(r\)와 \(\theta\)의 변화에 따라 만들어지는 면적 요소는 부채꼴의 형태를 가집니다. 그러나 이 부채꼴은 작아질수록 사각형에 가까워집니다.2. 사각형 근사:
- 부채꼴의 끝부분이 작아질 때, 이를 사각형으로 근사할 수 있습니다. 이때 사각형의 한 변은 \(dr\) (거리에 해당), 다른 변은 \(r \, d\theta\) (각도 변화에 따른 아크 길이에 해당)입니다.
3. 면적 계산:
- 따라서 미소 면적 요소는 다음과 같이 표현할 수 있습니다:
\[
dA = r \, dr \, d\theta
\]
- 여기서 \(r \, d\theta\)는 사각형의 한 변의 길이를 나타내고, \(dr\)는 나머지 변의 길이를 나타냅니다.
- 즉, 사각형의 면적은 다음과 같이 계산할 수 있습니다:
\[
dA \approx (r \, d\theta) \cdot (dr) = r \, dr \, d\theta
\]4. 순서 변경:
- 이 면적 요소는 \(dA = r \, dr \, d\theta\)로 쓸 수 있으며, 순서를 바꿔서도 쓸 수 있습니다. 예를 들어 \(dA = r \, dr \, d\theta\)는 \(dA = dr \cdot r \, d\theta\)와 같이 쓸 수 있습니다. 이는 곱셈의 교환 법칙에 따라 가능하며, 적분할 때에도 상관없이 사용됩니다. -
세상의모든계산기
극좌표 함수의 형태로 나타나는 이중적분
극좌표 함수에서 \(dA = r \, dr \, d\theta\) 형태로 나타낼 수 있는 이중적분 \(\int \int f(r, \theta) \, r \, dr \, d\theta\)는 면적을 계산하는 방식입니다.
이 계산식에서 \(r\)과 \(\theta\)의 변화에 따른 미소 면적의 총합으로 이해할 수 있습니다.
이중적분의 의미
1. 미소 면적의 총합:
- 극좌표계에서 \(dA\)는 미소 면적 요소를 나타냅니다. \(r\)이 변화하고, \(\theta\)도 변화할 때, 각 미소 면적 \(dA\)를 모두 합산하여 전체 면적을 구하는 것이 이중적분의 목적입니다.
- 즉, \(\int_0^{\theta_{\text{max}}} \int_0^{r_{\text{max}}} f(r, \theta) \, r \, dr \, d\theta\)와 같이 표현되는 이중적분은 각 \(r\)에 대한 함수 값 \(f(r, \theta)\)와 면적 요소 \(r \, dr\)를 곱한 후, 이를 \(\theta\)에 대해 적분하여 총 면적을 구하는 과정입니다.2. 변화에 따른 적분:
- \(r\)와 \(\theta\)가 각각의 구간에서 변화할 때, 그 변화에 따른 미소 면적을 구해 적분하는 것이므로, \(t\)의 총 변화(여기서는 \(\theta\)로 표현됨)에 따른 미소 면적의 총합으로 볼 수 있습니다.결론
결국, 극좌표에서의 이중적분은 각 점의 미소 면적 \(dA\)를 합산하여 전체 면적을 구하는 과정입니다.
이때 \(r \, dr \, d\theta\)는 면적 요소로 작용하며, 이는 각각의 \(r\)과 \(\theta\)의 변화에 따른 총 면적을 반영합니다.
따라서 \(\int \int f(r, \theta) \, r \, dr \, d\theta\)는 미소 면적의 총합으로 볼 수 있습니다. 잘 이해하셨습니다!
-
1
세상의모든계산기
이중적분 \(\int_0^{2\pi} \int_0^{\sin(t)} \sqrt{1 - r^2} \cdot r \, dr \, dt\)에서 \(t\)의 변화에 따라 그래프의 변화를 연속적으로 보여주면
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 설정 t_values = np.linspace(0, 2 * np.pi, 100) # t의 변화 범위 # 그래프 초기화 fig, ax = plt.subplots(figsize=(8, 8)) ax.set_xlim(-1.5, 1.5) ax.set_ylim(-1.5, 1.5) ax.set_aspect('equal') ax.set_title('Area under the curve for varying $t$') ax.set_xlabel('$x$') ax.set_ylabel('$y$') # 그래프에 사용할 점과 면적 표시 line_r, = ax.plot([], [], color='blue', label='$r(t) = \sin(t)$') ax.legend() # 면적 다각형 리스트 area_patches = [] total_area = 0 # 총 면적 초기화 area_text = ax.text(-1.4, 1.2, f'Total Area: {total_area:.2f}', fontsize=12) # 애니메이션 업데이트 함수 def update(frame): global total_area # 총 면적을 전역 변수로 설정 t = t_values[frame] r = np.linspace(0, np.sin(t), 100) # r 값 생성 x = r * np.cos(t) # x 좌표 y = r * np.sin(t) # y 좌표 # 면적을 나타내는 다각형 생성 area_patch = plt.Polygon(np.column_stack((x, y)), closed=True, color='lightblue', alpha=0.5) ax.add_patch(area_patch) # 다각형 추가 area_patches.append(area_patch) # 면적 목록에 추가 # 면적 계산 (부채꼴 면적 계산) segment_area = 0.5 * (np.sin(t) ** 2) * t # t에 따른 면적 total_area += segment_area # 총 면적 업데이트 # 선 업데이트 line_r.set_data(np.array([0, x[-1]]), np.array([0, y[-1]])) # 면적 합계 텍스트 업데이트 area_text.set_text(f'Total Area: {total_area:.2f}') return area_patches, line_r, area_text # 애니메이션 생성 ani = FuncAnimation(fig, update, frames=len(t_values), blit=False, repeat=False) # 진행 표시줄 추가 progress_ax = fig.add_axes([0.15, 0.1, 0.7, 0.05]) # 위치 조정 progress_bar = plt.barh([0], [0], color='gray', height=0.1) # 진행 표시줄 progress_ax.set_xlim(0, len(t_values)) progress_ax.set_ylim(-0.5, 0.5) progress_ax.axis('off') # 축 숨기기 # 진행 표시줄 레이블 추가 start_label = progress_ax.text(-1, 0, 'Start: $t=0$', fontsize=10, ha='center') end_label = progress_ax.text(len(t_values)+1, 0, 'End: $t=2\pi$', fontsize=10, ha='center') # 애니메이션 프레임 업데이트 def update_progress(frame): progress_bar[0].set_width(frame) # 진행 표시줄 업데이트 return progress_bar # 진행 표시줄 애니메이션 ani_progress = FuncAnimation(fig, update_progress, frames=len(t_values), blit=False, repeat=False) plt.show()
세상의모든계산기 님의 최근 댓글
HP-39gII 에 ExistOS 설치하기 https://allcalc.org/38526 2025 11.07 1. 왜 검은색이 아닌 다른 색으로 보일까? (제공된 LUT 필터) 제가 제공해 드린 magenta_lens.cube LUT 필터는 540~560nm(녹색-노란색) 파장대의 색상을 '완전히 제거(검은색으로 만듦)'하는 대신, '다른 색상으로 왜곡/변환'하도록 설계되었습니다. * 원리: LUT(Look-Up Table)는 특정 입력 색상(Input RGB)을 미리 정해진 다른 출력 색상(Output RGB)으로 매핑하는 테이블입니다. 이 LUT는 540~560nm에 해당하는 RGB 값들이 들어오면, 검은색(0, 0, 0)이 아닌, 매우 어둡거나 채도가 낮은 특정 색(예: 어두운 올리브색, 갈색 등)으로 변환하라고 지시합니다. * 의도: * 현실적인 물리 필터 시뮬레이션: 실제 고가의 색약 보정 안경도 특정 파장을 100% 완벽하게 차단하지는 못합니다. 빛의 일부를 흡수하고 일부는 통과시키거나 변환하는데, 이 LUT는 그러한 현실 세계의 필터 효과를 더 비슷하게 흉내 냈을 수 있습니다. * 시각적 정보 유지: 특정 색을 완전히 검게 만들면 그 부분의 형태나 질감 정보가 완전히 사라집니다. 하지만 다른 어두운 색으로 대체하면, 색상 정보는 왜곡되더라도 밝기나 형태 정보는 어느 정도 유지되어 전체적인 이미지가 덜 어색하게 보일 수 있습니다. 결론적으로, 스펙트럼 그림에서 해당 대역의 색이 갑자기 '다른 색으로 툭 바뀌는' 현상은, LUT 필터가 "이 파장대의 색은 앞으로 이 색으로 표시해!"라고 강제적으로 지시한 결과이며, 이것이 바로 이 필터가 작동하는 방식 그 자체입니다. 2. 왜 'Color Vision Helper' 앱은 검은색으로 보일까? 비교하신 'Color Vision Helper' 앱은 노치 필터의 원리를 더 이상적(Ideal)이고 교과서적으로 구현했을 가능성이 높습니다. * 원리: "L-콘과 M-콘의 신호가 겹치는 540~560nm 파장의 빛은 '완전히 차단'되어야 한다"는 개념에 매우 충실한 방식입니다. * 구현: 따라서 해당 파장에 해당하는 색상 정보가 들어오면, 어떠한 타협도 없이 그냥 '검은색(RGB 0, 0, 0)'으로 처리해 버립니다. 이는 "이 파장의 빛은 존재하지 않는 것으로 처리하겠다"는 가장 강력하고 직접적인 표현입니다. 2025 11.06 적용사례 4 - 파장 스펙트럼 https://news.samsungdisplay.com/26683 ㄴ (좌) 연속되는 그라데이션 ➡️ (우) 540 이하 | 구분되는 층(색) | 560 이상 - 겹치는 부분, 즉 540~560 nm 에서 색상이 차단? 변형? 된 것을 확인할 수 있음. 그럼 폰에서 Color Vision Helper 앱으로 보면? ㄴ 540~560 nm 대역이 검은 띠로 표시됨. 완전 차단됨을 의미 2025 11.05 빨간 셀로판지로도 이시하라 테스트 같은 숫자 구분에서는 유사한 효과를 낼 수 있다고 합니다. 색상이 다양하다면 빨강이나, 노랑, 주황 등도 테스트해보면 재밌겠네요. 2025 11.05 안드로이드 앱 - "Color Vision Helper" 다운받아 본문 내용을 카메라로 찍어 보니, 본문 프로그램에서는 애매하게 보이던 부분에서도 구분이 완전 확실하게 되네요. 숫자 구분 능력 & 편의성 면에서 압도적이라고 할 수 있겠습니다. 2025 11.05