막상 풍선을 실제로 날리는걸 구현하려고 하니까, 어떻게 풍선을 움직이는 매개체; 바람을 구현할지 의문이 들었다.
## 일직선으로 날리기
사실 처음 생각한 방법이 이거였다.
근데 이런 건 인공위성 같다는 의견을 받은 뒤로 이런 방식은 왠지 불편해졌다.
일직선으로 도는건 계속 같은 장소만 반복하니 좋지 않아보인다.
## 실제 바람을 시뮬레이션 하기
그래서 가장 더 그럴 싸한 바람을 생각했다. 실제 바람을 어디선가 제공할 것 같은 기분이 들었기 때문이다.
찾아보니 유럽이나 미국에서 지구 바람과 기온을 예측하는 모델을 가지고 있고, 이 데이터를 제공하고 있었다. (GFS 같은것)
….나는 좀 더 단순한 모델이 필요하다. (컴퓨팅 비용때문에)
그래도 얻은 건 있다. 바람은 극지방으로 움직이기보다는 옆으로 도는 것 같다. 그리고, 대륙은 바람이 느리고 바다가 역시 풍속이 빠르다.
풍선을 날렸을때 옆으로 가야 사람이 사는 대륙으로 이동할 수 있을 것 같고, 바다인 경우엔 빠르게 다름 대륙으로 날려보내야 할것 같다.
## sin 그래프를 따라 움직이기
풍선을 일정한 sin그래프를 따라 움직이게 하면 좀 그럴싸해보일 것 같다.
대충 이렇게 움직이면 좋을 것 같다.
편의를 위해 모든 풍선이 같은 함수 (위도만 바꿔서)로 움직이고, 주기적으로 sin그래프를 조금씩 수정하면 좋을 것 같다.
풍선은 위도만 다른 같은 웨이브를 따라 움직이는데, 경도만 다른 지역에서 풍선을 날리면 아래와 같은 모습이 될것이다.
별 대단한건 없고 식은 아래와 같게된다. (라디안 아니고 도 단위)
## 계산은 너가해
이전에 풍선의 위치를 갱신하는데 있어서 컴퓨팅 처리가 부담된다고 했었는데,
이점을 해결할 수 있는 방법이 있다.
계산을 유저에게 위임하는 것이다. 사실 유저의 컴퓨팅 파워를 뺏는걸 좋은 방법이라고 할 수는 없지만, 실시간으로 움직이게 하는 것도 가능해진다.
서버는 파라미터 몇개와 (A, B, C, t, v) 풍선들의 시작 좌표를 던져주면 유저의 클라이언트가 알아서 계산하고 구글 맵에 풍선을 띄워주면 될것 같다.
너무 유저에게 부담될것 같으면 풍선을 무작위로 선택해서 샘플링 해주는 것도 나쁘지 않아 보인다. 사실 너무 많으면 징그럽기도 하고..
물론 결국 노래를 추천받을때는 풍선을 클릭해야 하고, 내 위치와 풍선의 위치가 가까운지 검증해야 하니 그때는 서버도 계산을 해야 할 것이다. 또, 파라미터를 바꿀때는 시작 좌표를 실제 좌표로 갱신해야 할것이다.
하지만 이런 경우는 흔하지 않으니 상관없다.
'프로그래밍 > A music in a balloon' 카테고리의 다른 글
# 13 QueryDSL 도입하기 (0) | 2024.07.09 |
---|---|
# 12 프론트 개발 - 지도와 위치 정보 (0) | 2024.06.24 |
# 10 스프링 예외처리 (1) | 2024.06.06 |
# 9 프로젝트 수정 (0) | 2024.06.06 |
# 8 깃허브 엑션 테스트 적용기 (0) | 2024.06.05 |