Sign up ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Is there a way to get the result of a cross product to be normalized after just a cross action, i.e. without doing after the cross v/|v|? (the vectors involved are not normalized, but they are orthogonal).

share|cite|improve this question
Why do you not want to perform a normalization after the cross product? – J. M. is back. May 3 '11 at 13:22
I am going to implement it in electrical hardware, normalizing vectors (making then unit vectors) is a costly procedure for me. And since I always need my cross products to be normalized I would prefer to implement the normalization in the cross to save time and calculation units. – Ilya Melamed May 3 '11 at 13:25
If you really want to do less work, why normalise it at all? – Raskolnikov May 3 '11 at 15:10
Hi, Ilya, I am assuming you do need the resulting vectors to be normalized, I don't think there is a way to parallel the normalization with the cross product, but there are many fast inverse square root algorithms, e.g. Newton's method, please refer to – Shuhao Cao May 3 '11 at 17:15
One can actually set things up so that you can (iteratively) compute $\sqrt{x^2+y^2}$ (probably) more cheaply than squaring $x$ and $y$ and rooting their sum. If you're interested in that, you can ask a separate question and I'll be happy to elaborate. – J. M. is back. May 4 '11 at 12:59

1 Answer 1

up vote 1 down vote accepted

If two vectors are orthogonal, then the length of their cross product is the product of their lengths. So if by "normalized" you mean length $1$, just divide by the product of the lengths of the two vectors.

share|cite|improve this answer
calculating the length of a vector is a costly procedure, it requires 3 actions of ^2 and a sqrt, and then another multiplicator and a devider, those are costly units in both time and space I'm looking for some other way. – Ilya Melamed May 3 '11 at 13:32
OK, I was answering the original version of the problem, where none of this was clear. But what makes you think there's a way to get a normalized vector without doing the work? There's no such thing as a free lunch. If you could do what you want, you could normal-cross $u=(a,b,c)$ with $v=(b,-a,0)$, then normal-cross the result with $v$ to get $u/|u|$, and thus get $|u|$ without any squaring or square root. Doesn't seem likely. – Gerry Myerson May 3 '11 at 13:40
I don't know if there is such a way, I just hope so. – Ilya Melamed May 3 '11 at 13:45
@Ilya: Is polar form cheaper? – Emre May 3 '11 at 16:31
@Emre: What is polar form? using sin? No, making a sin func is way more costly. – Ilya Melamed May 3 '11 at 21:22

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.