 
 
 
 
 
 
Re: Generating Two Unit Orthogonal Vectors to a 3D Vector
- To: mathgroup at smc.vnet.net
- Subject: [mg36366] Re: Generating Two Unit Orthogonal Vectors to a 3D Vector
- From: Selwyn Hollis <slhollis at earthlink.net>
- Date: Tue, 3 Sep 2002 01:41:09 -0400 (EDT)
- References: <akv7s5$fl8$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
My 2 cents' worth:
OrthogonalUnitVectors[v:{_, _, _}] :=
   With[{u = Which[
             (w = {0,v[[3]],-v[[2]]}).w != 0, w,
             (w = {v[[3]],0,-v[[1]]}).w != 0, w,
             (w = {v[[2]],-v[[1]],0}).w != 0, w ] },
   #/Sqrt[#.#]& /@ {u, Cross[u,v]}]
---
Selwyn Hollis
David Park wrote:
> There are many cases in graphics, and otherwise, where it is useful to
> obtain two orthogonal unit vectors to a given vector. I know a number of
> ways to do it, but they all seem to be slightly inelegant. I thought I would
> pose the problem to MathGroup. Who has the most elegant Mathematica
> routine...
> 
> OrthogonalUnitVectors::usage = "OrthogonalUnitVectors[v:{_,_,_}] will return
> two unit vectors orthogonal to each other and to v."
> 
> You can assume that v is nonzero.
> 
> David Park
> djmp at earthlink.net
> http://home.earthlink.net/~djmp/
> 
> 

