Go에서 삼각함수로 진행된 전진방향 처리가 막혔기 때문에 총괄해 봤습니다.
Go에서 삼각함수로 전진방향 처리를 막았기 때문에 총괄한다.
추억의 RPG 게임이라는 캐릭터가 움직이는 인상.
코드는 여기.입니다.
마지막 요점은 다음과 같은 두 가지다.
호도(영:radian, 기호:rad)는 국제 단위 시스템(SI)에서 각도(평면 각도)의 단위입니다.
원의 반지름과 같은 길이의 호를 가로채는 두 반지름으로 구성된 각도의 값으로 정의됩니다.
var angle float64
angle = 90
var radian float64
// ラジアン変換
radian = angle * math.Pi / 180
math.Cos(radian)
math.Sin(radian))
결과:각도 90도에서 Cos: 6.12339957736757e-17Sin: 1
각도 270도에서 Cos: -1.86970722e-16Sin: 1
무리수의π를 사용하여 호도를 계산했기 때문일 수 있으며,cos90°,cos270°로 끝수가 생겼다.
math.Floor(math.Cos(radian))
math.Floor(math.Sin(radian))
결과:각도 90도에서 Cos:0Sin:1
각도 270도에서 Cos: 1Sin: 1
버리다의 코스270°는 0이 아니라 -1이다.
math.Ceil(math.Cos(radian))
math.Ceil(math.Sin(radian)))
결과:각도 90도에서 Cos:1Sin:1
각도가 270도이면 Cos:-0Sin:1
평가절상 결과는 0.0000...의 코스90°는 0이 아니라 1이다.
math.Round(math.Cos(radian))
math.Round(math.Sin(radian))
결과:각도 90도에서 Cos:0Sin:1
각도가 270도이면 Cos:-0Sin:1
신경 쓰이지만 코스, 인을 잘 계산했어요.
전진 방향 처리
이런 느낌으로 각도를 바꾸면 x축 방향, y축 방향의 이동을 처리할 수 있다.
for i:=0; i<4; i++{
radian = angle * math.Pi / 180
x = x + math.Round(math.Cos(radian))*10
y = y + math.Round(math.Sin(radian))*10
angle = angle + 90
}
이상, 끝까지 읽어주셔서 감사합니다.전체 코드
package main
import (
"fmt"
"math"
)
func main() {
var angle float64
angle = 90
var radian float64
var x, y float64
for i := 0; i < 8; i++ {
radian = angle * math.Pi / 180
fmt.Println("そのまま 角度:", angle, " Cos:", math.Cos(radian), " Sin:", math.Sin(radian))
fmt.Println("切り捨て 角度:", angle, " Cos:", math.Floor(math.Cos(radian)), " Sin:", math.Floor(math.Sin(radian)))
fmt.Println("切り上げ 角度:", angle, " Cos:", math.Ceil(math.Cos(radian)), " Sin:", math.Ceil(math.Sin(radian)))
fmt.Println("四捨五入 角度:", angle, " Cos:", math.Round(math.Cos(radian)), " Sin:", math.Round(math.Sin(radian)))
x = x + math.Cos(radian)
y = y + math.Sin(radian)
angle = angle + 90.0
}
fmt.Println("そのまま")
x, y = 5, -5
angle = 90
for i := 0; i < 8; i++ {
radian = angle * math.Pi / 180
x = x + math.Cos(radian)*10
y = y + math.Sin(radian)*10
fmt.Println("角度:", angle, x, y)
angle = angle + 90.0
}
fmt.Println("切り捨て")
x, y = 5, -5
angle = 90
for i := 0; i < 8; i++ {
radian = angle * math.Pi / 180
x = x + math.Floor(math.Cos(radian))*10
y = y + math.Floor(math.Sin(radian))*10
fmt.Println("角度:", angle, x, y)
angle = angle + 90.0
}
fmt.Println("切り上げ")
x, y = 5, -5
angle = 90
for i := 0; i < 8; i++ {
radian = angle * math.Pi / 180
x = x + math.Ceil(math.Cos(radian))*10
y = y + math.Ceil(math.Sin(radian))*10
fmt.Println("角度:", angle, x, y)
fmt.Println("角度:", angle, x, y)
angle = angle + 90.0
}
fmt.Println("四捨五入")
x, y = 5, -5
angle = 90
for i := 0; i < 8; i++ {
radian = angle * math.Pi / 180
x = x + math.Round(math.Cos(radian))*10
y = y + math.Round(math.Sin(radian))*10
fmt.Println("角度:", angle, x, y)
angle = angle + 90.0
}
}
결과 내보내기
のまま 角度: 90 Cos: 6.123233995736757e-17 Sin: 1
切り捨て 角度: 90 Cos: 0 Sin: 1
切り上げ 角度: 90 Cos: 1 Sin: 1
四捨五入 角度: 90 Cos: 0 Sin: 1
そのまま 角度: 180 Cos: -1 Sin: 1.2246467991473515e-16
切り捨て 角度: 180 Cos: -1 Sin: 0
切り上げ 角度: 180 Cos: -1 Sin: 1
四捨五入 角度: 180 Cos: -1 Sin: 0
そのまま 角度: 270 Cos: -1.8369701987210272e-16 Sin: -1
切り捨て 角度: 270 Cos: -1 Sin: -1
切り上げ 角度: 270 Cos: -0 Sin: -1
四捨五入 角度: 270 Cos: -0 Sin: -1
そのまま 角度: 360 Cos: 1 Sin: -2.449293598294703e-16
切り捨て 角度: 360 Cos: 1 Sin: -1
切り上げ 角度: 360 Cos: 1 Sin: -0
四捨五入 角度: 360 Cos: 1 Sin: -0
そのまま 角度: 450 Cos: 3.0616169978683787e-16 Sin: 1
切り捨て 角度: 450 Cos: 0 Sin: 1
切り上げ 角度: 450 Cos: 1 Sin: 1
四捨五入 角度: 450 Cos: 0 Sin: 1
そのまま 角度: 540 Cos: -1 Sin: 3.6739403974420544e-16
切り捨て 角度: 540 Cos: -1 Sin: 0
切り上げ 角度: 540 Cos: -1 Sin: 1
四捨五入 角度: 540 Cos: -1 Sin: 0
そのまま 角度: 630 Cos: -4.28626379701573e-16 Sin: -1
切り捨て 角度: 630 Cos: -1 Sin: -1
切り上げ 角度: 630 Cos: -0 Sin: -1
四捨五入 角度: 630 Cos: -0 Sin: -1
そのまま 角度: 720 Cos: 1 Sin: -4.898587196589406e-16
切り捨て 角度: 720 Cos: 1 Sin: -1
切り上げ 角度: 720 Cos: 1 Sin: -0
四捨五入 角度: 720 Cos: 1 Sin: -0
そのまま
角度: 90 5.000000000000001 5
角度: 180 -4.999999999999999 5.000000000000001
角度: 270 -5.000000000000001 -4.999999999999999
角度: 360 4.999999999999999 -5.000000000000002
角度: 450 5.000000000000002 4.999999999999998
角度: 540 -4.999999999999998 5.000000000000002
角度: 630 -5.000000000000003 -4.999999999999998
角度: 720 4.999999999999997 -5.0000000000000036
切り捨て
角度: 90 5 5
角度: 180 -5 5
角度: 270 -15 -5
角度: 360 -5 -15
角度: 450 -5 -5
角度: 540 -15 -5
角度: 630 -25 -15
角度: 720 -15 -25
切り上げ
角度: 90 15 5
角度: 90 15 5
角度: 180 5 15
角度: 180 5 15
角度: 270 5 5
角度: 270 5 5
角度: 360 15 5
角度: 360 15 5
角度: 450 25 15
角度: 450 25 15
角度: 540 15 25
角度: 540 15 25
角度: 630 15 15
角度: 630 15 15
角度: 720 25 15
角度: 720 25 15
四捨五入
角度: 90 5 5
角度: 180 -5 5
角度: 270 -5 -5
角度: 360 5 -5
角度: 450 5 5
角度: 540 -5 5
角度: 630 -5 -5
角度: 720 5 -5
Reference
이 문제에 관하여(Go에서 삼각함수로 진행된 전진방향 처리가 막혔기 때문에 총괄해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/megane_otoko/articles/049_golang_x_y_move텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)