wam
w__am 개발노트
wam
  • 분류 전체보기 (165)
    • CS 지식 (10)
      • 자료구조 (0)
      • 알고리즘 (0)
      • 컴퓨터 구조 (0)
      • 운영체제 (0)
      • 네트워크 (7)
      • 데이터베이스 (0)
      • 디자인 패턴 (3)
    • Frontend (131)
      • Three.js (64)
      • NPM (1)
      • Nest.js (19)
      • React (10)
      • Apollo (7)
      • TypeScript (2)
      • JavaScript (12)
      • HTML, CSS (1)
      • Jest (3)
      • E2E (5)
      • Cypress (7)
    • Database (12)
      • TypeORM (12)
    • IT 지식 (8)
      • 클라우드 서비스 (3)
      • 네트워크 (1)
      • 데이터 포맷 (2)
      • 기타 (2)
    • IT Book (2)
    • 유용한 사이트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 🐱 Github

인기 글

태그

  • three.js 구성 요소
  • 함수 리터럴
  • threejs 개발 할 때 도움을 줄 수 있는 유틸리티
  • 오프-프레미스(off-premise) 방식
  • reactive variables
  • 함수 선언문
  • react 성능 최적화
  • e.preventdefault()
  • 함수의 범위
  • math.cos()
  • math.sin()
  • 초기 환경설정
  • joi 에러
  • Interface
  • 함수 표현식
  • mapped types
  • getelapsedtime()
  • 데이터 포맷
  • type-graphql
  • API
  • isabstract
  • gridhelper
  • 스코프
  • getdelta()
  • 렌더링 성능 최적화
  • Decorators
  • axeshelper
  • 디자인 패턴
  • 원형적인 움직임
  • 삼각함수

최근 글

관리자

글쓰기 / 스킨편집 / 관리자페이지
hELLO · Designed By 정상우.
wam

w__am 개발노트

삼각함수를 이용해 원형적인 움직임을 구현하기
Frontend/Three.js

삼각함수를 이용해 원형적인 움직임을 구현하기

2024. 11. 3. 03:30

 

Math.cos와 Math.sin은 삼각함수를 이용해 각도를 기반으로 한 값을 반환하는 JavaScript의 내장 함수이다.

두 함수는 주로 그래픽, 애니메이션, 주기적인 패턴 생성 등에서 많이 사용된다.

 

 

Math.cos()

 

설명

Math.cos() 함수는 특정 각도의 코사인 값을 반환한다.

이 값은 주어진 각도의 x 축에서의 위치를 의미한다.

 

 

입력 및 반환 값

  • 입력 값은 라디안 단위이다. 예를 들어, 90도는 Math.PI / 2라디안으로 표현된다.
  • 반환 값은 -1에서 1 사이이며, 주기는 2π이다.

 

 

용도

  • 주기적이고 수평적인 움직임(예: 회전하는 물체의 x 위치 계산).
  • 원형 궤도를 따라 이동하는 애니메이션에서의 x 좌표 계산.

 

 

예시

const angle = Math.PI / 4; // 45도
const x = Math.cos(angle); // 45도의 코사인 값은 약 0.707

 

 

Math.sin()

 

설명

Math.sin() 함수는 특정 각도의 사인 값을 반환한다.

이는 주어진 각도의 y 축에서의 위치를 의미한다.

 

 

입력 및 반환 값:

  • 입력 값은 역시 라디안 단위이며, 반환 값은 -1에서 1 사이이다.
  • 사인 함수의 주기 역시 2π이다.

 

 

용도

  • 주기적인 수직적 움직임(예: 회전하는 물체의 y 위치).
  • 원형 궤도를 따라 이동하는 애니메이션에서의 y 좌표 계산.

 

 

예시

const angle = Math.PI / 4; // 45도
const y = Math.sin(angle); // 45도의 사인 값은 약 0.707

 

 

Math.cos와 Math.sin의 관계 및 예제

 

이 두 함수는 주기적이고 원형적인 움직임을 구현할 때 자주 함께 사용된다.

예를 들어, 어떤 물체가 원형 궤도를 따라 움직이도록 하려면, 다음과 같이 x와 y 좌표에 코사인과 사인 값을 곱해 위치를 업데이트할 수 있다.

const clock = new THREE.Clock();
const time = clock.getElapsedTime();

const radius = 5; // 원의 반지름
const angle = time; // 시간에 따라 각도 변화

const x = Math.cos(angle) * radius;
const y = Math.sin(angle) * radius;

이 코드에서 x와 y는 시간이 지나면서 각도에 따라 변하여, 물체가 반지름이 5인 원을 그리며 이동하도록 한다.

 

 

삼각함수 설명

a가 1이라면 ?

  • 결국 sin는 b가 되고, cos는 c가 된다.

 

 

Cosine은 x 좌표를 가리킨다.

  • c = x축
  • const x = Math.cos(angle) x축은 코사인을 사용

 

 

Sin은 y 좌표를 가리킨다.

  • b = y축
  • const y = Math.sin(angle) y축은 사인을 사용

 

 

2D가 아닌 3D 일 경우

y축은 제외하고 x축과 z축에서 원운동을 만드면 된다.

const z = Math.sin(angle) z축을 사인으로 사용

 

 

원을 그리게 되는 원리

 

  1. 시간을 각도로 사용:
    • clock.getElapsedTime()을 사용하여 시간의 흐름을 각도로 변환하고 있다.
    • 시간(time)은 점진적으로 증가하면서 각도 역할을 하게 되어 물체가 한 방향으로 계속 회전하도록 한다.

  2. 각도에 따른 x와 z 좌표 계산:
    • Math.cos(time) x 좌표를 구하며, 코사인 값은 각도에 따라 1에서 -1 사이로 변한다.
    • Math.sin(time) z 좌표를 구하며, 사인 값 역시 각도에 따라 1에서 -1 사이로 변한다.
    • 두 값이 함께 변하면서, (x, z) 좌표가 원형 경로를 따라 이동하게 된다.

 

 

 

 

저작자표시 변경금지 (새창열림)

'Frontend > Three.js' 카테고리의 다른 글

조명, 그림자(Shadow) 처리하기  (0) 2024.11.08
조명, Light 애니메이션  (0) 2024.11.03
시간 흐름 측정, getDelta()와 getElapsedTime()  (0) 2024.11.03
조명, Light 기본 사용법 (AmbientLight, DirectionalLight, AxesHelper)  (0) 2024.10.31
재질, Material에 Canvas 사용하기  (0) 2024.10.29
    'Frontend/Three.js' 카테고리의 다른 글
    • 조명, 그림자(Shadow) 처리하기
    • 조명, Light 애니메이션
    • 시간 흐름 측정, getDelta()와 getElapsedTime()
    • 조명, Light 기본 사용법 (AmbientLight, DirectionalLight, AxesHelper)
    wam
    wam

    티스토리툴바