How to find perpendicular vector to another vector?
There exists an infinite number of vectors in 3 dimension that are perpendicular to a fixed one. They should only satisfy the following formula: $$(3\mathbf{i}+4\mathbf{j}-2\mathbf{k}) \cdot v=0$$
For finding all of them, just choose 2 perpendicular vectors, like $v_1=(4\mathbf{i}-3\mathbf{j})$ and $v_2=(2\mathbf{i}+3\mathbf{k})$ and any linear combination of them is also perpendicular to the original vector: $$v=((4a+2b)\mathbf{i}-3a\mathbf{j}+3b\mathbf{k}) \hspace{10 mm} a,b \in \mathbb{R}$$
Take cross product with any vector. You will get one such vector.
A related problem is to construct an algorithm that finds a non-zero perpendicular vector without branching. If the input vector is N = (a,b,c)
, then you could always choose T = (c,c,-a-b)
but T
will be zero if N=(-1,1,0).
You could always check to see if T
is zero, and then choose T = (-b-c,a,a)
if it is, but this requires a test and branch. I can't see how to do this without the test and branch.