So I was intrigued by this question and found forth an old solution to one of my figures in my bachelor. Nearly three years time... At that time I had yet to discover the calc
library which was not so full of features as it is now! :)
Ok, so i had the same idea of creating a diagram of a setup used to exemplify some calculations. That required some triangles some plane angles and some angle notations.
What, I really wanted was to denote the angle within its plane. This would allow the reader to immediately see which angle it belonged to (ok, so the few angles in this diagram does not justify that, but fun it was!).
Without further ado, here is the code:
% Toy with these to get some feel for alignment
\def\angEl{25} % elevation angle
\def\angAz{-125} % azimuth angle
\begin{tikzpicture}[>=latex,%
% Create the xy-plane
xyplane/.estyle={%
cm={%
cos(\angAz) , sin(\angAz)*sin(\angEl),%
-sin(\angAz) , cos(\angAz)*sin(\angEl),%
(0,0)%
}%
},
% Create the yz-plane
yzplane/.estyle={%
cm={%
cos(\angAz+90) , sin(\angAz+90)*sin(\angEl),%
0 , cos(\angEl) ,%
(0,0)%
}%
},
% Create the tilted-plane
tplane/.estyle={%
cm={%
cos(\angAz) , -sin(\angAz),%
sin(\angAz)*sin(\angEl) , cos(\angAz)*sin(\angEl),%
(0,0)%
}%
}]
% Draw base rectangle, and its notation of current
\draw[xyplane,dashed] (-3,-3) rectangle (3,3);
\draw[xyplane,rounded corners,->] (-2.5,3.5) -| node[above] {$I$} (-3.5,2.5);
\draw[xyplane,rounded corners,->] (2.5,-3.5) -| node[below] {$I$} (3.5,-2.5);
% Denote coordinates
\draw[xyplane,<->] (4,0) node[below] {$y$} -| (0,4) node[right] {$x$};
% Create side lengths
\draw[xyplane,<->] (1.5,3) -- node[below left=.5ex] {$a$} ++(0,-3);
% Coordinates in the plane
\path[xyplane] (0,3) coordinate (XO);
\path[xyplane] (3,3) coordinate (X1);
\path[xyplane] (-3,3) coordinate (X2);
\draw[xyplane,<->] (-3,3.2) -- node[below right=.5ex] {$a$} (0,3.2);
\draw[xyplane,<->] (3,3.2) -- node[below right=.5ex] {$a$} (0,3.2);
% Create coordinate
\path (0,3) coordinate (X) node[above left] {$P$};
\fill (X) circle (1.5pt);
\fill[fill opacity=.25,color=red] (X) -- (X1) -- (X2) -- cycle;
\draw (X) -- node[pos=0.6,right] {$s$} (XO);
\draw[<->] (-.2,0) -- node[below left=1ex] {$h$} ++(X);
\draw (X) -- (X1) (X) -- (X2);
\draw[->] (0,0) -- (X) -- ++(0,1) node[above] {$z$};
% Draw in the yzplane
\path[yzplane] (3,0)+(180:.5) coordinate (BETA1);
\path[yzplane] (3,0)+(180-48:.5) coordinate (BETA2);
% Create \beta angle, the notation of yzplane in the node makes the text subsequent to the coordinate transformation
\draw[yzplane] (BETA1) to[bend left=46] node[pos=0.5,left,yzplane] {$\beta$} (BETA2);
\draw[yzplane,-stealth] (X) -- ++(90-42:1.3) node[right,yzplane] {$\mathbf B$};
% Create the angle denotation, this could be made more explicit (it is currently just eye-measured)
\path[yzplane] (X)+(90:.5) coordinate (B Top 1)
(X)+(90-42:.5) coordinate (B Top 2);
\draw[yzplane] (B Top 1) to[bend left=46] node[pos=0.5,above,yzplane] {$\beta$} (B Top 2);
\fill[fill opacity=.25,color=black] (X) -- (XO) -- (0,0) -- cycle;
% Create the \theta angles, these are also approximated by the eye.
% It was easier at the time... :)
\path[tplane] (X)+(-.5,-.485) coordinate (Right);
\draw[tplane] (X)+(-.5,.577) to[out=-160,in=180] (Right);
% We need large as it is so much transformed that it looks smaller
\draw[tplane] (X)+(-1,.5) node[tplane,rotate=-90] {\large$\theta_1$};
\draw[tplane] (X)+(-1,-.5) node[tplane,rotate=-90] {\large$\theta_2$};
\end{tikzpicture}
Some of these could be made shorter with the help of calc, however not very much shorter. In order to get a transformation of text simply add the corresponding cm
to that node description. But one should be weary about crude transformations as is noticed for the \theta
angles, there I had to enlargen the font or it would look too small.
Notice in the output that, both \beta
's, \theta_i
's and the \mathrm B
is transformed to its plane.
The output finally yields:

intersections
library can help you too.