diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex | 425 |
1 files changed, 225 insertions, 200 deletions
diff --git a/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex b/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex index da1dc120dca..291bcd771fe 100644 --- a/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex +++ b/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex @@ -1,15 +1,40 @@ -% Copyright (C) 2016-2021 by Paul Gaborit -% -% This file may be distributed and/or modified -% -% 1. under the LaTeX Project Public License and/or -% -% 2. under the GNU Public License. +%% +%% This is file `tikzlibrarydubins.code.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sankey.dtx (with options: `tikzlibrarydubins.code.tex') +%% +%% This is a generated file. +%% +%% Copyright (C) 2016, 2021 by Paul Gaborit +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3 of this license or (at +%% your option) any later version. The latest version of this license is +%% in +%% +%% <http://www.latex-project.org/lppl.txt> +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status “maintained”. +%% +%% The Current Maintainer of this work is Paul Gaborit. +%% +%% This work consists of the files sankey.dtx, sankey.ins and the derived +%% files sankey.sty, tikzlibrarydubins.code.tex, sankey-doc-preamble.sty, +%% sankey-example1.tex, sankey-example2.tex, sankey-example3.tex, +%% sankey-example3-variation.tex, sankey-example4.tex, +%% sankey-example-energy.tex +%% +\def\tikzlibrarydubins@version{v3.0} +\def\tikzlibrarydubins@date{2021/03/14} \usetikzlibrary{calc} - \RequirePackage{etoolbox} -\RequirePackage{etextools} \RequirePackage{xfp} \newbool{dubinspathreverse} @@ -19,29 +44,28 @@ \ifnumequal{\pgfmathresult}{1}% } -\def\anglebetween#1#2#3{%macro, s, t - \path let - \p{s}=(#2), \p{t}=(#3), - \n{angle}={atan2(\y{t}-\y{s},\x{t}-\x{s})} - in \pgfextra { - \pgfmathsetmacro#1{\n{angle}} - \aftergroup@def#1 - }; +\def\dbp@getxy#1#2#3{% + \tikz@scan@one@point\pgfutil@firstofone(#3)\relax% + \edef#1{\the\pgf@x}% + \edef#2{\the\pgf@y}% } -\def\distancebetween#1#2#3{%macro, s, t - \path let - \p{s}=(#2), \p{t}=(#3), - %\n{dist}={veclen(\x{t}-\x{s},\y{t}-\y{s}))} - \n{dist}={\fpeval{sqrt((\x{t}-\x{s})*(\x{t}-\x{s})+(\y{t}-\y{s})*(\y{t}-\y{s}))}} - in \pgfextra { - %\typeout{n{dist}:\n{dist}} - \pgfmathsetmacro#1{\n{dist}} - \aftergroup@def#1 - }; +\def\dbp@anglebetween#1#2#3{%macro, s, t + \dbp@getxy\dbp@ax\dbp@ay{#2} + \dbp@getxy\dbp@bx\dbp@by{#3} + \pgfmathsetmacro#1{atan2(\dbp@by-\dbp@ay,\dbp@bx-\dbp@ax)} } -\newcommand\dubinspath@rsr{% s, sa, t, ta, as, len, at, r +\def\dbp@distancebetween#1#2#3{%macro, s, t + \dbp@getxy\dbp@ax\dbp@ay{#2} + \dbp@getxy\dbp@bx\dbp@by{#3} + \edef#1{\fpeval{sqrt(% + (\dbp@bx-\dbp@ax)*(\dbp@bx-\dbp@ax)% + +(\dbp@by-\dbp@ay)*(\dbp@by-\dbp@ay)% + )}}% +} + +\newcommand\dbp@rsr{% s, sa, t, ta, as, len, at, r let \p{tr}=([shift={(\dbp@angb-90:\dbp@radius pt)}]\dbp@b), \n1={\dbp@anga+90}, @@ -53,7 +77,7 @@ arc(\n3:\n2:\dbp@rradius pt) } -\newcommand\dubinspath@lsl{% s, sa, t, ta, as, len, at, r +\newcommand\dbp@lsl{% s, sa, t, ta, as, len, at, r let \p{tl}=([shift={(\dbp@angb+90:\dbp@radius pt)}]\dbp@b), \n1={\dbp@anga-90},\n2={\n1+\dbp@firstangle}, @@ -64,7 +88,7 @@ arc(\n4:\n3:\dbp@lradius pt) } -\newcommand\dubinspath@rsl{% s, sa, t, ta, as, len, at, r +\newcommand\dbp@rsl{% s, sa, t, ta, as, len, at, r let \p{tl}=([shift={(\dbp@angb+90:\dbp@radius pt)}]\dbp@b), \n1={\dbp@anga+90},\n2={\n1-\dbp@firstangle}, @@ -75,7 +99,7 @@ arc(\n4:\n3:\dbp@lradius pt) } -\newcommand\dubinspath@lsr{% s, sa, t, ta, as, len, at, r +\newcommand\dbp@lsr{% s, sa, t, ta, as, len, at, r let \p{tr}=([shift={(\dbp@angb-90:\dbp@radius pt)}]\dbp@b), \n1={\dbp@anga-90},\n2={\n1+\dbp@firstangle}, @@ -86,7 +110,7 @@ arc(\n4:\n3:\dbp@rradius pt) } -\newcommand\dubinspath@lrl{% s, sa, t, ta, as, ai, at, r +\newcommand\dbp@lrl{% s, sa, t, ta, as, ai, at, r let \n1={\dbp@anga-90},\n2={\n1+\dbp@firstangle}, \n3={\dbp@angb-90},\n4={\n3-\dbp@lastangle} @@ -96,7 +120,7 @@ arc(\n4:\n3:\dbp@lradius pt) } -\newcommand\dubinspath@rlr{% s, sa, t, ta, as, ai, at, r +\newcommand\dbp@rlr{% s, sa, t, ta, as, ai, at, r let \n1={\dbp@anga+90},\n2={\n1-\dbp@firstangle}, \n3={\dbp@angb+90},\n4={\n3+\dbp@lastangle} @@ -105,77 +129,68 @@ arc(\n2+180:\n2+180+\dbp@midparam:\dbp@lradius pt) arc(\n4:\n3:\dbp@rradius pt) } -\newcommand\dubinspath@rev@lsl{\dubinspath@rsr} -\newcommand\dubinspath@rev@rsr{\dubinspath@lsl} -\newcommand\dubinspath@rev@lsr{\dubinspath@lsr} -\newcommand\dubinspath@rev@rsl{\dubinspath@rsl} -\newcommand\dubinspath@rev@lrl{\dubinspath@rlr} -\newcommand\dubinspath@rev@rlr{\dubinspath@lrl} - +\newcommand\dbp@rev@lsl{\dbp@rsr} +\newcommand\dbp@rev@rsr{\dbp@lsl} +\newcommand\dbp@rev@lsr{\dbp@lsr} +\newcommand\dbp@rev@rsl{\dbp@rsl} +\newcommand\dbp@rev@lrl{\dbp@rlr} +\newcommand\dbp@rev@rlr{\dbp@lrl} \newcommand\dubinspath[1]{% \pgfextra{ \dubinspathset{#1} \ifbool{dubinspathreverse}{ - \edef\newa{\dbp@b} - \edef\newb{\dbp@a} - \pgfmathsetmacro\newanga{180+\dbp@angb} - \pgfmathsetmacro\newangb{180+\dbp@anga} - \edef\newfirstangle{\dbp@lastangle} - \edef\newlastangle{\dbp@firstangle} - \edef\newmethod{rev@\dbp@method} - \edef\newlradius{\dbp@rradius} - \edef\newrradius{\dbp@lradius} + \edef\dbp@newa{\dbp@b} + \edef\dbp@newb{\dbp@a} + \pgfmathsetmacro\dbp@newanga{180+\dbp@angb} + \pgfmathsetmacro\dbp@newangb{180+\dbp@anga} + \edef\dbp@newfirstangle{\dbp@lastangle} + \edef\dbp@newlastangle{\dbp@firstangle} + \edef\dbp@newmethod{rev@\dbp@method} + \edef\dbp@newlradius{\dbp@rradius} + \edef\dbp@newrradius{\dbp@lradius} \dubinspathset{ - start point=\newa, - end point=\newb, - start angle=\newanga, - end angle=\newangb, - first angle=\newfirstangle, - last angle=\newlastangle, - left and right minimum radii=\newlradius pt and \newrradius pt, - method=\newmethod, + start point=\dbp@newa, + end point=\dbp@newb, + start angle=\dbp@newanga, + end angle=\dbp@newangb, + first angle=\dbp@newfirstangle, + last angle=\dbp@newlastangle, + left and right minimum radii=\dbp@newlradius pt and \dbp@newrradius pt, + method=\dbp@newmethod, } }{} - %\typeout{dbp@lradius:\dbp@lradius} - %\typeout{dbp@rradius:\dbp@rradius} } - \csname dubinspath@\dbp@method\endcsname% + \csname dbp@\dbp@method\endcsname% } +%% solution -% solution -% \xdef\dubinspathmethod{} % type of dubins path -% \xdef\dubinspathlength{} % lenght (pt) -% \xdef\dubinspathfirstangle{} % first angle -% \xdef\dubinspathmiddleparam{} % intermediate angle or straight distance -% \xdef\dubinspathlastangle{} % last angle - -\def\dubinspathstore#1#2{% - \expandafter\xdef\csname dubinspath@store@#1@#2\endcsname% - {\csname dubinspath#2\endcsname}% +\def\dbp@store#1#2{% + \expandafter\xdef\csname dbp@store@#1@#2\endcsname% + {\csname dbp@#2\endcsname}% } -\def\dubinspathget#1#2{% - \csname dubinspath@store@#1@#2\endcsname% +\def\dbp@get#1#2{% + \csname dbp@store@#1@#2\endcsname% } -% -\def\dubinspathsetparams#1#2#3#4#5{% method, length, fisrt angle, middle param, last angle - \edef\dubinspathmethod{#1} - \edef\dubinspathlength{#2} - \edef\dubinspathfirstangle{#3} - \edef\dubinspathmiddleparam{#4} - \edef\dubinspathlastangle{#5} +\def\dbp@setparams#1#2#3#4#5{% + % method, length, fisrt angle, middle param, last angle + \edef\dbp@method{#1} + \edef\dbp@length{#2} + \edef\dbp@firstangle{#3} + \edef\dbp@middleparam{#4} + \edef\dbp@lastangle{#5} \ifdef{\dbp@storename}{ \foreach \p in {method,length,firstangle,middleparam,lastangle}{ - \dubinspathstore{\dbp@storename}{\p} + \dbp@store{\dbp@storename}{\p} } }{} } -\def\dubinspathupdateparams#1#2#3#4#5{ - \ifpgfmathcond{#2<\dubinspathlength}{ - \dubinspathsetparams{#1}{#2}{#3}{#4}{#5} +\def\dbp@updateparams#1#2#3#4#5{ + \ifpgfmathcond{#2<\dbp@length}{ + \dbp@setparams{#1}{#2}{#3}{#4}{#5} }{} } @@ -188,10 +203,10 @@ end angle/.store in=\dbp@angb, store/.store in=\dbp@storename, use store/.style={ - method=\dubinspathget{#1}{method}, - first angle=\dubinspathget{#1}{firstangle}, - last angle=\dubinspathget{#1}{lastangle}, - middle param=\dubinspathget{#1}{middleparam}, + method=\dbp@get{#1}{method}, + first angle=\dbp@get{#1}{firstangle}, + last angle=\dbp@get{#1}{lastangle}, + middle param=\dbp@get{#1}{middleparam}, }, minimum radius/.code={ \pgfmathsetmacro\dbp@radius{#1} @@ -217,145 +232,155 @@ \dubinspathset{#1} \tikzset{ declare function={ - angtodist(\a,\r)={abs(\a)*.01745329*\r}; - modangr(\a,\b)={ - (Mod(\a,360)<Mod(\b,360)?Mod(\a,360):Mod(\a,360)-360)+\b-Mod(\b,360) + angtodist(\dbp@a,\dbp@r)={abs(\dbp@a)*.01745329*\dbp@r}; + modangr(\dbp@a,\dbp@b)={ + ( + Mod(\dbp@a,360)<Mod(\dbp@b,360) + ? + Mod(\dbp@a,360) + : + Mod(\dbp@a,360)-360)+\dbp@b-Mod(\dbp@b,360 + ) }; - modangl(\a,\b)={ - (Mod(\a,360)<Mod(\b,360)?Mod(\a,360)+360:Mod(\a,360))+(\b)-Mod(\b,360) + modangl(\dbp@a,\dbp@b)={ + ( + Mod(\dbp@a,360)<Mod(\dbp@b,360) + ? + Mod(\dbp@a,360)+360 + : + Mod(\dbp@a,360))+(\dbp@b)-Mod(\dbp@b,360) }; }, } - - \pgfmathsetmacro\radius{\dbp@rradius} - \pgfmathsetmacro\anga{mod((\dbp@anga)+180,360)-180} - \pgfmathsetmacro\angb{mod((\dbp@angb)+180,360)-180} - %\typeout{radius:\radius,anga:\anga,angb:\angb} + + \pgfmathsetmacro\dbp@radius{\dbp@rradius} + \pgfmathsetmacro\dbp@anga{mod((\dbp@anga)+180,360)-180} + \pgfmathsetmacro\dbp@angb{mod((\dbp@angb)+180,360)-180} \path let \p{a}=(\dbp@a), \p{b}=(\dbp@b), - \p{ar}=($(\p{a}) + (\anga-90:\radius pt)$), - \p{al}=($(\p{a}) + (\anga+90:\radius pt)$), - \p{br}=($(\p{b}) + (\angb-90:\radius pt)$), - \p{bl}=($(\p{b}) + (\angb+90:\radius pt)$) + \p{ar}=($(\p{a}) + (\dbp@anga-90:\dbp@radius pt)$), + \p{al}=($(\p{a}) + (\dbp@anga+90:\dbp@radius pt)$), + \p{br}=($(\p{b}) + (\dbp@angb-90:\dbp@radius pt)$), + \p{bl}=($(\p{b}) + (\dbp@angb+90:\dbp@radius pt)$) in \pgfextra{ \pgfinterruptpath - % RSR (ar et br) - %\typeout{RSR begin} - \anglebetween\rsrarbr{\p{ar}}{\p{br}} - \distancebetween\rsrdarbr{\p{ar}}{\p{br}} - \pgfmathsetmacro\rsrangone{Mod(\anga-\rsrarbr,360)} - \pgfmathsetmacro\rsrangtwo{Mod(\rsrarbr-\angb,360)} - \pgfmathsetmacro\rsrlen{\rsrdarbr} - \pgfmathsetmacro\rsrdist{ - angtodist(\rsrangone,\radius) - +\rsrlen - +angtodist(\rsrangtwo,\radius) + % RSR (ar and br) + \dbp@anglebetween\dbp@rsrarbr{\p{ar}}{\p{br}} + \dbp@distancebetween\dbp@rsrdarbr{\p{ar}}{\p{br}} + \pgfmathsetmacro\dbp@rsrangone{Mod(\dbp@anga-\dbp@rsrarbr,360)} + \pgfmathsetmacro\dbp@rsrangtwo{Mod(\dbp@rsrarbr-\dbp@angb,360)} + \pgfmathsetmacro\dbp@rsrlen{\dbp@rsrdarbr} + \pgfmathsetmacro\dbp@rsrdist{ + angtodist(\dbp@rsrangone,\dbp@radius) + +\dbp@rsrlen + +angtodist(\dbp@rsrangtwo,\dbp@radius) } - \dubinspathsetparams{rsr}{\rsrdist}{\rsrangone}{\rsrlen}{\rsrangtwo} - - % LSL (al et bl) - %\typeout{LSL begin} - \anglebetween\lslalbl{\p{al}}{\p{bl}} - \distancebetween\lsldalbl{\p{al}}{\p{bl}} - \pgfmathsetmacro{\lslangone}{mod(\lslalbl-\anga+720,360)} - \pgfmathsetmacro{\lslangtwo}{mod(\angb-\lslalbl+720,360)} - \pgfmathsetmacro\lsllen{\lsldalbl} - \pgfmathsetmacro\lsldist{ - angtodist(\lslangone,\radius) - +\lsllen - +angtodist(\lslangtwo,\radius) + \dbp@setparams{rsr}{\dbp@rsrdist}{\dbp@rsrangone}{\dbp@rsrlen}{\dbp@rsrangtwo} + + % LSL (al and bl) + \dbp@anglebetween\dbp@lslalbl{\p{al}}{\p{bl}} + \dbp@distancebetween\dbp@lsldalbl{\p{al}}{\p{bl}} + \pgfmathsetmacro{\dbp@lslangone}{mod(\dbp@lslalbl-\dbp@anga+720,360)} + \pgfmathsetmacro{\dbp@lslangtwo}{mod(\dbp@angb-\dbp@lslalbl+720,360)} + \pgfmathsetmacro\dbp@lsllen{\dbp@lsldalbl} + \pgfmathsetmacro\dbp@lsldist{ + angtodist(\dbp@lslangone,\dbp@radius) + +\dbp@lsllen + +angtodist(\dbp@lslangtwo,\dbp@radius) } - \dubinspathupdateparams{lsl}{\lsldist}{\lslangone}{\lsllen}{\lslangtwo} - - % RSL (ar et bl) - %\typeout{RSL begin} - \distancebetween\rsldarbl{\p{ar}}{\p{bl}} - \pgfmathtruncatemacro\rslok{(\rsldarbl>=2*\radius)?1:0} - \ifnumequal{\rslok}{1}{ - \anglebetween\rslarbl{\p{ar}}{\p{bl}} - \pgfmathsetmacro\rslanglesup{ - asin(\radius/\rsldarbl*2)} - \pgfmathsetmacro\rslangone{Mod(\anga-\rslarbl+\rslanglesup,360)} - \pgfmathsetmacro\rslangtwo{Mod(\angb-\rslarbl+\rslanglesup,360)} - \pgfmathsetmacro\rsllen{veclen(\rsldarbl,\radius)} - \pgfmathsetmacro\rsldist{ - angtodist(\rslangone,\radius) - +\rsllen - +angtodist(\rslangtwo,\radius) + \dbp@updateparams% + {lsl}{\dbp@lsldist}{\dbp@lslangone}{\dbp@lsllen}{\dbp@lslangtwo} + + % RSL (ar and bl) + \dbp@distancebetween\dbp@rsldarbl{\p{ar}}{\p{bl}} + \pgfmathtruncatemacro\dbp@rslok{(\dbp@rsldarbl>=2*\dbp@radius)?1:0} + \ifnumequal{\dbp@rslok}{1}{ + \dbp@anglebetween\dbp@rslarbl{\p{ar}}{\p{bl}} + \pgfmathsetmacro\dbp@rslanglesup{ + asin(\dbp@radius/\dbp@rsldarbl*2)} + \pgfmathsetmacro\dbp@rslangone + {Mod(\dbp@anga-\dbp@rslarbl+\dbp@rslanglesup,360)} + \pgfmathsetmacro\dbp@rslangtwo + {Mod(\dbp@angb-\dbp@rslarbl+\dbp@rslanglesup,360)} + \pgfmathsetmacro\dbp@rsllen{veclen(\dbp@rsldarbl,\dbp@radius)} + \pgfmathsetmacro\dbp@rsldist{ + angtodist(\dbp@rslangone,\dbp@radius) + +\dbp@rsllen + +angtodist(\dbp@rslangtwo,\dbp@radius) } - \dubinspathupdateparams{rsl}{\rsldist}{\rslangone}{\rsllen}{\rslangtwo} + \dbp@updateparams% + {rsl}{\dbp@rsldist}{\dbp@rslangone}{\dbp@rsllen}{\dbp@rslangtwo} }{} - % LSR (al et br) - %\typeout{LSR begin} - \distancebetween\lsrdalbr{\p{al}}{\p{br}} - \pgfmathtruncatemacro\lsrok{(\lsrdalbr>=2*\radius)?1:0} - \ifnumequal{\lsrok}{1}{ - \anglebetween\lsralbr{\p{al}}{\p{br}} - \pgfmathsetmacro\lsranglesup{ - asin(\radius/\lsrdalbr*2)} - \pgfmathsetmacro\lsrangone{Mod(\lsralbr+\lsranglesup-\anga,360)} - \pgfmathsetmacro\lsrangtwo{Mod(\lsralbr+\lsranglesup-\angb,360)} - \pgfmathsetmacro\lsrlen{veclen(\lsrdalbr,\radius)} - \pgfmathsetmacro\lsrdist{ - angtodist(\lsrangone,\radius) - +\lsrlen - +angtodist(\lsrangtwo,\radius) + % LSR (al and br) + \dbp@distancebetween\dbp@lsrdalbr{\p{al}}{\p{br}} + \pgfmathtruncatemacro\dbp@lsrok{(\dbp@lsrdalbr>=2*\dbp@radius)?1:0} + \ifnumequal{\dbp@lsrok}{1}{ + \dbp@anglebetween\dbp@lsralbr{\p{al}}{\p{br}} + \pgfmathsetmacro\dbp@lsranglesup{ + asin(\dbp@radius/\dbp@lsrdalbr*2)} + \pgfmathsetmacro\dbp@lsrangone + {Mod(\dbp@lsralbr+\dbp@lsranglesup-\dbp@anga,360)} + \pgfmathsetmacro\dbp@lsrangtwo + {Mod(\dbp@lsralbr+\dbp@lsranglesup-\dbp@angb,360)} + \pgfmathsetmacro\dbp@lsrlen{veclen(\dbp@lsrdalbr,\dbp@radius)} + \pgfmathsetmacro\dbp@lsrdist{ + angtodist(\dbp@lsrangone,\dbp@radius) + +\dbp@lsrlen + +angtodist(\dbp@lsrangtwo,\dbp@radius) } - \dubinspathupdateparams{lsr}{\lsrdist}{\lsrangone}{\lsrlen}{\lsrangtwo} + \dbp@updateparams% + {lsr}{\dbp@lsrdist}{\dbp@lsrangone}{\dbp@lsrlen}{\dbp@lsrangtwo} }{} - - % LRL (al et bl) - %\typeout{LRL begin} - \distancebetween\lrldalbl{\p{al}}{\p{bl}} - \pgfmathtruncatemacro\lrlok{(\lrldalbl<=4*\radius)?1:0} - \ifnumequal{\lrlok}{1}{ - % \debug{LRL} - \anglebetween\lrlalbl{\p{al}}{\p{bl}} - \pgfmathsetmacro\lrlangsup{acos(\lrldalbl/\radius/4)} - \pgfmathsetmacro\lrlangone{ - modangl(\lrlalbl+\lrlangsup,\anga-90)-(\anga-90)} - \pgfmathsetmacro\lrlangtwo{% - (\angb-90)-modangr(\lrlalbl+180-\lrlangsup,\angb-90)} - \pgfmathsetmacro\lrlangthree{360-2*(90-\lrlangsup)} - \pgfmathsetmacro\lrldist{ - angtodist(\lrlangone,\radius) - +angtodist(\lrlangthree,\radius) - +angtodist(\lrlangtwo,\radius) + + % LRL (al and bl) + \dbp@distancebetween\dbp@lrldalbl{\p{al}}{\p{bl}} + \pgfmathtruncatemacro\dbp@lrlok{(\dbp@lrldalbl<=4*\dbp@radius)?1:0} + \ifnumequal{\dbp@lrlok}{1}{ + \dbp@anglebetween\dbp@lrlalbl{\p{al}}{\p{bl}} + \pgfmathsetmacro\dbp@lrlangsup{acos(\dbp@lrldalbl/\dbp@radius/4)} + \pgfmathsetmacro\dbp@lrlangone{ + modangl(\dbp@lrlalbl+\dbp@lrlangsup,\dbp@anga-90)-(\dbp@anga-90)} + \pgfmathsetmacro\dbp@lrlangtwo{% + (\dbp@angb-90)-modangr(\dbp@lrlalbl+180-\dbp@lrlangsup,\dbp@angb-90)} + \pgfmathsetmacro\dbp@lrlangthree{360-2*(90-\dbp@lrlangsup)} + \pgfmathsetmacro\dbp@lrldist{ + angtodist(\dbp@lrlangone,\dbp@radius) + +angtodist(\dbp@lrlangthree,\dbp@radius) + +angtodist(\dbp@lrlangtwo,\dbp@radius) } - \dubinspathupdateparams{lrl}{\lrldist}{\lrlangone}{\lrlangthree}{\lrlangtwo} + \dbp@updateparams% + {lrl}{\dbp@lrldist}{\dbp@lrlangone}{\dbp@lrlangthree}{\dbp@lrlangtwo} }{} - % RLR (ar et br) - %\typeout{RLR begin} - \distancebetween\rlrdarbr{\p{ar}}{\p{br}} - \pgfmathtruncatemacro\rlrok{(\rlrdarbr<=4*\radius)?1:0} - \ifnumequal{\rlrok}{1}{ - \anglebetween\rlrarbr{\p{ar}}{\p{br}} - \pgfmathsetmacro\rlrangsup{acos(\rlrdarbr/\radius/4)} - \pgfmathsetmacro\rlrangone{ - (\anga+90)-modangr(\rlrarbr-\rlrangsup,\anga+90)} - \pgfmathsetmacro\rlrangtwo{% - modangl(\rlrarbr+180+\rlrangsup,\angb+90)-(\angb+90)} - \pgfmathsetmacro\rlrangthree{360-2*(90-\rlrangsup)} - \pgfmathsetmacro\rlrdist{ - angtodist(\rlrangone,\radius) - +angtodist(\rlrangthree,\radius) - +angtodist(\rlrangtwo,\radius) + % RLR (ar and br) + \dbp@distancebetween\dbp@rlrdarbr{\p{ar}}{\p{br}} + \pgfmathtruncatemacro\dbp@rlrok{(\dbp@rlrdarbr<=4*\dbp@radius)?1:0} + \ifnumequal{\dbp@rlrok}{1}{ + \dbp@anglebetween\dbp@rlrarbr{\p{ar}}{\p{br}} + \pgfmathsetmacro\dbp@rlrangsup{acos(\dbp@rlrdarbr/\dbp@radius/4)} + \pgfmathsetmacro\dbp@rlrangone{ + (\dbp@anga+90)-modangr(\dbp@rlrarbr-\dbp@rlrangsup,\dbp@anga+90)} + \pgfmathsetmacro\dbp@rlrangtwo{% + modangl(\dbp@rlrarbr+180+\dbp@rlrangsup,\dbp@angb+90)-(\dbp@angb+90)} + \pgfmathsetmacro\dbp@rlrangthree{360-2*(90-\dbp@rlrangsup)} + \pgfmathsetmacro\dbp@rlrdist{ + angtodist(\dbp@rlrangone,\dbp@radius) + +angtodist(\dbp@rlrangthree,\dbp@radius) + +angtodist(\dbp@rlrangtwo,\dbp@radius) } - \dubinspathupdateparams{rlr}{\rlrdist}{\rlrangone}{\rlrangthree}{\rlrangtwo} + \dbp@updateparams% + {rlr}{\dbp@rlrdist}{\dbp@rlrangone}{\dbp@rlrangthree}{\dbp@rlrangtwo} }{} \endpgfinterruptpath }; \endgroup } - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: +\endinput +%% +%% End of file `tikzlibrarydubins.code.tex'. |