C'est probablement plus une question d'algèbre linéaire, mais disons que j'ai un SCNVector et que je veux un nouveau SCNVector qui soit incliné par rapport à l'original autour de l'axe y (ou n'importe quel axe). Donc idéalement:Faire pivoter SCNVector3 autour d'un axe
extension SCNVector3 {
// assume dot, cross, length, +, - functions are available.
enum Axis {
case x, y, z
}
func rotatedVector(aroundAxis: Axis, angle: Float) -> SCNVector3 {
// code from smart person goes here
}
}
par exemple. (0,0,-1).rotatedVector(aroundAxis: y, angle: pi/2) = (1,0,0)
Merci!
Est-ce que c'est pour l'espace droitier ou gaucher? –
Emm ... Je traite toujours avec droitier avec angle de rotation theta - CCW contre la direction de l'axe. Il semble que la maniabilité est importante ici pour le deuxième terme qui contient le produit vectoriel. Mais il contient aussi une fonction sinusoïdale, donc je ne peux pas dire - que la maniabilité influence le résultat - cela dépend de la convention sur la direction des angles. – MBo