Git Product home page Git Product logo

Comments (3)

moble avatar moble commented on July 29, 2024

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.

DrHibbitts avatar DrHibbitts commented on July 29, 2024

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.

moble avatar moble commented on July 29, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.