Vector Translation

I have two three component vectors, lets call them $\vec x$ and $\vec y$.

I want to find $\vec z$ such that $\|\vec z\| = \|\vec x\|$ and the $x$ and $y$-orientation of $\vec z$ equals the x and y-orientation of $\vec y$.

EDIT: And the z-component contribution in $\vec x$ is matched in $\vec z$.

Basically I want to find the vector for an object that's falling just as fast who's heading is different. Is this possible?

• By "x and y-orientation of $\vec z$ equals the x and y-orientation of $\vec y$" you mean that that $\vec z$ points in the same direction as $\vec y$? Then it should be $\frac{||x||}{||y||}\vec y$...maybe $\pm$ if you allow the oposite direction as well... – draks ... Jun 18 '15 at 13:11
• @draks... Yes I do mean that $\vec z$ will point in the same direction as $\vec y$ within the xy-plane, but I don't understand your equation. – Jonathan Mee Jun 18 '15 at 13:13
• I normalize $\vec y$ by dividing it by its norm $||\vec y||$ and then a scale it to the desired length by multiplying it with $||\vec x||$... – draks ... Jun 18 '15 at 13:14
• oh I forgot the third dimension, let me think...[thinking]...I thought and it it should look like this$\frac{||\vec x||}{\sqrt{y_1^2+y_2^2+a^2}}\pmatrix{y_1\\y_2\\a}$... – draks ... Jun 18 '15 at 13:16

If $\vec y=\pmatrix{y_1\\y_2\\y_3}$, then it should look like this: $$\vec z=\sqrt{\frac{x_1^2+x_2^2+x_3^2}{y_1^2+y_2^2+a^2}}\pmatrix{y_1\\y_2\\a};$$ it has $x$ and $y$ components of $\vec y$ and the length of $||\vec x||$. Now choose $$a\sqrt{\frac{x_1^2+x_2^2+x_3^2}{y_1^2+y_2^2+a^2}}=x_3$$ and solve it for $a$...

• I'm unclear what $a$ is, is $a = x_3$? Nope, that doesn't make sense cause $x_3$ is not scaled to match $y$... – Jonathan Mee Jun 18 '15 at 13:45
• @JonathanMee $a$ is a free parameter... – draks ... Jun 18 '15 at 13:48
• What I think I'm getting is that: $$z_1 = \frac{||\vec x||}{\sqrt{y_1^2+y_2^2+a^2}}y_1$$ and: $$z_2 = \frac{||\vec x||}{\sqrt{y_1^2+y_2^2+a^2}}y_2$$ and: $$z_3 = x_3$$ but I still can'y use that to find $\vec z$ cause I don't know what $a$ is. – Jonathan Mee Jun 18 '15 at 13:55
• @JonathanMee any vector of the above form has the length you asked for and it points along $x$ and $y$ as you requested; irrespective of $z_3$, which I called $a$. I changed that if this was too confusing... – draks ... Jun 18 '15 at 14:00
• So I've posted an answer below, it seems like I just need to scale the xy-components of $\vec y$ and then stomp the z-component. Which seems like it should give identical results to you're equation, but the two are certainly not mathematically equal. I think it's because your messes up the proportions. For example if I have $\vec x = 1\mathbf i + 1\mathbf j + 2\mathbf k$ and $\vec y = 10\mathbf i + 10\mathbf j + 13\mathbf k$ your equation will significantly decrease the z contribution of the resulting vector. – Jonathan Mee Jun 18 '15 at 14:59

You can easily find this vector by scaling the z-component of $\vec x$ and then just using it directly in $\vec y$'s z-component to form $\vec z$.

The modifier you'll want to use is $x_3$ scaled by the xy-size of $\vec x$ over the xy-size of $\vec y$: $$z_3 = x_3\sqrt{\frac{y_1^2 + y_2^2}{x_1^2 + x_2^2}}$$

Then just set $z_1 = y_1$ and $z_2 = y_2$ and you have your vector!

To scale $\vec z$ such that $\|\vec z\| = \|\vec x\|$ simply set $\vec z$ to $\hat z\|\vec x\|$.

• Why to fix the $z$ component with the value of $x_3$? That's not necessary, it's just one example. Set $z_3=x_3$ in my answer to recover yours as a special case... – draks ... Jun 19 '15 at 6:30
• @draks... That's just the thing. I don't know how large to choose it in your code. I need a ratio between the xy-components of $\vec x$ and $\vec y$ to know how to choose how large it is. In the example I gave in the comments of your question your equation will give: $4.7\mathbf i + 4.7\mathbf j + 0.8\mathbf k$ if you just directly plug in $x_3$. My answer will give: $.1\mathbf i + .1\mathbf j + 2\mathbf k$... Stink, neither equation works. I need to refactor... – Jonathan Mee Jun 19 '15 at 10:31
• See, I normalize any of my vectors (irrespective of $z_3$) to unit length of $1$ (by division with the norm) and then I multiply by $||\vec x||$... – draks ... Jun 19 '15 at 10:36
• @draks... Looking at my original question I see how I didn't clearly specify what I wanted. I've edited. If you can tell me how to do that in your equation I'm ready, I just currently don't see how. – Jonathan Mee Jun 19 '15 at 10:42
• Done; have a look... – draks ... Jun 19 '15 at 10:45