# Find orthogonal vector to current vector in 3D

1. Dec 17, 2012

### lemd

Hi,

In 2D I know a simple answer: vector (a,b) is orthogonal to vector (-b,a)

Is there anyway similar to that to find an orthogonal vector in 3D?

2. Dec 17, 2012

### Edgardo

You can use the dot product. For example, if you have a vector v and want to find vector c that is orthogonal to v, then use the dot product <v,c> and set it equal to 0.

Example:
v = (4,2,3)
c = (x,y,z) = ?

(i) Set the dot product to zero:
<v,c> = 4x + 2y + 3z = 0

(ii) Choose some values for x and y, e.g. x=0 and y=-3

(iii) Solve the equation in (i) for z:
z = 1/3*(-4x-2y) = 1/3*(0+6) = 2

Result: c = (0,-3,2)

---

Another possibility is to use the cross product.
If vector v is given, choose some vector p (not parallel to v) and form the vector c = v x p.

Example:
v = (4,2,3)

(i) Choose an arbitrary vector p (not parallel to v):
p = (0,0,1)

(ii) Form the vector c = v x p (cross product):
c = (4,2,3) x (0,0,1) = (2,-4,0)

---

Note that there are infinitely many vectors that are orthogonal to a given vector.

3. Dec 17, 2012

### lemd

Many thanks

I knew dot and cross product, but because I write code so I need the simplest way to boost performance. As in 2D case I don't need to calculate anything, just use the trick. Also that it works for normalized vectors which doesn't need square root, a slow operation. I hope there are some tricks like that in 3D

Regards

4. Dec 17, 2012

### AlephZero

There isn't a unique vector orthogonal to a given vector in 3D. If the vector doesn't need to have any other properties, the same "trick" works. A vector orthogonal to (a, b, c) is (-b, a, 0), or (-c, 0, a) or (0, -c, b).

But if you want a unit orthogonal vector, you will have to use something like a square root.

Last edited: Dec 17, 2012