0
$\begingroup$

I have the 3D coordinates for three points $A, B, C$. I can find the angle formed between the vectors $\vec {AB}$ and $\vec {BC}$ by using a dot product.

However, I want to move point $B$ to $B^{\prime}$ such that the new vectors $\vec {AB^{\prime}}$ and $\vec {B^{\prime}C}$ form an angle $\theta$. $B^{\prime}$ is constrained to lie in the same plane as $A, B, C$. In addition, the distance between $B^{\prime}$ and $C$ must remain the same as the distance between $B$ and $C$.

Is there a way for me to compute $B^{\prime}$ given $\theta$?

$\endgroup$
  • $\begingroup$ Not completely. Except for $\theta = 0, \pi$, there is an entire circle of points $B'$ that satisfy your conditions. Are there any other constraints? If $B'$ is constrained to lie in the same plane as $A, B, C$, then there are exactly two solutions for each $\theta \ne 0, \pi$. $\endgroup$ – Paul Sinclair Oct 4 '15 at 3:04
  • $\begingroup$ $B^{\prime}$ is constrained to lie in the same plane as $A, B, C$. $\endgroup$ – Bobby Oct 4 '15 at 3:19
0
$\begingroup$

Let $\vec n = \vec{BA} \times \vec{BC}$. Let $b = \|\vec{CB}\|$, and let $\vec a = \vec{CA}$. $\vec n$ is normal to the plane of $A, B, C$.

We want to define a vector $\vec v$ such that $B' = C + b\vec v$. Your first constraint requires $\|\vec v\| = 1$. The coplanar constraint requires $\vec n \cdot \vec v = 0$, and finally the angle condition requires $$(A - (C + b\vec v))\cdot(-b\vec v) = \|A -(C + b\vec v)\|b\cos \theta$$ That is: $$(\vec a - b\vec v)\cdot(-b\vec v) = \|\vec a - b\vec v\|b\cos\theta$$.

This gives you three equations in the three unknown coordinates of $v$. Solve them to find the two possible values of $\vec v$, then calculate $B' = C + b\vec v$.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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