Показать сообщение отдельно

  #5  
Старый 06.07.2019, 14:32
Roger571
Познающий
Регистрация: 22.07.2015
Сообщений: 58
С нами: 5689694

Репутация: 68
По умолчанию

Цитата:
Сообщение от ALF  

это всё не то.
Не особо понимаю с похмелья что тебе требуется в итоге, но попробуй

Вычисляешь угол между объектами с помощью atan2 и переводишь в кватернион.

Цитата:
Сообщение от Спойлер  


C++:





Код:
void
QuaternionFromAngle
(
float
*
fQuaternion
,
float
fAngle
)
{
fAngle
=
DEGTORAD
(
fAngle
)
;
float
fMatrix
[
3
]
[
3
]
,
c
=
cos
(
fAngle
)
,
s
=
sin
(
fAngle
)
;
// QuaternionRotateZ
fMatrix
[
0
]
[
0
]
=
c
;
fMatrix
[
0
]
[
1
]
=
s
;
fMatrix
[
0
]
[
2
]
=
0.0
;
fMatrix
[
1
]
[
0
]
=
-
s
;
fMatrix
[
1
]
[
1
]
=
c
;
fMatrix
[
1
]
[
2
]
=
0.0
;
fMatrix
[
2
]
[
0
]
=
0.0
;
fMatrix
[
2
]
[
1
]
=
0.0
;
fMatrix
[
2
]
[
2
]
=
1.0
;
// GetQuaternionFromMatrix
fQuaternion
[
0
]
=
sqrt
(
Max
(
(
float
)
0
,
1.0f
+
fMatrix
[
0
]
[
0
]
+
fMatrix
[
1
]
[
1
]
+
fMatrix
[
2
]
[
2
]
)
)
*
0.5f
;
fQuaternion
[
1
]
=
sqrt
(
Max
(
(
float
)
0
,
1.0f
+
fMatrix
[
0
]
[
0
]
-
fMatrix
[
1
]
[
1
]
-
fMatrix
[
2
]
[
2
]
)
)
*
0.5f
;
fQuaternion
[
2
]
=
sqrt
(
Max
(
(
float
)
0
,
1.0f
-
fMatrix
[
0
]
[
0
]
+
fMatrix
[
1
]
[
1
]
-
fMatrix
[
2
]
[
2
]
)
)
*
0.5f
;
fQuaternion
[
3
]
=
sqrt
(
Max
(
(
float
)
0
,
1.0f
-
fMatrix
[
0
]
[
0
]
-
fMatrix
[
1
]
[
1
]
+
fMatrix
[
2
]
[
2
]
)
)
*
0.5f
;
fQuaternion
[
1
]
=
static_cast

(
_copysign
(
fQuaternion
[
1
]
,
fMatrix
[
2
]
[
1
]
-
fMatrix
[
1
]
[
2
]
)
)
;
fQuaternion
[
2
]
=
static_cast

(
_copysign
(
fQuaternion
[
2
]
,
fMatrix
[
0
]
[
2
]
-
fMatrix
[
2
]
[
0
]
)
)
;
fQuaternion
[
3
]
=
static_cast

(
_copysign
(
fQuaternion
[
3
]
,
fMatrix
[
1
]
[
0
]
-
fMatrix
[
0
]
[
1
]
)
)
;
}


Пробуй, вроде должно работать
 
Ответить с цитированием