2025/04/05 4

GLUT 콜백 함수 정리

🪟 GLUT 윈도우 콜백 함수 완전 정복 (기초 개념부터 설명!)OpenGL을 배우다 보면 콜백 함수(callback function)라는 개념이 자주 나와요.특히 GLUT 라이브러리를 사용할 때는, 콜백 함수를 등록해서 윈도우 이벤트에 반응하는 것이 기본 중의 기본이에요!그런데 처음 프로그래밍을 배우는 입장에서는 “콜백 함수가 뭔데?”,“내가 직접 호출하지도 않는 함수를 왜 등록해?” 같은 궁금증이 들 수 있어요.📣 콜백 함수란 무엇인가요?콜백 함수는 특정 이벤트가 발생했을 때, 시스템이 자동으로 호출해주는 함수예요.우리가 직접 호출하지 않아도, GLUT가 알아서 적절한 타이밍에 호출해줘요.🎯 쉬운 비유: 음식 배달 앱음식 배달 앱에서 주소를 등록하면, 배달원이 도착했을 때 그 주소로 자동으로 찾..

OpenGL에서 기하 변환의 처리

🧭 OpenGL에서는 기하 변환이 어떻게 처리될까?앞에서 우리는 점과 벡터, 어파인 결합, 이동·회전·스케일·밀림 변환, 그리고 합성 변환까지 다양한 기하 변환의 이론을 수학적으로 배웠습니다.그렇다면 이제 이 개념들이 실제 OpenGL과 같은 그래픽스 시스템에서는 어떻게 구현될까요?💡 동차 좌표와 행렬 곱으로 처리되는 변환OpenGL에서는 모든 정점의 좌표를 내부적으로 동차 좌표(homogeneous coordinate) 로 표현합니다.예를 들어, 2D 점 (x, y)은 (x, y, 1),3D 점 (x, y, z)은 (x, y, z, 1)로 표현됩니다.이러한 동차 좌표 덕분에 이동(translation) 과 같은 변환도 행렬 곱 하나로 처리할 수 있습니다.즉, OpenGL에서는 다음과 같이 각 정점에..

합성 변환과 해석

🔄 합성 변환: 고정점을 기준으로 회전하기지금까지 우리는 주로 원점(0, 0)을 기준으로 한 회전만 다뤄왔습니다.하지만 실제 그래픽스에서는 임의의 점, 예를 들어 (1, 1) 같은 점을 기준으로 물체를 회전시켜야 할 일이 자주 발생합니다.이때 단순히 회전 행렬만 사용하는 것으로는 원하는 결과를 얻을 수 없습니다. 왜 그런지, 그리고 어떻게 해결하는지 차근차근 예시와 함께 살펴보겠습니다.❌ 첫 번째 시도: 그냥 회전만 하기 (잘못된 결과)아래는 점 (1, 1)을 기준으로 도형(삼각형)을 90도 회전시키고 싶은 상황입니다.이때 단순히 위와 같은 회전 행렬을 적용했다면:이 행렬은 원점(0, 0) 을 기준으로 90도 회전시키는 행렬입니다. 따라서 삼각형은 회전은 하지만, 원점 기준으로 도는 것이기 때문에 회전..

어파인 변환의 해석

📐 어파인 변환의 해석: 고정좌표계 vs 지역좌표계✅ 1. 객체의 변환 (Fixed Coordinate System, 고정좌표계)이 방식은 우리가 가장 자주 사용하는 형태입니다.좌표계(기준축)는 고정되어 있고,객체(점이나 도형)가 변환 행렬에 의해 변형됩니다.📌 수식:q' = XqX: 변환 행렬 (회전, 스케일, 이동 등 포함)q: 원래의 점 좌표 (동차좌표)q': 변환된 점의 좌표 (동일한 기준축에서 본)📌 슬라이드 해석:➡️ 객체가 고정 좌표계 기준으로 회전하고 이동된 것처럼 해석✅ 2. 좌표계의 변환 (Local Coordinate System, 지역좌표계)이번에는 반대입니다!객체는 그대로 두고,우리가 보는 좌표계가 바뀌는 경우를 생각해요.📌 수식:q' = Xq하지만 해석이 다릅니다:q: 점..