Comments (3)
At the time of this writing, there is no specialized function (though I'll add one in the next week or two). So the way to go for now is to just use quaternion multiplication. For example, if you have a 3-vector v
(as a list or numpy array, for example) you can convert it to a quaternion as
V = quaternion.quaternion(0, *v)
Then you can rotate it as
Vprime = R * V * R.conj()
[If you're not sure if R
will be precisely normalized, you might want to use R.inv()
instead of R.conj()
.] You can then get just the vector components as a numpy array with
Vprime.vec
This, of course, is relatively slow because the operation count is higher than it needs to be (32 multiplies and 24 adds). I can cut the operation count almost in half (18 multiplies and 12 adds) by using a specialized function. I'll leave this open until I implement that.
from quaternion.
Has there been any progress on this? the ability to apply Quaternions to vectors is likely to be a key component in any project that uses Quaternions.
from quaternion.
As I said above, it is currently possible, it's just that it could be made more efficient. I've been trying to figure out the best approach, because numpy doesn't make this particular task very easy.
I will say that if you're interested in using the same quaternion to rotate multiple vectors — as opposed to using different quaternions for each rotation — it's most efficient to convert the quaternion to a rotation matrix (using quaternion.as_rotation_matrix
), and then use numpy.
But achieving my original objective is proving more difficult than I had hoped. I'll keep this thread posted with any developments.
from quaternion.
Related Issues (20)
- osx-arm64 conda HOT 1
- [2022.2.9.19.55.57] Numpy compatibility with Linux wheel HOT 3
- Add a function to rotate vector with a quaternion HOT 6
- Error while running quaternion.as_rotation_matrix HOT 1
- None check fails HOT 1
- angular_velocity() output format HOT 2
- Euler angles are horrible, and so are quaternions HOT 2
- Documentation should clarify that the quaternions are defined using an active rotation convention HOT 2
- `np.sum` breaks in latest Numpy
- Object mode fallback deprecation in numba.jit
- Version number of latest release HOT 1
- Add a rotation example into the documentation HOT 1
- possible docstring error HOT 2
- add from_euler_angles equivalent for Tait-Bryan angles HOT 1
- slight improvement to "Why Euler angles are horrible"
- Identity decorator exception HOT 1
- Scalar quaternion objects are mutable HOT 1
- `cumprod()` with quaternions crashes HOT 5
- Computation Error: from euler angles to quaternion HOT 1
- Build problem on arm32v7 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quaternion.