교과서 속 겨냥도가 화면에서 살아 움직인다! — 3D 입체도형 공간 회전 시뮬레이터 & 나만의 3D 가상 조각 전시관
📐 초등 5~6학년 수학 '직육면체와 정육면체', '각기둥과 각뿔' 및 미술 '입체 조형' 융합 — 종이 교과서의 평면 겨냥도만으로는 보이지 않는 모서리와 꼭짓점을 마우스나 손가락 터치로 360도 자유롭게 돌려보며 공간 지각력을 기르고, 여러 입체도형을 블록처럼 쌓아 나만의 가상 조각상(Sculpture)을 완성해보는 3D 수학 융합 교구입니다.
📖 한 줄 정의
심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).
학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.
1. 3대 핵심 분석 비교표
| 무엇이 바뀌었나요? / 영역 | 초보자를 위한 쉬운 설명 | 이렇게 한번 써보세요! |
|---|---|---|
| 평면 겨냥도 vs 360도 3D 인터랙션 | 점선과 실선으로 상상하던 보이지 않는 면과 모서리를 손끝으로 돌려보며 직관적으로 확인합니다. | 마우스 드래그로 각기둥을 돌리며 꼭짓점(vertex) 개수 세기 미션. |
| 무거운 Three.js 없이 순수 Canvas 3D 수식 | 외부 3D 엔진(Three.js 등 CDN) 없이 3차원 좌표 변환 삼각함수 공식만으로 브라우저에 직접 렌더링합니다. | 인터넷이 차단된 교실 크롬북에서도 60fps로 매끄럽게 구동. |
| 입체 조각 조합 모드 | 정육면체, 삼각기둥, 사각뿔 등을 레고 블록처럼 쌓아 올려 나만의 디지털 조각품을 만듭니다. | 완성된 조각상을 회전 뷰어로 감상하며 조형미와 부피(volume) 계산. |
2. 핵심 아키텍처 해설
① 3D 입체도형 정점(Vertex) 좌표: SHAPES 상수
const SHAPES = {
cube: {
name: "정육면체",
vertices: [
[-50, -50, -50], [50, -50, -50], [50, 50, -50], [-50, 50, -50],
[-50, -50, 50], [50, -50, 50], [50, 50, 50], [-50, 50, 50]
],
edges: [
[0,1],[1,2],[2,3],[3,0], [4,5],[5,6],[6,7],[7,4], [0,4],[1,5],[2,6],[3,7]
],
faces: 6, verticesCount: 8, edgesCount: 12
}
};
외부 3D 모델 파일(.obj/.gltf)을 다운로드할 필요 없이 8개의 정점 좌표와 12개의 모서리 연결 규칙을 상수로 심어두는 심기 모드(데이터 임베딩) 구조입니다.
② 순수 삼각함수 기반 3D 회전 투영 엔진
function project(x, y, z, angleX, angleY, fov = 300) {
// Y축 회전
let cosY = Math.cos(angleY), sinY = Math.sin(angleY);
let x1 = x * cosY + z * sinY;
let z1 = -x * sinY + z * cosY;
// X축 회전
let cosX = Math.cos(angleX), sinX = Math.sin(angleX);
let y2 = y * cosX - z1 * sinX;
let z2 = y * sinX + z1 * cosX;
// 2D 원근 투영(Perspective Projection)
let distance = fov / (fov + z2 + 200);
return {
px: x1 * distance + 200,
py: y2 * distance + 180
};
}
수학 시간에 배우는 삼각비(sin, cos)가 화면 속 물체를 회전시키는 핵심 원리임을 코드로 증명하는 강력한 수학 융합 아키텍처입니다.
③ 모서리(Edge) 렌더링 및 겨냥도 모드
뒷면에 가려진 모서리를 점선(dashed line)으로 표시하는 '겨냥도 모드 토글'을 탑재하여 초등 수학 성취기준의 핵심 개념을 완벽하게 지원합니다.
3. 초보자를 위한 바이브 코딩 실전 사용 예시
- 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
- 역질문 답변 — 제미나이가 묻는 입체도형 종류(정육면체, 각뿔 등)에 답합니다.
- HTML 파일 실행 — 메모장에 붙여넣고
3D도형시뮬레이터.html로 저장 후 더블클릭합니다.
제미나이 전용 에러 제로 프롬프트
[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: Three.js 등 외부 3D CDN 라이브러리 없이 순수 HTML5 Canvas와 삼각함수 투영 수식으로 3D 회전 및 렌더링을 완성한다.
2. 심기 모드(데이터 임베딩): const SHAPES = {...} 상수에 정육면체, 직육면체, 삼각기둥, 사각뿔의 정점(vertices) 및 모서리(edges) 좌표를 내장한다.
3. 360도 터치/드래그 회전: 캔버스 위에서 마우스 드래그 또는 모바일 터치 스와이프로 X축/Y축 각도를 부드럽게 회전시키는 인터랙션을 구현한다.
4. 겨냥도 전환 토글: 버튼 클릭 시 뒷면 모서리를 점선으로 투시하는 '겨냥도 모드'와 실선만 보이는 '입체 모드'를 전환할 수 있게 한다.
5. 학생 개인정보 0: 학생 실명 입력 없이 조작 결과만 브라우저 세션에 유지한다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.
[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 초등 5~6학년 수학 교육과정에 맞춰 기본 제공할 입체도형 3~4가지는 무엇으로 정할까요?
2. 도형의 면 색상을 반투명 파스텔 톤으로 채우는 '면 칠하기' 옵션도 추가할까요?
3. 정점, 모서리, 면의 개수를 화면 한편에 실시간 카운터 배지로 보여줄까요?
🎯 에디터 한줄평
"겨냥도 앞에서 턱을 괴고 눈을 감은 채 머릿속으로 도형을 돌려보던 아이들에게 마우스 터치 한 번으로 3D 세계를 열어줍니다. 외부 라이브러리 하나 없이 순수 삼각함수 10줄로 화면에 공간감이 피어나는 순간, 수학은 더 이상 시험지 위의 문제가 아니라 세상을 빚어내는 살아있는 언어가 됩니다."
📚 기술·교육 참고 링크
- 컴퓨터 그래픽스 기초: 3D 원근 투영(Perspective Projection) 공식 해설
- 교육과정 연계: 초등 5~6학년 수학(직육면체와 정육면체, 각기둥과 각뿔), 미술(입체 조형과 공간)