# Transformation for aligning 3D object with reference frame of 3D turtle graphics

## The problem

I'm using a 3D extension of the well-known "Turtle graphics" to draw plants. My system works by maintaining a position $$\vec{p}$$ and three vectors:

• The heading $$\vec{H}$$
• The "up" direction $$\vec{U}$$
• The "left" direction $$\vec{L}$$

My problem is now that I want to be able to create 3D objects at the position of the turtle, but with the added difficulty of being "transformed" into the turtle's coordinate system defined by the vectors $$\vec{H}, \vec{U}$$ and $$\vec{L}$$, so that the model is "aligned" with the direction and orientation of the turtle. I basically want to achieve that the model is transformed in such a way, that:

• The local origin becomes the turtle position
• The local x-Axis is rotated onto the heading vector $$\vec{H}$$
• The local y-Axis is rotated onto the right vector $$- \vec{L}$$
• The local z-Axis is rotated onto the up vector $$\vec{U}$$

The reason I want this is to be able to spawn 3D models that describe the leaves of a plant on stalks generated by the turtle.

## My own idea so far

I'm not very good at linear algebra, but I thought of using a base change matrix of the form: $$A := \begin{pmatrix}\vec{H} & -\vec{L} & \vec{U} \end{pmatrix}$$ And combining that with the translation by $$\vec{p}$$ to obtain the following model matrix:

$$T := \begin{pmatrix} A & \begin{matrix} p_1 \\ p_2 \\ p_3\end{matrix}\\ \begin{matrix}0 & 0& 0\end{matrix} & 1 \end{pmatrix}$$

Would this achieve the effect I want? I am currently only in the planning phase of the project this will be used in, so I can't check this myself.

• Sure that should work Dec 16, 2019 at 22:28
• @joojaa Thanks! In addition, i also wanna scale the model by a factor $f$. Do i have to apply the scaling matrix before $T$ (as in $T \cdot S$), or after it (as in $S\cdot T$)? I never worked with base change matrices before. Dec 16, 2019 at 22:58
• Depends on about what you want to scale. OTOH if you do a $T^{-1} S T$ it does not matter much. Dec 17, 2019 at 7:19
• @joojaa I basically want to scale the model I am placing, so I would like to basically scale it, and then move it into the new coordinate system. That would be $T * S$ then, right? Dec 17, 2019 at 14:37
• But scale about what point Dec 17, 2019 at 14:53