|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
Macros to compute angle between nodesHello all,
I find the fellowing macros of interest. Any comments are welcome. Of course, if they could be included in pgf, that would be great. They use the fpu library. To see an example of use: http://www.cjorssen.fr/spip.php?article5 % A modified version of \pgfextractx and \pgfextracty in order to % avoid extensive use of dimension registers. \def\pgfextractxasmacro#1#2{% \pgf@process{#2}% \edef#1{\the\pgf@x}} \def\pgfextractyasmacro#1#2{% \pgf@process{#2}% \edef#1{\the\pgf@y}} % \def\pgfextractxvecasmacro#1#2#3{% % #1 macro where the x coor of the \vec{#2#3} is stored % #2 node name % #3 node name \pgfextractxasmacro{#1}{% \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}} \def\pgfextractyvecasmacro#1#2#3{% % #1 macro where the x coor of the \vec{#2#3} is stored % #2 node name % #3 node name \pgfextractyasmacro{#1}{% \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}} % \def\pgfgetsineofAOB#1#2#3#4{% % #1 macro where the sine of angle AOB is stored % #2 node name A % #3 node name O % #4 node name B \bgroup \pgfkeys{/pgf/fpu,pgf/fpu/output format=fixed} \pgfextractxvecasmacro{\pgf@xA}{#3}{#2}% \pgfextractyvecasmacro{\pgf@yA}{#3}{#2}% \pgfextractxvecasmacro{\pgf@xB}{#3}{#4}% \pgfextractyvecasmacro{\pgf@yB}{#3}{#4}% \pgfmathparse{% ((\pgf@xA * \pgf@yB) - (\pgf@xB * \pgf@yA))/(sqrt(\pgf@xA * \pgf@xA + \pgf@yA * \pgf@yA) * sqrt(\pgf@xB * \pgf@xB + \pgf@yB * \pgf@yB))}% \xdef#1{\pgfmathresult}% \egroup\ignorespaces} % \def\pgfgetcosineofAOB#1#2#3#4{% % #1 macro where the cosine of angle AOB is stored % #2 node name A % #3 node name O % #4 node name B \bgroup \pgfkeys{/pgf/fpu,pgf/fpu/output format=fixed} \pgfextractxvecasmacro{\pgf@xA}{#3}{#2}% \pgfextractyvecasmacro{\pgf@yA}{#3}{#2}% \pgfextractxvecasmacro{\pgf@xB}{#3}{#4}% \pgfextractyvecasmacro{\pgf@yB}{#3}{#4}% \pgfmathparse{% ((\pgf@xA * \pgf@xB) + (\pgf@yA * \pgf@yB))/(sqrt(\pgf@xA * \pgf@xA + \pgf@yA * \pgf@yA) * sqrt(\pgf@xB * \pgf@xB + \pgf@yB * \pgf@yB))}% \xdef#1{\pgfmathresult}% \egroup\ignorespaces} % \def\pgfgetangleofAOB#1#2#3#4{% % #1 macro where the angle AOB is stored % #2 node name A % #3 node name O % #4 node name B \bgroup \pgfgetsineofAOB{\pgf@sineAOB}{#2}{#3}{#4}% \pgfgetcosineofAOB{\pgf@cosineAOB}{#2}{#3}{#4}% \pgfmathparse{atan2(\pgf@cosineAOB,\pgf@sineAOB)}% \xdef#1{\pgfmathresult}% \egroup\ignorespaces} -- Christophe ------------------------------------------------------------------------------ _______________________________________________ pgf-users mailing list pgf-users@... https://lists.sourceforge.net/lists/listinfo/pgf-users |
| Free embeddable forum powered by Nabble | Forum Help |