diff options
author | Karl Berry <karl@freefriends.org> | 2017-06-05 23:08:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-06-05 23:08:54 +0000 |
commit | 31ead02cd541572d668146cfbfcba137392aec8e (patch) | |
tree | 4ea744bc78b7f5fc545e7cb845a507d739dce426 /Master | |
parent | b28c826ecab866d192e2c0e589ad90931e6fcd4f (diff) |
pst-vehicle (5jun17)
git-svn-id: svn://tug.org/texlive/trunk@44466 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/Changes.txt | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/ListVehicles.tex | 471 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/README.md | 9 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.pdf | bin | 0 -> 1877539 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.tex | 938 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.pdf | bin | 1222129 -> 1241969 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.tex | 220 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex | 67 |
8 files changed, 1196 insertions, 515 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/Changes.txt b/Master/texmf-dist/doc/generic/pst-vehicle/Changes.txt new file mode 100644 index 00000000000..67da199cece --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-vehicle/Changes.txt @@ -0,0 +1,6 @@ +pst-vehicle.tex ---------------- + +1.1 2017/06/05 + - fix for contant functions + - add option startPos to have a defined startrotation for the rear-wheel + - syncron start-rotation-position for front- and rear-wheel diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/ListVehicles.tex b/Master/texmf-dist/doc/generic/pst-vehicle/ListVehicles.tex deleted file mode 100644 index 2ca9ef9e3af..00000000000 --- a/Master/texmf-dist/doc/generic/pst-vehicle/ListVehicles.tex +++ /dev/null @@ -1,471 +0,0 @@ -%% -%% This is file `ListVehicles.tex', -%% -%% IMPORTANT NOTICE: -%% -%% Package `pst-vehicle.tex' -%% -%% Thomas S\"{o}ll -%% with the collaboration of -%% Juergen Gilg -%% Manuel Luque -%% -%% This program can redistributed and/or modified under %% -%% the terms of the LaTeX Project Public License %% -%% Distributed from CTAN archives in directory %% -%% macros/latex/base/lppl.txt; either version 1.3c of %% -%% the License, or (at your option) any later version. %% - -%% -%% DESCRIPTION: -%% `pst-vehicle' is a PSTricks package -%% -%% -\newpsstyle{segway}{rB=1.4,backwheel=\segWheel} -\newpsstyle{unicycle}{rB=1.6,backwheel=\SpokesWheelB} -\newpsstyle{tractor}{d=4,rB=1.4,rF=1.0} -\newpsstyle{truck}{backwheel=\TruckWheel,frontwheel=\TruckWheel,d=6.28,rB=1.9,rF=1.9} -\newpsstyle{bike}{backwheel=\SpokesWheelB,frontwheel=\SpokesWheelB,d=5.8,rB=1.6,rF=1.6} -%\wheelA,\wheelB,\wheelC,\segWheel,\arrowWheel,\TruckWheel,\TractorFrontWheel,\TractorRearWheel,\SpokesWheelCrossed,\SpokesWheelA -\def\Bike{% ------------------------------ Vehicle Nr. 1: normal bike ---------------------------- -\rput{!phiB}(0,0){% ------------ backwheel --- Hinterrad -\pst@backwheel -}% -\rput{!phiF}(!/rB rF def AF1x AF1y){%------ frontwheel --- Vorderrad -\pst@frontwheel -}% -\rput(!0 rB neg){% -\psline[linewidth=3pt](2.5,1.95)(0,1.7)% -\psline[linewidth=3pt](2.5,1.25)(0,1.45)% -\rput{!phiB Gang div}(!2.5 rB){% Kurbel -\pscircle*(0,0){0.4}% -\psline[linewidth=4pt](-0.3,-0.9)(0.3,0.9)% -\rput{!phiB Gang div neg}(-0.3,-0.9){\psline[linewidth=4pt](0,0)(-0.3,0)}% -\rput{!phiB Gang div neg}(0.3,0.9){\psline[linewidth=4pt](0,0)(0.3,0)}% -}% -\psline[linewidth=5pt](5.8,1.6)(4.75,4.85)(3.8,4.85)% -\psline[linewidth=5pt](0,1.6)(2.5,1.6)(5.2,3.65)% -\psline[linewidth=5pt](0,1.6)(1.6,4.05)(5,4.05)% -\psline[linewidth=5pt](2.5,1.6)(1.5,4.45)% -\psline[linewidth=7pt](0.8,4.45)(2,4.45)% -\pspolygon[linecolor=\pslinecolor,fillstyle=solid,fillcolor=\pslinecolor](5.05,3.85)(5.65,4.1)(5.65,3.6)% -}% -}% -\def\HighWheeler{% ------------------------------ Vehicle Nr. 2: high wheeler -- Hochrad Nr 2 ---------- -%------ pedal behind the frontwheel -- Pedal hinter dem Rad --------------------------------------- -\rput{!phiF 5 mul Gang div}(!AF1x AF1y){% -\psline[linewidth=3pt,border=0.5pt,bordercolor=white](0,0)(1.15;135) -\rput{!phiF 5 mul Gang div 180 add neg}(1.11;135){\pspolygon*[linearc=0.08,border=0.5pt,bordercolor=white]% -(-0.25,0.06)(-0.1,0.08)(-0.08,0.16)(0.08,0.16)(0.1,0.08)(0.25,0.06)% -(0.25,-0.06)(0.1,-0.08)(0.08,-0.16)(-0.08,-0.16)(-0.1,-0.08)(-0.25,-0.06)} -\pscircle[linewidth=0.75pt,dimen=outer,linecolor=white](1.1;135){0.075} -}% -%-------------------------------------------------------------------------------------------- -\rput{!phiF}(!AF1x AF1y){% % frontwheel ----- Vorderrad -\multido{\iA=0+10}{36}{% -\rput(0,0){\psline[linewidth=0.7pt,border=0.35pt,bordercolor=white](0,0)(!rF \iA\space PtoC)}% -} -\pscircle[linewidth=7.5pt,dimen=outer](0,0){!rF}% -\pscircle[linewidth=0.6pt,dimen=outer,linecolor=white](0,0){!rF 0.955 mul}% -\pscircle*(0,0){0.3}% -\pscircle*[linecolor=white](0,0){0.2}% -\pscircle*(0,0){0.14}% -}% -%------------------------------------------------------------------------------------------------- -%-------------------------------------------------------------------------------------------- -\rput{!phiF}(!AF1x AF1y){% -\pscircle*(0,0){0.14}% -\pscircle[linewidth=0.6pt,linecolor=white](0,0){0.07} -}% -%-------------------------------------------------------------------------------------------------- -\rput{!phiB}(0,0){% backwheel ------ Hinterrad -\multido{\iA=0+24}{15}{% -\rput(0,0){\psline[linewidth=0.7pt,border=0.35pt,bordercolor=white](0,0)(!rB \iA\space PtoC)}% -}% -\pscircle[linewidth=4.3pt,dimen=outer](0,0){!rB}% -\pscircle[linewidth=0.6pt,dimen=outer,linecolor=white](0,0){!rB 0.91 mul}% -\pscircle*[linewidth=0.5pt](0,0){0.14}% -}% -%-------- front to back connection -- Verbindung vordere Gabel zur Hinterachse ---------------------- -\rput(!AF1x AF1y){\pnode(!rF 1.06 mul 170 PtoC){ZA}}% -\let\myfillcolor\pslinecolor -\rput(!AF1x AF1y){% -\pscustom[linewidth=0.4pt,linecolor=white,fillstyle=solid,fillcolor=\myfillcolor]{% -\parametricplot[linewidth=0.5pt]{88}{10}{-(rF+0.36)*cos(Pi*t/180)|(rF+0.36)*sin(Pi*t/180)}% -\psarc(!AF1x 0.1 sub neg AF1y 0.03 add neg){0.08}{200}{300} -\parametricplot[linewidth=0.5pt]{10}{88}{-(rF+0.08-(t-100)*0.0353*2.5/78)*cos(Pi*t/180)|(rF+0.08-(t-100)*0.0353*2.5/78)*sin(Pi*t/180)} -\closepath -}% -}% -\rput(0,0){% -\pscircle[linestyle=none,fillstyle=solid,fillcolor=\pslinecolor](0,0){0.08}% -\pscircle[linewidth=0.9pt,linecolor=white](0,0){0.08}} -%-------------------------------------------------------------------------------------------------- -%-------front part and handle bar --- Vordere Gabel und Lenker ------------------------------------------- -\rput{1.5}(!AF1x AF1y){% -\psline[linewidth=5.5pt,border=0.5pt,bordercolor=white](0,0.1)(!0 rF 1.265 mul)% -\pscircle*[linewidth=0.6pt](!0 rF 1.28 mul){0.075}% -\psline[linewidth=5.5pt,linecolor=white](!0 rF 1.265 mul)(!0 rF 1.27 mul) -\psline[linewidth=3pt,linearc=0.02](!0 rF 1.24 mul)(!0.193 rF 1.24 mul)(!0.33 rF 1.31 mul)(!0.38 rF 1.31 mul) -\psline[linewidth=4.7pt,linearc=0.02,linecap=1,border=0.5pt,bordercolor=white](!0.42 rF 1.32 mul)(!0.455 rF 1.22 mul) -\pscircle*[linewidth=0.6pt](!0.455 rF 1.223 mul){0.145}% -\pscircle[linecolor=white,linewidth=0.5pt](!0.455 rF 1.223 mul){0.085}% -\pscircle[linecolor=white,linewidth=0.65pt](!0.455 rF 1.223 mul){0.15}% -\psline[linewidth=5.5pt,linecolor=white](!0 rF 1.208 mul)(!0 rF 1.211 mul) -\psline[linewidth=8.5pt](!0 rF 1.186 mul)(!0 rF 1.208 mul) -\psline[linewidth=5.5pt,linecolor=white](!0 rF 1.183 mul)(!0 rF 1.186 mul) -}% -%-------------------------------------------------------------------------------------------------- -%--------- pedal in front of the frontwheel --- Pedal vor dem Rad --------------------------------------------------------------- -\rput{!phiF 5 mul Gang div 180 add}(!AF1x AF1y){% -\psline[linewidth=3pt,border=0.5pt,bordercolor=white](0.12;135)(1.15;135) -\rput{!phiF 5 mul Gang div 180 add neg}(1.11;135){\pspolygon*[linearc=0.08,border=0.5pt,bordercolor=white]% -(-0.25,0.06)(-0.1,0.08)(-0.08,0.16)(0.08,0.16)(0.1,0.08)(0.25,0.06)% -(0.25,-0.06)(0.1,-0.08)(0.08,-0.16)(-0.08,-0.16)(-0.1,-0.08)(-0.25,-0.06)} -\pscircle[linewidth=0.75pt,dimen=outer,linecolor=white](1.1;135){0.075} -\psline[linewidth=3pt](0,0)(0.12;135) -\pscircle[linecolor=white,linewidth=0.3pt](0,0){0.065}% -} -%--------------------------------------------------------------------------------- -\rput(2,5.87){% -%--------- special garniture frontwheel ---- Geschweifte Linie am Vorderrad ------------------------------------------------------- -\rput(0,0){% -\pscustom[linewidth=1pt]{% -\psarc(3.16,1.53){0.1}{0}{180} -\psbezier(3.06,1.2)(3.2,1.05)(3.5,1.05) -\psbezier(3.63,1.05)(3.6,1.16)(3.53,1.17) -}% -\pscircle*[linewidth=0.6pt](3.2,1.5){0.075}% -\psellipse*[rot=0,linewidth=0.6pt](3.47,1.15)(0.085,0.05)% -}% -%------------ part of saddle ------ Sattelhalterung ----------------------------------------------------------- -\pscircle*[linewidth=0.6pt](2.63,1.6){0.068}% -\rput(0,0){% -\pscustom[showpoints=true,linewidth=1pt]{% -\psarcn(2.66,1.63){0.097}{235}{10} -\psbezier(2.8,1.3)(2.1,1.32)(1.4,1.32) -\psbezier(1.1,1.32)(0.9,1.1)(0.82,1) -\psbezier(0.74,0.9)(0.6,0.54)(0.3,0.54) -\psbezier(0.15,0.54)(0.17,0.7)(0.17,0.7) -\psarcn(0.31,0.7){0.14}{180}{0} -\psbezier(0.44,0.61)(0.34,0.61)(0.32,0.61) -}% -\pscircle*[linewidth=0.6pt](0.33,0.673){0.075}% -}% -\rput(0,0){% -\pscustom[showpoints=true,linewidth=1pt]{% -\psbezier(0.35,0.53)(0.3,0.45)(0.1,0.48)(0.1,0.4) -\psbezier(0.1,0.31)(0.18,0.345)(0.19,0.39) -}% -\psellipse*[rot=50,linewidth=0.6pt](0.2,0.4)(0.055,0.03)% -}% -%------------------------------------------------------------------------------------------------------- -%------------------ saddle ----- Sattel ---------------------------------------------------------------- -\rput(0,0){% -\pscustom[showpoints=true,linewidth=0.4pt,fillstyle=solid,fillcolor=\pslinecolor]{% -\psbezier(1.34,1.25)(1.42,1.25)(1.43,1.25)(1.58,1.25) -\psbezier(1.58,1.35)(1.62,1.38)(1.65,1.4)% <<----- Start the white line -- Startpunkt f\"{u}r die wei{\ss}e Linie -\psbezier(1.7,1.37)(1.8,1.38)(1.91,1.38) -\psbezier(1.98,1.38)(2.35,1.48)(2.35,1.55) -\psbezier(2.35,1.59)(2.2,1.6)(2.15,1.6) -\psbezier(2.05,1.6)(1.8,1.55)(1.74,1.55) -\psbezier(1.56,1.55)(1.41,1.75)(1.1,1.75) -\psbezier(0.9,1.75)(0.79,1.65)(0.79,1.59) -\lineto(0.835,1.59) -\psbezier(0.83,1.5)(1.12,1.45)(1.2,1.42) -\psbezier(1.25,1.4)(1.34,1.38)(1.34,1.25) -\closepath -}% -\psbezier[linecolor=white,linewidth=0.6pt](0.8,1.584)(1.1,1.75)(1.4,1.58)(1.67,1.38) -}% -}}% -\def\Truck{% \psset{radH=1.9,radV=1.9,d=6.28,vehicle=\Truck,ownvehicle=\ownTestB,frontwheel=\segWheel,backwheel=\segWheel} -% ------------------------------ Vehicle Nr. 3: truck ----------------------------------- -\rput(0,-2){% -\pscustom[linecolor=blue,fillstyle=solid,fillcolor=blue!20]{% -\psline(8.6,2)(8.38,2) -\psarc(6.28,2){2.1}{0}{180} -\psline(4.18,2)(2.1,2) -\psarc(0,2){2.1}{0}{180} -\psline(-2,2)(-2.2,2) -\moveto(-2.2,2) -\psline[linearc=0.2](-2.2,4.4)(2.5,4.4)(2.5,6)(4.4,6)(5.2,4.4)(7.8,4)(8.6,2) -\moveto(4.2,5.7) -\pspolygon[linearc=0.1](4.4,5.7)(2.8,5.7)(2.8,4.2)(5.1,4.2) -}% -\pswedge[fillstyle=solid,fillcolor=gray!20](6.28,2){2.1}{0}{180} -\pswedge[fillstyle=solid,fillcolor=gray!20](0,2){2.1}{0}{180} -\psarc[doubleline=true,doublecolor=blue!50](0,2){2.1}{0}{180} -\psarc[doubleline=true,doublecolor=blue!50](6.28,2){2.1}{0}{180} -% le phare -\pswedge[linecolor=blue,fillstyle=solid,fillcolor=blue!20](8.65,3){0.4}{90}{270} -% le conducteur -\pstVerb{% - /r1 0.4 def - /a1 -50 def - /b1 50 def -% r2=r1*sqrt(2-sin(2*a1)) - /r2 r1 2 1 a1 cos sub mul sqrt mul def - /b2 a1 sin neg 1 a1 cos sub atan def -}% -\rput(3.8,4.6){ -\pscustom[fillstyle=solid,fillcolor={[RGB]{253 191 183}}]{\psarc(0,0){!r1}{20}{-20} - \psarc(!r1 0){0.075}{-90}{90} - \closepath} -\psarcn(!r1 0){!r2}{!b2 180 add}{!b2 180 add b1 sub} -\pscircle*(0.2,0.1){0.05} -\psarc(0.2,0.1){0.1}{60}{130} -\psarc(-0.1,0){0.1}{120}{240} -\pscustom[fillstyle=solid,fillcolor=red]{\psarc(0,0){!r1}{60}{160}\closepath} -\pcline[nodesepB=1](!r1 60 cos mul r1 60 sin mul)(!r1 160 cos mul r1 160 sin mul)} -}% -\rput{!phiB}(0,0){% ----------- backwheel --- Hinterrad -\pst@backwheel -}% -\rput{!phiF}(!/rB rF def AF1x AF1y){%----- frontwheel --- Vorderrad -\pst@frontwheel -}% -}% - -%%%%%%%%%% Le tracteur %%%%%%%%%%%% -\definecolor{couleurtracteur}{RGB}{130 196 108} -\def\Tractor{% le tracteur seul -\psset{fillcolor=couleurtracteur} -\pscustom[fillstyle=solid]{% -\psline(!rB 160 cos mul rB 160 sin mul)(!rB 1.25 mul 160 cos mul rB 1.25 mul 160 sin mul)(-0.8,1.6)(1.2,1.5)(1.7,0.6)(1.7,0)(! rB 0) -\psarc(0,0){!rB}{0}{160} -\closepath} -\pscustom[fillstyle=solid]{ -\psline(1.4,1.14)(1.7,0.6)(1.7,-0.6)(2.4,-0.6)(2.4,-0.4)(3,-0.4) -\psarcn(!dA12 rF rB sub){!rF}{180}{126.87} -\psline(!dA12 rF 126.87 cos mul add rF rB sub rF 126.87 sin mul add)(2.4,0.4)(2.4,1.6)(2,1.14)(1.4,1.14) -\closepath} -\psline[linecolor=blue](2.4,1.6)(2,2.8)(0.4,2.8)(0.2,1.55) -\pscustom[fillstyle=solid]{% -\psline(2,2.8)(0.4,2.8)(0.2,1.55)(-0.2,1.57)(0.2,3.1)(1.932,3.004) -\closepath} -\pscustom[fillstyle=solid]{% -\psline(!dA12 rF 126.87 cos mul add rF rB sub rF 126.87 sin mul add)(2.4,0.4)(2.4,1.6)(4,1.4)(!dA12 rF 80 cos mul add rF rB sub rF 80 sin mul add) -\psarc(!dA12 rF rB sub){!rF}{80}{126.87} -\closepath} -\pscustom[fillstyle=solid]{% -\psline(3.9,1.43)(3.9,1.8)(3.7,1.8)(3.7,1.4555) -\closepath} -\pspolygon[fillstyle=solid,fillcolor=magenta](4,1.8)(3.6,1.8)(3.8,2) -\psline(2.4,-0.4)(1.7,-0.4) -\psdiamond[linejoin=1,fillstyle=solid,fillcolor=lightgray,doubleline](2.55,1)(0.12,0.2) -\rput(3.3,1){\textsf{\textbf{Renault}}}% -\rput{!phiB}(0,0){% ----------- backwheel --- Hinterrad -%\pst@backwheel -\TractorRearWheel -}% -\rput{!phiF}(!AF1x AF1y){%----- frontwheel --- Vorderrad -%\pst@frontwheel -\TractorFrontWheel -}% -} - -\def\Segway{% ------------------------------ Vehicle Nr. 4: Segway ----------------------------------- -\rput{!gamma neg}(0,0){% -\psframe*(-0.6,1)(0.2,4.5) -\rput{-10}(-0.8,0){\psframe*[framearc=0.6](-0.9,4.3)(0.4,7.4)} -\pscircle*(0.3,8.2){0.78} -\psline[linewidth=7pt](1,0.5)(2.1,5.2) -%% ARM -\psline[linewidth=12pt](2.1,5.4)(0.6,5.8)(0.2,6.8) -\pscircle*(2.1,5.4){0.3} -\pscircle[linecolor=white](2.1,5.4){0.25} -\psarc[linewidth=5pt](0,0){1.55}{0}{180} -%% la ROUE -}% -\rput{!phiB}(0,0){% ----------- backwheel --- Hinterrad -\pst@backwheel -}% -}% - -\def\UniCycle{% ------------------------------ Vehicle UniCycle ----------------------------------- -\rput{!gamma neg}(0,0){% -\rput{!phiB 180 add}(0,0){%!phiB -\rput{!phiB 180 add neg}(0,1){\psframe*[linecolor=black!80,framearc=0.15,linestyle=none,linewidth=0pt](-0.25,-0.1)(0.25,0.1)}%!phiB neg -\pscustom[linecolor=black!80,linewidth=0.015,fillstyle=solid,fillcolor=black!60]{% -\psarc(0,1){0.11}{0}{180} -\psbezier(-0.11,0.95)(-0.08,0.8)(-0.08,0.7) -\lineto(-0.08,0.4) -\psbezier(-0.08,0.25)(-0.12,0.05)(-0.12,0) -\psarc(0,0){0.12}{180}{0} -\psbezier(0.12,0.05)(0.08,0.25)(0.08,0.4) -\lineto(0.08,0.7) -\psbezier(0.08,0.8)(0.11,0.95)(0.11,1) -\closepath -}% -\pscircle[linecolor=black!90,linewidth=0.015](0,1){0.09}% -\pscircle*[linecolor=black](0,1){0.02} -} -\rput{!phiB}(0,0){% ----------- backwheel --- Hinterrad -\pst@backwheel -}% -%--- Gabel nach oben und Sattel -\rput{0}(0,0){%!gamma neg -\psframe*[linecolor=black!80,framearc=0.1,linestyle=none,linewidth=0pt](-0.085,2.9)(0.085,4) -\psframe*[linecolor=black!90,framearc=0.1,linestyle=none,linewidth=0pt](-0.1,1.9)(0.1,3) -\psframe*[linecolor=black,framearc=0.1,linestyle=none,linewidth=0pt](-0.16,2.85)(0.12,3.05) -\psframe*[linecolor=black!80,framearc=0.15,linestyle=none,linewidth=0pt](-0.12,0)(0.12,2) -%------------ Sattel ---------------------- -\pspolygon[fillstyle=solid,fillcolor=black!90,linearc=0.1,linestyle=none](-0.7,4)(1,4)(1,4.4)(0.6,4.35)(-0.2,4.35)(-0.7,4.4) -}% -%Pedale vorne -\rput{!phiB}(0,0){%!phiB -\pscustom[linecolor=black!80,linewidth=0.015,fillstyle=solid,fillcolor=black!60]{% -\psarc(0,1){0.11}{0}{180} -\psbezier(-0.11,0.95)(-0.08,0.8)(-0.08,0.7) -\lineto(-0.08,0.4) -\psbezier(-0.08,0.25)(-0.12,0.05)(-0.12,0) -\psarc(0,0){0.12}{180}{0} -\psbezier(0.12,0.05)(0.08,0.25)(0.08,0.4) -\lineto(0.08,0.7) -\psbezier(0.08,0.8)(0.11,0.95)(0.11,1) -\closepath -}% -\rput{!phiB neg}(0,1){\psframe*[linecolor=black!80,framearc=0.15,linestyle=none,linewidth=0pt](-0.25,-0.1)(0.25,0.1)}%!phiB neg -\pscircle[linecolor=black!60,linewidth=0.015](0,1){0.09}% -\pscircle*[linecolor=black](0,1){0.02} -\pscircle[linecolor=black,linewidth=0.015](0,0){0.1}% -\pscircle*[linecolor=black](0,0){0.02} -}% -}% -}% - -\def\SelfDefinedVehicle{% ------------- Vehicle Nr. 5: self defined vehicle -- Eigenes Fahrzeug Nr 5 -\pst@ownvehicle -\rput{!phiB}(0,0){% ----------- backwheel --- Hinterrad -\pst@backwheel -}% -\rput{!phiF}(!/rB rF def AF1x AF1y){%----- frontwheel --- Vorderrad -\pst@frontwheel -}% -}% - -\def\wheelA{% -\multido{\iA=0+36}{10}{% -\rput(0,0){\psline[linewidth=2pt](0,0)(!rB \iA\space PtoC)}% -}% -\pscircle[linewidth=5pt,dimen=outer](0,0){!rB}% -\pscircle*(0,0){0.25}% -}% - -\def\wheelB{% -\multido{\iA=0+36}{10}{% -\definecolor[ps]{couleurrayons}{hsb}{\iA\space 360 div 1 1 }% -\rput(0,0){\psline[linecolor=couleurrayons,linewidth=2pt](0,0)(!rB 0.9 mul \iA\space PtoC)} -}% -\pscircle[linewidth=5pt,dimen=outer](0,0){!rB}% -\pscircle*(0,0){0.25}% -}% - -\def\wheelC{% -\pscircle[fillstyle=solid,fillcolor=gray!20,dimen=outer](0,0){!rB}% -\multido{\iA=0+36}{10}{% -\definecolor[ps]{couleurrayons}{hsb}{\iA\space 360 div 1 1 }% -\rput(0,0){\psline[linecolor=couleurrayons,linewidth=2pt](0,0)(!rB 0.9 mul \iA\space PtoC)} -}% -\pscircle[linewidth=15pt,dimen=outer](0,0){!rB}% -\pscircle*(0,0){0.25}% -}% - -\def\wheelD{% -\multido{\iA=0+36}{10}{% -\definecolor[ps]{couleurrayons}{hsb}{\iA\space 360 div 1 1 }% -\rput(0,0){\psline[linecolor=couleurrayons,linewidth=1pt](0,0)(!rB \iA\space PtoC)} -}% -\pscircle[linewidth=1pt,dimen=outer](0,0){!rB}% -\pscircle*(0,0){0.1}% -} - -\def\arrowWheel{% -\pscircle*(0,0){!rB} -\pscircle*[linecolor=white](0,0){0.2} -\multido{\iA=0+30}{12}{% -\psline[linecolor=white](0,0)(!rB 0.7 mul \iA\space PtoC) -}% -\pscircle[linecolor=white,linewidth=2pt](0,0){!rB 0.7 mul} -\psline[linecolor=magenta,linewidth=1.5pt]{->}(0,0)(!rB -90 PtoC) -}% - -\def\TruckWheel{% -\pscircle*(0,0){!rB} -\pscircle*[linecolor=white](0,0){0.2} -\multido{\iA=0+30}{12}{% -\psline[linecolor=white](0,0)(!rB 0.65 mul \iA\space PtoC) -}% -\pscircle[linecolor=white,linewidth=2pt](0,0){!rB 0.65 mul} -}% - -\def\segWheel{% -\pscircle*(0,0){!rB} -\pscircle*[linecolor=white](0,0){0.2} -\multido{\iA=0+30}{12}{% -\psline[linecolor=white](0,0)(!rB 0.9 mul \iA\space PtoC) -}% -\pscircle[linecolor=white,linewidth=2pt](0,0){!rB 0.9 mul} -}% - -\def\SpokesWheelCrossed{ -\multido{\iM=0+40,\iJ=60+40}{10}{\psline[linewidth=0.1](!rB 0.16 mul \iM\space PtoC)(!rB \iJ\space PtoC) - \psline[linewidth=0.1](!rB 0.16 mul \iM\space PtoC)(!rB \iJ\space 10 add PtoC)} -\pscircle[fillstyle=solid,fillcolor=white,linewidth=0.1]{!rB 0.16 mul 0.2 add} -\multido{\i=0+40}{9}{\pscircle[linestyle=dashed,linecolor=gray!50](!rB 0.16 mul \i\space PtoC){! 0.1 rB 0.16 mul mul} - \pscircle*(!rB 0.16 mul \i\space 20 add PtoC){! 0.1 rB 0.16 mul mul}} -\multido{\iM=20+40,\iJ=-30+40}{10}{\psline[linewidth=0.1](!rB 0.16 mul \iM\space PtoC)(!rB \iJ\space PtoC) - \psline[linewidth=0.1](!rB 0.16 mul \iM\space PtoC)(!rB \iJ\space 10 sub PtoC)} -\pscircle[dimen=outer,linewidth=0.5,linecolor=black!90]{!rB}% -\pscircle[dimen=outer,linewidth=0.1,linecolor=white]{!rB 0.3 sub}% -} - -\def\SpokesWheelA{ -\multido{\iM=0+40,\iJ=60+40}{10}{\psline[linewidth=0.025](!rB 0.1 mul \iM\space PtoC)(!rB \iJ\space PtoC) - \psline[linewidth=0.025](!rB 0.1 mul \iM\space PtoC)(!rB \iJ\space 10 add PtoC)} -\pscircle[fillstyle=solid,fillcolor=white,linewidth=0.025]{!rB 0.1 mul 0.1 add} -\multido{\i=0+40}{9}{\pscircle[linewidth=0.025,linecolor=gray!50](!rB 0.1 mul \i\space PtoC){! 0.03 rB 0.16 mul mul} - \pscircle*[linewidth=0.025](!rB 0.1 mul \i\space 20 add PtoC){! 0.03 rB 0.16 mul mul}} -\multido{\iM=20+40,\iJ=-30+40}{10}{\psline[linewidth=0.025](!rB 0.1 mul \iM\space PtoC)(!rB \iJ\space PtoC) - \psline[linewidth=0.025](!rB 0.1 mul \iM\space PtoC)(!rB \iJ\space 10 sub PtoC)} -\pscircle[dimen=outer,linewidth=0.2,linecolor=black!90]{!rB}% -\pscircle[dimen=outer,linewidth=0.02,linecolor=white]{!rB 0.15 sub}% -} - -\def\SpokesWheelB{ -\multido{\iM=0+40,\iJ=60+40}{10}{\psline[linewidth=0.015,linecolor=black!80](!rB 0.11 mul \iM\space PtoC)(!rB \iJ\space PtoC) - \psline[linewidth=0.015,linecolor=black!80](!rB 0.11 mul \iM\space PtoC)(!rB \iJ\space 10 add PtoC)} -\pscircle[fillstyle=solid,fillcolor=white,linewidth=0.025,linecolor=black!80]{!rB 0.11 mul 0.06 add} -\multido{\i=0+40}{9}{\pscircle[linewidth=0.01,linecolor=black!50](!rB 0.11 mul \i\space PtoC){! 0.09 rB 0.16 mul mul} - \pscircle*[linewidth=0.01,linecolor=black](!rB 0.11 mul \i\space 20 add PtoC){! 0.09 rB 0.16 mul mul}} -\multido{\iM=20+40,\iJ=-30+40}{10}{\psline[linewidth=0.015,linecolor=black!80](!rB 0.11 mul \iM\space PtoC)(!rB \iJ\space PtoC) - \psline[linewidth=0.015,linecolor=black!80](!rB 0.11 mul \iM\space PtoC)(!rB \iJ\space 10 sub PtoC)} -\psline[linewidth=0.04,linecolor=black!90](!rB 0.3 sub -85 PtoC)(!rB 0.4 sub -85 PtoC)% -\psline[linewidth=0.048,linecolor=black!90](!rB 0.4 sub -85 PtoC)(!rB 0.44 sub -85 PtoC)% -\pscircle[dimen=outer,linewidth=0.3,linecolor=black!90]{!rB}% -\pscircle[dimen=outer,linewidth=0.09,linecolor=gray!20]{!rB 0.18 sub}% -} - -\def\TractorFrontWheel{% -\pscircle*(0,0){0.25}% -% 0.5=rF/2 0.2=rF/5 -\pscircle[linewidth=0.5,dimen=outer](0,0){!rF} -\multido{\iA=0+36}{10}{% -\psline[linewidth=2pt,linecolor=red](0,0)(!rF 2 div \iA\space PtoC)(!rF \iA\space PtoC)}% -\pscircle[dimen=outer,linewidth=0.3,linecolor={[rgb]{0.95 0.95 0}}](0,0){!rF 2 div} -\pscircle(0,0){!rF 5 div} -\multido{\iA=0+36}{10}{% -\psline[linewidth=2pt](0,0)(!rF 2 div \iA\space PtoC)}% -}% -\def\TractorRearWheel{% -\pscircle*(0,0){0.25}% -% 0.7=rB/2 0.28=rb/5 -\pscircle[linewidth=0.7,dimen=outer](0,0){!rB} -\multido{\iA=0+36}{10}{% -\psline[linewidth=2pt,linecolor=red](0,0)(!rB 2 div \iA\space PtoC)(!rB \iA\space PtoC)}% -\pscircle[dimen=outer,linewidth=0.42,linecolor={[rgb]{0.95 0.95 0}}](0,0){!rB 2 div} -\pscircle(0,0){!rB 5 div} -\multido{\iA=0+36}{10}{% -\psline[linewidth=2pt](0,0)(!rB 2 div \iA\space PtoC)}% -}%
\ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/README.md b/Master/texmf-dist/doc/generic/pst-vehicle/README.md index a0d88352299..2497a64a469 100644 --- a/Master/texmf-dist/doc/generic/pst-vehicle/README.md +++ b/Master/texmf-dist/doc/generic/pst-vehicle/README.md @@ -1,10 +1,9 @@ -The pst-vehicle package -Author: J. Gilg, M. Luque, T. Söll -Dated: 2017/06/01 +The pst-vehicle package Author: J. Gilg, M. Luque, T. Söll + +Dated: 2017/06/05 Version 1.1 pst-vehicle contains the following: 1) pst-vehicle Package. - -T. Söll
\ No newline at end of file +T. Söll diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.pdf b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.pdf Binary files differnew file mode 100644 index 00000000000..71c3c513b99 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.pdf diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.tex b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.tex new file mode 100644 index 00000000000..9557ef3c694 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc-fr.tex @@ -0,0 +1,938 @@ +%% $Id: pst-pers-doc.tex 2017-04-05 J\"{u}rgen, Thomas $ +\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,fleqn, + smallheadings, headexclude,footexclude,oneside,dvipsnames,svgnames,x11names]{pst-doc} +%\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings +% headexclude,footexclude,oneside,dvipsnames,svgnames,distiller]{pst-doc} +\usepackage[utf8]{inputenc} +\listfiles +\usepackage[autostyle]{csquotes} +\usepackage{biblatex}%\usepackage[style=dtk]{biblatex} +\addbibresource{pst-vehicle-doc.bib} +\usepackage[utf8]{inputenc} +%\let\pstpersFV\fileversion +\usepackage[e]{esvect} % f\"{u}r sch\"{o}nere Vektorpfeile +\usepackage{pst-vehicle,pst-eucl,pstricks-add,animate} +\let\belowcaptionskip\abovecaptionskip + +\usepackage{etex} % um die Anzahl der Register zu erh\"{o}hen (sonst nur 256) + + +\newcommand{\qrq}{\ensuremath{\quad \Rightarrow \quad}} +\newcommand{\envert}[1]{\left\lvert#1\right\rvert} +\let\abs=\envert +\newcommand{\BM}[1]{\ensuremath{\text{\boldmath $#1$\unboldmath}}} +\newcommand{\Anf}[1]{\glqq{}#1\grqq{}} + +\def\bgImage{% +\begin{pspicture}(0,0)(14,8) +\def\FuncA{0.5*cos(1.5*x)+0.25*x} +\psplot[plotpoints=500]{0}{16}{\FuncA} +\psVehicle[vehicle=\HighWheeler,showSlope=false,linecolor=Gold]{0.35}{1.2}{\FuncA}% +\psVehicle[vehicle=\Bike,style=bike,showSlope=false,linecolor=green!70]{0.5}{6}{\FuncA}% +\psVehicle[vehicle=\Truck,style=truck,showSlope=false]{0.35}{12.2}{\FuncA}% +\end{pspicture} +} + +\lstset{language=PSTricks,morekeywords={psVehicle}\footnotesize\ttfamily} +% +\psset{labelFontSize=\scriptstyle}% for mathmode +\psset{algebraic=true} +\newpsstyle{quadrillage}{subgriddiv=2,gridlabels=5pt,gridwidth=0.3pt,gridcolor=black!50,subgridwidth=0.2pt,subgridcolor=black} + +\newcommand{\Epkt}[3]{\ensuremath{{\text{#1}}\left(\,#2\;\vline\;#3\,\right)}} + +\makeatletter +\def\curveVal{\def\pst@par{}\pst@object{curveVal}}% +\def\curveVal@i#1#2{\@ifnextchar[% +{\curveVal@ii{#1}{#2}}% +{\curveVal@ii{#1}{#2}[1]}}% +\def\curveVal@ii#1#2[#3]{% +\pst@killglue% +\begingroup% +\use@par% +\begin@SpecialObj% +\pst@Verb{% + /Pi 3.1415926 def + /rpn {tx@AlgToPs begin AlgToPs end cvx} def + /x0 #1 def + /rW #3 def + /func (#2) rpn def + /Diff (Derive(1,#2)) rpn def + /DiffI (Derive(2,#2)) rpn def + /dAB (sqrt(1+Diff^2)) rpn def + /dABdiff (Derive(1,sqrt(1+(Derive(1,#2))^2))) rpn def + /x x0 def func /funcx0 exch def % ----- f(x0) + /x x0 def Diff /Diffx0 exch def % ----- f'(x0) + /x x0 def DiffI /DiffIx0 exch def % --- f''(x0) + /KWRho {DiffI 1 Diff dup mul add 3 exp sqrt div} def + /x x0 def KWRho /KWRhox0 exch def % --- f''(x0) + /tA 1 1 Diffx0 dup mul add sqrt div def % + /deltax0 tA Diffx0 mul neg KWRhox0 div def + /deltay0 tA KWRhox0 div def + /deltaxW tA Diffx0 mul neg rW mul def + /deltayW tA rW mul def + /Rho {1 KWRho div} def + /x x0 def Rho abs /Rhox0 exch def + /alpha deltax0 deltay0 atan def + /beta Diffx0 1 atan def + /tex beta cos def + /tey beta sin def + /gamma 90 beta add def + /nex gamma cos def + /ney gamma sin def +}% +\pnode(!x0 funcx0){PC}% +\pnode(!x0 deltaxW 2 mul add funcx0 deltayW 2 mul add){QC}% +\pnode(!x0 deltax0 add funcx0 deltay0 add){MC}% +\pnode(!x0 deltaxW add funcx0 deltayW add){MW}% +\showpointsfalse% +\end@SpecialObj% +\endgroup\ignorespaces% +}% +\makeatother + + +\begin{document} + +\title{pst-vehicle v 1.0} +%\subtitle{A PSTricks package for slipping/rolling vehicles on curves of any kind of mathematical functions} +\subtitle{Un package PSTricks pour faire rouler sans glisser des v\'{e}hicules sur des courbes d\'{e}finies par une fonction math\'{e}matique} +\author{Thomas \textsc{S\"{o}ll}\\ +avec la collaboration de\\ +J\"{u}rgen \textsc{Gilg} et Manuel \textsc{Luque}} +\date{\today} + +\maketitle + +\tableofcontents +\psset{unit=1cm} + + +\clearpage + + +\begin{abstract} +Ce package a \'{e}t\'{e} cr\'{e}\'{e} pour illustrer la notion de pente, le coefficient directeur de la tangente en un point d'une courbe. Sur la route, une c\^{o}te difficile ou une descente dangereuse \`{a} cause de leur d\'{e}clivit\'{e} sont signal\'{e}es par un panneau indiquant la pente de ce tron\c{a}on de route, par exemple 10\%. C'est donc tout naturellement qu'est venue l'id\'{e}e de repr\'{e}senter un v\'{e}hicule roulant sans glissement sur une courbe en y incluant la possibilit\'{e} de visualiser la pente. +\newline +Les v\'{e}hicules sont des engins \`{a} 2 roues (tout au moins vus de profil) et \`{a} une roue. Ces engins peuvent rouler sans glissement sur une courbe d\'{e}finie par sa fonction \textit{y=f(x)}. +Une option permet de tracer la droite joignant les points de contact des roues avec la courbe ou la tangente au point de contact s'il s'agit d'un monocycle. +Une autre particularit\'{e} est la possibilit\'{e} d'afficher un inclinom\`{e}tre (Slope-o-Meter). +6 v\'{e}hicules sont pr\'{e}d\'{e}finis, mais peuvent \^{e}tre personnalis\'{e}s par le choix de la couleur ou des roues dont 12 types sont pr\'{e}d\'{e}finies. +Il est \'{e}galement possible de dessiner son propre v\'{e}hicule. +\end{abstract} +\clearpage + +\section{\protect\'{E}tude th\'{e}orique du roulement sans glissement, d'une roue sur une courbe} +Dans cette premi\`{e}re partie, nous \'{e}tablissons les r\'{e}sultats n\'{e}cessaires permettant de d\'{e}terminer suivant la position choisie pour le v\'{e}hicule sur la courbe (l'abscisse du point de contact de roue arri\`{e}re), les \'{e}l\'{e}ments suivants : +\begin{itemize} + \item la position du point de contact de la roue avant ; + \item les angles de rotation de chacune des roues depuis l'origine du mouvement. +\end{itemize} +Thomas S\"{o}ll a r\'{e}dig\'{e} une th\'{e}orie plus compl\`{e}te sur ce type de mouvement. + +\subsection{Les roues ont des rayons \'{e}gaux} + +\psset{saveNodeCoors,NodeCoorPrefix=n,algebraic} +\def\myFunk{2-0.25*x^2} +\def\abl{Derive(1,\myFunk)} +\begin{pspicture}(-10,-1)(8,3.5) +\psplot{-3.8}{3.8}{\myFunk} +\pnode(*-3 {\myFunk}){A} +\pnode(*nAx {\abl}){A_St} +\pnode(*-1 {\myFunk}){B} +\pnode(*nBx {\abl}){B_St} +\psdot(A) +\psdot(B) +\uput*[-90](A){\small$\Epkt{}{x_0}{f(x_0)}$} +\uput*[-90](B){\small$\Epkt{}{x}{f(x)}$} + +\pnode(!nAx nA_Sty 1 nA_Sty dup mul add sqrt div sub nAy 1 1 nA_Sty dup mul add sqrt div add){H} +\pnode(!nBx nB_Sty 1 nB_Sty dup mul add sqrt div sub nBy 1 1 nB_Sty dup mul add sqrt div add){V} +\psdot[linecolor=red](H) +\psdot[linecolor=red](V) +\pscircle[dimen=outer,linecolor=gray](H){1} +\pscircle[dimen=outer,linecolor=gray](V){1} + +\pcline[linecolor=red](H)(V)\naput*{$R$} +\pcline[linecolor=blue](H)(A)\naput{$r$} +\pcline[linecolor=blue](V)(B)\naput{$r$} + +\psplotTangent[linestyle=dashed,linecolor=Green]{nAx}{1.5}{\myFunk} +\psplotTangent[linestyle=dashed,linecolor=Green]{nBx}{1.5}{\myFunk} +\end{pspicture} + +Soit $x_0$ l'abscisse du point de contact de la roue arri\`{e}re (de rayon $r$) avec la courbe : +\begin{equation*} +\vec{x}_0= +\begin{pmatrix} +x_0\\ +f(x_0) +\end{pmatrix} +\end{equation*} +La tangente en ce point a pour vecteur directeur : +\begin{equation*} +\vec{t}_0= +\begin{pmatrix} +1\\ +f'(x_0) +\end{pmatrix} +\end{equation*} +Le vecteur unitaire normal en $x_0$ s'\'{e}crit : +\begin{equation*} +\vec{n}_{0x_0}=\frac{1}{\sqrt{1+f'(x_0)^2}} +\begin{pmatrix} +-f'(x_0)\\ +1 +\end{pmatrix} +\end{equation*} +Appelons $H$ l'axe de la roue arri\`{e}re, son vecteur position a pour coordonn\'{e}es : +\begin{align*} +\overrightarrow{OH}&=\vec{x}_0+r\cdot \vec{n}_{0x_0}\\ +&=\begin{pmatrix} +x_0-r\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}\\ +f(x_0)+r\frac{1}{\sqrt{1+f'(x_0)^2}} +\end{pmatrix} +\end{align*} +$x$ est l'abscisse du point de contact de la roue avant avec la courbe. +Le vecteur unitaire normal en ce point est : +\begin{equation*} +\vec{n}_{0x}=\frac{1}{\sqrt{1+f'(x)^2}} +\begin{pmatrix} +-f'(x)\\ +1 +\end{pmatrix} +\end{equation*} +Soit $V$ l'axe de la roue avant, son vecteur position a pour coordonn\'{e}es : +\begin{align*} +\overrightarrow{OV}&=\vec{x}+r\cdot \vec{n}_{0x}\\ +&=\begin{pmatrix} +x-r\frac{f'(x)}{\sqrt{1+f'(x)^2}}\\ +f(x)+r\frac{1}{\sqrt{1+f'(x)^2}} +\end{pmatrix} +\end{align*} +Si $R$ est la distance entre les 2 axes : +\begin{align*} +|\overrightarrow{OV}-\overrightarrow{OH}|&=R\\ +\left| +\begin{pmatrix} +x-r\frac{f'(x)}{\sqrt{1+f'(x)^2}}-\left(x_0-r\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}\right)\\ +f(x)+r\frac{1}{\sqrt{1+f'(x)^2}}-\left(f(x_0)+r\frac{1}{\sqrt{1+f'(x_0)^2}}\right) +\end{pmatrix} +\right|&=R\\ +\left|\begin{pmatrix} +x-x_0+r\left(\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}-\frac{f'(x)}{\sqrt{1+f'(x)^2}}\right)\\ +f(x)-f(x_0)+r\left(\frac{1}{\sqrt{1+f'(x)^2}}-\frac{1}{\sqrt{1+f'(x_0)^2}}\right) +\end{pmatrix} +\right|&=R +\end{align*} +Nous obtenons une \'{e}quation en $x$, o\`{u} $x$ est l'abscisse du point de tangence de la roue avant avec la courbe. La r\'{e}solution de cette \'{e}quation fixera la position de la roue avant. +\begin{equation*} +\left(x-x_0+r\left(\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}-\frac{f'(x)}{\sqrt{1+f'(x)^2}}\right)\right)^2+\left(f(x)-f(x_0)+r\left(\frac{1}{% +\sqrt{1+f'(x)^2}}-\frac{1}{\sqrt{1+f'(x_0)^2}}\right)\right)^2=R^2 +\end{equation*} + + +\subsection{Les roues ont des rayons diff\'{e}rents} +\psset{saveNodeCoors,NodeCoorPrefix=n,algebraic} +\def\myFunk{2-0.25*x^2} +\def\abl{Derive(1,\myFunk)} +\begin{pspicture}(-10,-2)(8,3) +\psplot{-4}{4}{\myFunk} +\pnode(*-3 {\myFunk}){A} +\pnode(*nAx {\abl}){A_St} +\pnode(*-1 {\myFunk}){B} +\pnode(*nBx {\abl}){B_St} +\psdot(A) +\psdot(B) +\uput*[-90](A){\small$\Epkt{}{x_0}{f(x_0)}$} +\uput*[-90](B){\small$\Epkt{}{x}{f(x)}$} + +\pnode(!nAx nA_Sty 1 nA_Sty dup mul add sqrt div sub nAy 1 1 nA_Sty dup mul add sqrt div add){H} +\pnode(!nBx nB_Sty 1 nB_Sty dup mul add sqrt div 0.7 mul sub nBy 1 1 nB_Sty dup mul add sqrt div 0.7 mul add){V} +\psdot[linecolor=red](H) +\psdot[linecolor=red](V) +\pscircle[dimen=outer,linecolor=gray](H){1} +\pscircle[dimen=outer,linecolor=gray](V){0.7} + +\pcline[linecolor=red](H)(V)\naput*{$R$} +\pcline[linecolor=blue](H)(A)\naput{$r_1$} +\pcline[linecolor=blue](V)(B)\naput{$r_2$} + +\psplotTangent[linestyle=dashed,linecolor=Green]{nAx}{1.5}{\myFunk} +\psplotTangent[linestyle=dashed,linecolor=Green]{nBx}{1.5}{\myFunk} +\end{pspicture} + +Les coordonn\'{e}es du point de contact de la roue arri\`{e}re de rayon $r_1$ avec la courbe sont : +\begin{equation*} +\vec{x}_0= +\begin{pmatrix} +x_0\\ +f(x_0) +\end{pmatrix} +\end{equation*} +En ce point, le vecteur directeur de la tangente est : +\begin{equation*} +\vec{t}_0= +\begin{pmatrix} +1\\ +f'(x_0) +\end{pmatrix} +\end{equation*} +et le vecteur unitaire normal : +\begin{equation*} +\vec{n}_{0x_0}=\frac{1}{\sqrt{1+f'(x_0)^2}} +\begin{pmatrix} +-f'(x_0)\\ +1 +\end{pmatrix} +\end{equation*} +Le vecteur position du point $H$ (axe de la roue arri\`{e}re) a pour coordonn\'{e}es : +\begin{align*} +\overrightarrow{OH}&=\vec{x}_0+r_1\cdot \vec{n}_{0x_0}\\ +&=\begin{pmatrix} +x_0-r_1\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}\\ +f(x_0)+r_1\frac{1}{\sqrt{1+f'(x_0)^2}} +\end{pmatrix} +\end{align*} +$x$ est l'abscisse du point de contact de la roue avant avec la courbe. +Le vecteur unitaire normal en ce point est : +\begin{equation*} +\vec{n}_{0x}=\frac{1}{\sqrt{1+f'(x)^2}} +\begin{pmatrix} +-f'(x)\\ +1 +\end{pmatrix} +\end{equation*} +$r_2$ est le rayon de la roue avant, les coordonn\'{e}es du point $V$ (axe de la roue avant) sont : +\begin{align*} +\overrightarrow{OV}&=\vec{x}+r_2\cdot \vec{n}_{0x}\\ +&=\begin{pmatrix} +x-r_2\frac{f'(x)}{\sqrt{1+f'(x)^2}}\\ +f(x)+r_2\frac{1}{\sqrt{1+f'(x)^2}} +\end{pmatrix} +\end{align*} +la distance entre les 2 axes vaut $R$, on en d\'{e}duit : +\begin{align*} +|\overrightarrow{OV}-\overrightarrow{OH}|&=R\\ +\left| +\begin{pmatrix} +x-r_2\frac{f'(x)}{\sqrt{1+f'(x)^2}}-\left(x_0-r_1\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}\right)\\ +f(x)+r_2\frac{1}{\sqrt{1+f'(x)^2}}-\left(f(x_0)+r_2\frac{1}{\sqrt{1+f'(x_0)^2}}\right) +\end{pmatrix} +\right|&=R\\ +\end{align*} +Nous obtenons une \'{e}quation en $x$, o\`{u} $x$ est l'abscisse du point de tangence de la roue avant avec la courbe. +\begin{equation*} +\left(x-x_0+r_1\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}-r_2\frac{f'(x)}{\sqrt{1+f'(x)^2}}\right)^2+ +\left(f(x)-f(x_0)+r_2\frac{1}{\sqrt{1+f'(x)^2}}-r_1\frac{1}{\sqrt{1+f'(x_0)^2}}\right)^2=R^2 +\end{equation*} + +\subsection{Angle d'inclinaison de la droite joignant les axes des roues arri\`{e}re et avant} + +Les 2 roues sont pos\'{e}es sur le plan horizontal. +\psset{saveNodeCoors,NodeCoorPrefix=n,algebraic} +\def\myFunk{0} +\def\abl{Derive(1,\myFunk)} + +\begin{pspicture}(-10,-0.5)(8,4) +\psplot{-8}{4}{\myFunk} +\pnode(*-5 {\myFunk}){A} +\pnode(*nAx {\abl}){A_St} +\pnode(*1 {\myFunk}){B} +\pnode(*nBx {\abl}){B_St} + +%\uput*[-90](A){\small$\Epkt{}{x_0}{f(x_0)}$} +%\uput*[-90](B){\small$\Epkt{}{x}{f(x)}$} + +\pnode(!nAx nA_Sty 1 nA_Sty dup mul add sqrt div 2 mul sub nAy 1 1 nA_Sty dup mul add sqrt div 2 mul add){H} +\pnode(!nBx nB_Sty 1 nB_Sty dup mul add sqrt div 1.4 mul sub nBy 1 1 nB_Sty dup mul add sqrt div 1.4 mul add){V} +\psdot[linecolor=red](H) +\psdot[linecolor=red](V) +\uput[90](H){H} +\uput[90](V){V} +\pscircle[dimen=outer,linecolor=gray](H){2} +\pscircle[dimen=outer,linecolor=gray](V){1.4} + +\pcline[linecolor=red](H)(V)\naput{$R$} +\pcline[linecolor=blue](H)(A)\naput{$r_1$} +\pcline[linecolor=blue](V)(B)\naput{$r_2$} + +\pcline[linecolor=gray,linestyle=dashed](H)(!nHx nVy)\nbput{$r_1-r_2$} +\pcline[linecolor=gray,linestyle=dashed](!nHx nVy)(!nVx nVy)\nbput{$\sqrt{R^2-(r_1-r_2)^2}$} + +\pnode(!nHx nVy){X} + +\pstMarkAngle[linecolor=red,arrows=->,MarkAngleRadius=4.5,LabelSep=3.6]{H}{V}{X}{\color{red}$\alpha$} +\end{pspicture} +: +L'angle d'inclinaison initial $\alpha$ entre la droite joignant les 2 axes et l'horizontale est: +\begin{equation*} + \alpha=\arctan\left(\frac{r_1-r_2}{\sqrt{R^2-(r_1-r_2)^2}}\right) +\end{equation*} +%If the plane is not horizontal, there is an additional angle $\beta$ given by the function $f(x)$: +Si le plan n'est pas horizontal, il faut ajouter un angle $\beta$ que l'on obtient grâce à la fonction $f(x)$ : +\psset{saveNodeCoors,NodeCoorPrefix=n,algebraic} +\def\myFunk{0} +\def\abl{Derive(1,\myFunk)} +\begin{pspicture}(-10,0)(8,5.5) +\rput{-20}{ +\psplot{-8}{4}{\myFunk} +\pnode(*-5 {\myFunk}){A} +\pnode(*nAx {\abl}){A_St} +\pnode(*1 {\myFunk}){B} +\pnode(*nBx {\abl}){B_St} +\psdot(A) +\psdot(B) +\uput*[-90](A){\small$\Epkt{}{x_0}{f(x_0)}$} +\uput*[-90](B){\small$\Epkt{}{x}{f(x)}$} + +\pnode(!nAx nA_Sty 1 nA_Sty dup mul add sqrt div 2 mul sub nAy 1 1 nA_Sty dup mul add sqrt div 2 mul add){H} +\pnode(!nBx nB_Sty 1 nB_Sty dup mul add sqrt div 1.4 mul sub nBy 1 1 nB_Sty dup mul add sqrt div 1.4 mul add){V} +\psdot[linecolor=red](H) +\psdot[linecolor=red](V) +\uput[90](H){H} +\uput[90](V){V} +\pscircle[dimen=outer,linecolor=gray](H){2} +\pscircle[dimen=outer,linecolor=gray](V){1.4} + +\pcline[linecolor=red](H)(V)\naput{$R$} +\pcline[linecolor=blue](H)(A)\naput{$r_1$} +\pcline[linecolor=blue](V)(B)\naput{$r_2$} + +\pcline[linecolor=gray,linestyle=dashed](H)(!nHx nVy)\nbput{$r_1-r_2$} +\pcline[linecolor=gray,linestyle=dashed](!nHx nVy)(!nVx nVy)\nbput{$\sqrt{R^2-(r_1-r_2)^2}$} + +\pnode(!nHx nVy){X} + +\pstMarkAngle[linecolor=red,arrows=->,MarkAngleRadius=4.5,LabelSep=3.6]{H}{V}{X}{\color{red}$\alpha$} +} + +\rput(H){% +\pcline[linestyle=dashed](0,0)(5.5,0)\naput{$x_V-x_H$} +\pcline[linestyle=dashed](5.5,0)(V)\naput{$y_V-y_H$} +} +\uput{1cm}[-13](H){\color{blue}$\beta$} +\end{pspicture} + +Les coordonn\'{e}es de l'axe $V$ de la roue avant sont : +\begin{equation*} +\overrightarrow{OV}=\vec{x}+r_2\cdot \vec{n}_{0x} +=\begin{pmatrix} +x-r_2\frac{f'(x)}{\sqrt{1+f'(x)^2}}\\ +f(x)+r_2\frac{1}{\sqrt{1+f'(x)^2}} +\end{pmatrix} +=\begin{pmatrix} +x_V\\y_V +\end{pmatrix} +\end{equation*} +Celles du point $H$ axe de la roue avant : +\begin{equation*} +\overrightarrow{OH}=\vec{x}_0+r_1\cdot \vec{n}_{0x_0} +=\begin{pmatrix} +x_0-r_1\frac{f'(x_0)}{\sqrt{1+f'(x_0)^2}}\\ +f(x_0)+r_1\frac{1}{\sqrt{1+f'(x_0)^2}} +\end{pmatrix} +=\begin{pmatrix} +x_H\\y_H +\end{pmatrix} +\end{equation*} +L'angle $\beta$ vaut : +\begin{equation*} +\beta=\arctan\left(\frac{y_V-y_H}{x_V-x_H}\right) +\end{equation*} +On obtient ainsi l'angle total $\gamma$ +\begin{equation*} + \gamma=-(\alpha+\beta) +\end{equation*} + +\subsection{D\'{e}termination du rayon de courbure} +Une courbe peut être imagin\'{e}e comme une suite de nombreux petits arcs circulaires. Le rayon des cercles associ\'{e}s respectifs est appel\'{e} rayon de courbure. Plus la courbure d'une courbe est accentu\'{e}e, plus les intervalles doivent être choisis petits afin de pouvoir les assimiler avec la meilleure approximation possible à des arcs de cercle. + +Pour trouver le rayon d'un tel arc et donc le rayon de la courbure de la courbe au point $x_{0}$, la normale en $x_{0}$ devrait couper la normale en $x_ {0} + \epsilon $. Ceci donne la valeur $x$ du centre du cercle de courbure M de la courbe. Le dessin suivant illustre cette notion. + +\begin{pspicture}[showgrid=false,shift=0,saveNodeCoors,NodeCoorPrefix=n](0,-0.6)(18,9.2) +\def\funkg{0.4*(x-3)*sin(0.2*(x-5))} +\curveVal{5}{\funkg}[5] + +\psplot[algebraic=true,plotpoints=500,linecolor=black,linewidth=2pt,yMaxValue=25,yMinValue=-15]{0}{18}{\funkg} +%\psplot[algebraic=false,plotpoints=500,linecolor=red,linewidth=2pt,yMaxValue=25,yMinValue=-15]{0}{18}{Rho} +\pcline[linewidth=1.5pt,nodesepB=-2.6,linecolor=BrickRed](!x0 funcx0)(!x0 deltax0 add funcx0 deltay0 add) +\pcline[linewidth=1.5pt,nodesepB=-2.6,linecolor=Green](*{x0 0.5 add} {\funkg})(!x0 deltax0 add funcx0 deltay0 add) +\psdot[dotsize=5pt](!x0 funcx0) +\psdot[dotsize=5pt](*{x0 0.5 add} {\funkg}) +\psdot[dotsize=5pt](!x0 deltax0 add funcx0 deltay0 add) +\uput{0.25}[150]{0}(!x0 deltax0 add funcx0 deltay0 add){M} +\psarc[linewidth=1.5pt,linestyle=dashed,linecolor=cyan](!x0 deltax0 add funcx0 deltay0 add){!1 KWRhox0 div}{230}{380} +\pcline[offset=-30pt,tbarsize=20pt,linewidth=1.5pt,linecolor=BrickRed]{|<->|}(!x0 funcx0)(!x0 deltax0 add funcx0 deltay0 add) +\ncput*{\color{BrickRed}$\rho$} +%\pcline[offset=20pt,tbarsize=20pt,linewidth=1.5pt]{|<->|}(!x0 deltax0 add funcx0)(!x0 deltax0 add funcx0 deltay0 add) +%\ncput*{$\Delta y_{m}$} +\pcline[linecolor=orange,linewidth=1.2pt]{<->}(!x0 deltax0 add funcx0)(!x0 deltax0 add funcx0 deltay0 add) +\naput[nrot=:U]{\color{orange}$\Delta y_{m}$} +\pcline[linecolor=orange,linewidth=1.2pt]{<->}(!x0 deltax0 add funcx0)(!x0 funcx0) +\nbput[nrot=:U]{\color{orange}$\Delta x_{m}$} +\end{pspicture} + +\makebox[7cm][l]{\textbf{Normale en \BM{x_{0}}:}} $ n(x)=-\frac{1}{f'(x_{0})}\cdot (x-x_{0})+f(x_{0})$ + +\makebox[7cm][l]{\textbf{Normale en \BM{x_{0}+\epsilon}:}} $ n_{\epsilon}(x)=-\frac{1}{f'(x_{0}+\epsilon)}\cdot (x-x_{0}-\epsilon)+f(x_{0}+\epsilon)$ + +\makebox[7cm][l]{\textbf{Point d'intersection des normales:}} $n_{\epsilon}(x) - n(x) = 0$ +\begin{alignat*}{2} +- \frac{x}{f'(x_{0}+\epsilon)} + \frac{x_{0}}{f'(x_{0}+\epsilon)} + \frac{\epsilon}{f'(x_{0}+\epsilon)} + f(x_{0}+\epsilon) + \frac{x}{f'(x_{0})} - \frac{x_{0}}{f'(x_{0})} - f(x_{0}) & = 0&\qquad& \\[4pt] +\frac{x\cdot \left[f'(x_{0}+\epsilon) - f'(x_{0})\right]}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} - \frac{x_{0}\cdot \left[f'(x_{0}+\epsilon) - f'(x_{0})\right]}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} + \frac{\epsilon}{f'(x_{0}+\epsilon)} + f(x_{0}+\epsilon) - f(x_{0}) & = 0&\qquad& |:\epsilon\\[4pt] +\frac{x\cdot \frac{f'(x_{0}+\epsilon) - f'(x_{0})}{\epsilon}}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} - \frac{x_{0}\cdot \frac{f'(x_{0}+\epsilon) - f'(x_{0})}{\epsilon}}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} + \frac{1}{f'(x_{0}+\epsilon)} + \frac{f(x_{0}+\epsilon) - f(x_{0})}{\epsilon} & = 0&\qquad&| \lim_{\epsilon\to 0}\\[4pt] +\frac{x\cdot f''(x_{0})}{f'(x_{0})\cdot f'(x_{0})} - \frac{x_{0}\cdot f''(x_{0})}{f'(x_{0})\cdot f'(x_{0})} + \frac{1}{f'(x_{0})} + f'(x_{0}) & = 0&& +\end{alignat*} +En r\'{e}solvant par rapport \`{a} $x$ : +\begin{equation*} + x = x_{0} - \frac{f'(x_{0})}{f''(x_{0})} - \frac{\left[f'(x_{0})\right]^{3}}{f''(x_{0})} = x_{0} + \underbrace{\left[-\frac{f'(x_{0})}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\}\right]}_{\Delta x_{m}} +\end{equation*} +Pour le changement correspondant $\Delta y_{m}$ de l'ordonnée $y$, nous multiplions la pente de la normale par $\Delta x_{m}$ : +\begin{equation*} + \Delta y_{m} = -\frac{1}{f'(x_{0})} \cdot \Delta x_{m} =\frac{1}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\} +\end{equation*} +Avec le th\'{e}or\`{e}me de Pythagore, on obtient le rayon de courbure : +\begin{equation*} + \rho = \sqrt{(\Delta x_{m})^{2} + (\Delta y_{m})^{2}} = \sqrt{(\Delta x_{m})^{2} + \left[-\frac{1}{f'(x_{0})} \cdot \Delta x_{m}\right]^{2}} = \abs{\frac{\Delta x_{m}}{f'(x_{0})}} \cdot \sqrt{\left[f'(x_{0})\right]^{2} + 1} +\end{equation*} +En utilisant $\Delta x_{m} = -\frac{f'(x_{0})}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\}$--- on obtient : +\begin{equation*} + \rho = \abs{\frac{\frac{f'(x_{0})}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\}}{f'(x_{0})}} \cdot \sqrt{\left[f'(x_{0}\right]^{2} + 1} = + \frac{\sqrt{\left\{1 + \left[f'(x_{0})\right]^{2}\right\}^{3}}}{\abs{f''(x_{0})}} +\end{equation*} + + + +\subsection{Roulement sans glissement} + +\begin{pspicture}[showgrid=false,shift=0,saveNodeCoors,NodeCoorPrefix=n](0,-0.8)(18,11) +\def\funkg{0.4*(x-3)*sin(0.2*(x-5))} +\curveVal{7}{\funkg}[3] +%\psplot[algebraic=true,plotpoints=500,linecolor=black,linewidth=2pt,yMaxValue=25,yMinValue=-15]{0}{18}{\funkg} +\pcline[linewidth=1.5pt,nodesepB=0,linecolor=BrickRed](PC)(MC) +\psdot[dotsize=5pt](MC) +\uput{0.2}[40]{0}(MC){M$_{\text{c}}$} +\psarc[linewidth=1.5pt,linecolor=cyan](MC){!Rhox0}{255}{340} +\psdot[dotsize=5pt](PC) +\uput{0.25}[-60]{0}(PC){P} +\uput{0.25}[60]{0}(QC){Q} +\uput{0.3}[-100]{0}(MW){M$_{\text{w}}$} +\pnode([offset=1.3cm]{MC}PC){PCO} +\pnode([offset=-1.3cm]{PC}MC){MCO} +\pnode([offset=-1.3cm]{PC}MW){MWO} +\psline[linewidth=1.5pt](MWO)(MW) +\psline[linewidth=1.5pt](MCO)(MC) +\pcline[offset=-5pt,linewidth=1.5pt,linecolor=BrickRed]{<->}(MWO)(MCO) +\ncput*{\color{BrickRed}$R=\rho - r$} +\psdot[dotsize=5pt](QC) +\psdot[dotsize=5pt](MW) +\pscircle[linewidth=1.5pt](MW){!rW} +\psarcn[linewidth=1.5pt,linecolor=BrickRed]{->}(MW){!rW 0.5 add}{180}{150} +\uput{3.65}[165]{0}(MW){$\omega=\dot{\varphi}$} +%\multido{\iC=0+1}{11}{% +%\definecolor[ps]{rainbow}{hsb}{0.9 \iC\space 15 div sub 0.95 0.7 }% +%\rput{!-90 \iC\space 0.5 mul 180 mul Pi div rW div sub alpha sub}(MW){\psline[linewidth=1.5pt,linecolor=rainbow](!rW 0)(!rW 0.2 sub 0)} +%\rput{!-90 \iC\space 0.5 mul 180 mul Pi div Rhox0 div sub alpha sub}(MC){\psline[linewidth=1.5pt,linecolor=rainbow](!Rhox0 0)(!Rhox0 0.2 add 0)} +%} +%%\rput(MW){\psline[linewidth=1.5pt]{->}(0,0)(!tex 4 mul tey 4 mul)} +\rput{!beta}(MW){\pcline[linewidth=1.2pt,linecolor=BrickRed]{->}(0,0)(2,0)\nbput[npos=0.7]{\color{BrickRed}$\vv{v_{\text{c}}}$}} +\rput{0}(MC){\uput{!Rho}[-19]{0}(0,0){\color{cyan}G$_{f}$}} +\rput{-40}(MC){\pnode(!Rho rW sub 0){MWI}} +\rput{-40}(MC){\pnode(!Rho 0){PCI}} +\pscircle[linewidth=1.2pt,linecolor=gray,linestyle=dashed](MWI){!rW} +\psarc[linewidth=1.5pt,linecolor=gray,linestyle=dashed](MC){!Rhox0 rW sub}{290}{330} +\pcline[linewidth=1pt,nodesepB=0,linecolor=cyan!60,linestyle=dashed](PCI)(MC) +\pcline[linewidth=1.5pt,nodesepB=0,linecolor=gray,linestyle=dashed](MWI)(MC) +\psdot[dotsize=5pt,linecolor=gray](MWI) +\psdot[dotsize=5pt,linecolor=gray](PCI) +\uput{0.3}[-20]{0}(PCI){$\text{P}'$} +\uput{0.3}[0]{0}(MWI){$\text{M}_{\text{w}}'$} +\multido{\iC=0+1}{11}{% +\definecolor[ps]{rainbow}{hsb}{0.9 \iC\space 15 div sub 1 \iC\space 11 div sub 0.7 }% +\rput{!-90 \iC\space 0.5 mul 180 mul Pi div rW div sub -50 sub}(MWI){\psline[linewidth=1.5pt,linecolor=rainbow](!rW 0)(!rW 0.2 sub 0)} +\rput{!-90 \iC\space 0.5 mul 180 mul Pi div Rhox0 div sub -50 sub}(MC){\psline[linewidth=1.5pt,linecolor=rainbow](!Rhox0 0)(!Rhox0 0.2 add 0)} +} +%\multido{\iC=0+1}{11}{% +%\rput{!-90 \iC\space 0.5 mul 180 mul Pi div rW div sub alpha sub 50 gamma sub Rhox0 mul rW div sub}(MWI){\psline[linewidth=1.5pt,linecolor=gray!50](!rW 0)(!rW 0.2 sub 0)} +%} +\rput{!beta}(PC){\pcline[linewidth=2pt,linecolor=Green]{->}(0,0)(1.5,0)\nbput[npos=0.7,nrot={!beta neg}]{\color{Green}$\vv{e_{\text{t}}}$}} +\rput{!gamma}(PC){\pcline[linewidth=2pt,linecolor=Green]{->}(0,0)(1.5,0)\nbput[npos=0.7,nrot={!gamma neg}]{\color{Green}$\vv{e_{\text{n}}}$}} +\end{pspicture} + +La condition de roulement d'une roue sans force de glissement, est que le centre de la roue doit faire une rotation autour du point P. Par cons\'{e}quent, le centre se d\'{e}place avec la vitesse: +\begin{equation*} + \vv{v_{\text{c}}} = r\cdot \dot{\varphi}\cdot \vv{e_{\text{t}}} \qquad \text{avec } \vv{e_{\text{t}}} \text{ le vecteur unitaire tangent } +\end{equation*} +Parce que le centre de la roue se d\'{e}place \'{e}galement le long du cercle de centre de M$_{\text {c}}$ et de rayon $\rho - r$ et donc que le point P se d\'{e}place d'une distance $\Delta s $ au point $\text{P}'$ --- les vitesses en M$_\text{w}$ et en P se comportent comme leurs rayons correspondants : +\begin{equation*} + \vv{v_{\text{c}}} = \frac{\rho - r}{\rho}\cdot \frac{\Delta s}{\Delta t} \cdot \vv{e_{\text{t}}} \qquad \text{avec des intervalles tr\`{e}s petits, on a }\quad \frac{\Delta s}{\Delta t} = \dot{s} +\end{equation*} +En \'{e}galant les membres de droite des 2 \'{e}quations de la vitesse, on obtient finalement : +\begin{equation*} + r\cdot \dot{\varphi} = \frac{\rho - r}{\rho}\cdot \dot{s} \qrq \frac{\text{d}\varphi}{\text{d}t} = \frac{\rho - r}{\rho \cdot r}\cdot \frac{\text{d}s}{\text{d}t} \qrq \text{d}\varphi = \frac{\rho - r}{\rho \cdot r}\cdot \text{d}s = \frac{\rho - r}{\rho \cdot r}\cdot \sqrt{1+[f'(x)]^{2}} \cdot \text{d}x +\end{equation*} + + +\section{Les v\'{e}hicules pr\'{e}d\'{e}finis} + + +Ce package contient un certain nombre de v\'{e}hicules pr\'{e}d\'{e}finis, comme \emph{Bike}, \emph{Tractor}, \emph{Highwheeler}, \emph{Truck}, \emph{Segway}, \emph{Unicycle}. Les deux derniers v\'{e}hicules ont un seul axe, les autres 2 axes. + + +Sauf pour les mono-cycles, un v\'{e}hicule est d\'{e}fini par le rayon de chaque roue, [\texttt{rB}] pour la roue arri\`{e}re et [\texttt{rF}] pour la roue avant et la distance [\texttt{d}] entre les axes des deux roues. Leurs valeurs doivent être donn\'{e}es dans les options de la commande \texttt{\textbackslash psVehicle[options]}. Le design d'un v\'{e}hicule, la carrosserie ou le cadre de bicyclette doivent \'{e}videmment être adapt\'{e}s aux dimensions indiqu\'{e}es ci-dessus. Un certain nombre de types de roues ont aussi \'{e}t\'{e} pr\'{e}d\'{e}finies. + +Nous avons \'{e}galement configur\'{e} certains \verb+\newpsstyle+ pour chacun des v\'{e}hicules, o\`{u} les dimensions et le choix des roues sont fix\'{e}s. +\begin{lstlisting} +\newpsstyle{segway}{rB=1.4,backwheel=\segWheel}%MonoAxis +\newpsstyle{unicycle}{rB=1.6,backwheel=\SpokesWheelB}%MonoAxis +\newpsstyle{tractor}{d=4,rB=1.4,rF=1.0} +\newpsstyle{truck}{backwheel=\TruckWheel,frontwheel=\TruckWheel,d=6.28,rB=1.9,rF=1.9} +\newpsstyle{bike}{backwheel=\SpokesWheelB,frontwheel=\SpokesWheelB,d=5.8,rB=1.6,rF=1.6} +\end{lstlisting} +Voici une liste des v\'{e}hicules qui accompagnent ce package : + + +\subsection{\textbackslash Bike} + +\begin{LTXexample}[pos=l,width=4cm] +\begin{pspicture}(0,0)(4,3) +\def\FuncA{1*cos(x)+1} +\psframe*[linecolor=yellow!10](0,0)(4,3) +\psgrid[style=quadrillage](0,0)(4,3) +\psplot{0}{4}{\FuncA} +\psVehicle[vehicle=\Bike,showSlope]{0.25}{1.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash Tractor} + +\begin{LTXexample}[pos=l,width=4cm] +\begin{pspicture}(-1,4)(3,7) +\def\funkg{sqrt(-x^2+2*x*10+1)} +\psframe*[linecolor=yellow!10](-1,4)(3,7) +\psgrid[style=quadrillage](-1,4)(3,7) +\psplot[plotpoints=500,algebraic]{0.5}{4}{\funkg} +\psVehicle[vehicle=\Tractor,showSlope=false]{0.5}{1}{\funkg} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash HighWheeler} + +\begin{LTXexample}[pos=l,width=4cm] +\begin{pspicture}(0,-1)(4,3) +\def\FuncA{-0.25*(x-2)^2+0.5} +\psframe*[linecolor=yellow!10](0,-1)(4,3) +\psgrid[style=quadrillage](0,-1)(4,3) +\psplot[yMinValue=0]{0}{4}{\FuncA} +\psVehicle[vehicle=\HighWheeler]{0.25}{1.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash Truck} + +\begin{LTXexample}[pos=l,width=4cm] +\begin{pspicture}(0,-1)(4,3) +\def\FuncA{0.3*1.6^x} +\psframe*[linecolor=yellow!10](0,-1)(4,3) +\psgrid[style=quadrillage](0,-1)(4,3) +\psplot{0}{4}{\FuncA} +\psVehicle[vehicle=\Truck,style=truck]{0.3}{1.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash Segway} + +\begin{LTXexample}[pos=l,width=4cm] +\begin{pspicture}(0,-1)(4,4) +\def\FuncA{(x-3)*sin(0.2*(x-1))+1} +\psframe*[linecolor=yellow!10](0,-1)(4,4) +\psgrid[style=quadrillage](0,-1)(4,4) +\psplot{0}{4}{\FuncA} +\psVehicle[vehicle=\Segway,style=segway]{0.25}{1.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash UniCycle} + +\begin{LTXexample}[pos=l,width=4cm] +\begin{pspicture}(0,0)(4,4) +\def\FuncA{(x-3)*sin(0.2*(x-1))+1} +\psframe*[linecolor=yellow!10](0,0)(4,4) +\psgrid[style=quadrillage](0,0)(4,4) +\psplot{0}{4}{\FuncA} +\psVehicle[vehicle=\UniCycle,style=unicycle,showSlope=false]{0.5}{2.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + + +\section{Roue pr\'{e}d\'{e}finies} +Voici les roues pr\'{e}d\'{e}finies pouvant être utilis\'{e}es pour les roues avant ou arri\`{e}re. + + +\subsection{\textbackslash wheelA} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\wheelA} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash{}wheelB} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\wheelB} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash wheelC} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\wheelC} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash wheelD} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\wheelD} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash arrowWheel} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\arrowWheel} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash TruckWheel} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\TruckWheel} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash segWheel} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\segWheel} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash SpokesWheelCrossed} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\SpokesWheelCrossed} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash SpokesWheelA} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\SpokesWheelA} +\end{pspicture} +\end{LTXexample} + +\subsection{\textbackslash SpokesWheelB} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\SpokesWheelB} +\end{pspicture} +\end{LTXexample} + +\subsection{\textbackslash TractorFrontWheel} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rF 1 def 0 0){\TractorFrontWheel} +\end{pspicture} +\end{LTXexample} + + + +\subsection{\textbackslash TractorRearWheel} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\TractorRearWheel} +\end{pspicture} +\end{LTXexample} + + + +\section{Comment utiliser la commande} +Cette commande s'\'{e}crit : +\begin{BDef} +\Lcs{psVehicle}\OptArgs\Largb{scaling factor}\Largb{abscissa back wheel}\Largb{equation function} +\end{BDef} + +\textbf{Note important :} Cette fonction doit être donn\'{e}e en notation alg\'{e}brique en non en RPN. + +\LPack{pst-vehicle} contient les options \nxLkeyword{epsilon=}, \nxLkeyword{rB=}, \nxLkeyword{rF=}, \nxLkeyword{d=}, \nxLkeyword{gang=}, \nxLkeyword{vehicle=}, \nxLkeyword{ownvehicle=}, \nxLkeyword{backwheel=}, \nxLkeyword{frontwheel=}, \nxLkeyword{MonoAxis=}, \nxLkeyword{showSlope=} et \nxLkeyword{startPos=}. +\begin{quote} +\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule +\emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule +\Lkeyword{epsilon} & 1e-6 & Incr\'{e}ment\\ +\Lkeyword{rB} & 1.6 & rayon de la roue arri\`{e}re\\ +\Lkeyword{rF} & 1.6 & rayon de la roue avant\\ +\Lkeyword{d} & 5.8 &distance entre les axes de 2 roues\\ +\Lkeyword{gang} & 1 &rapport de transmission entre le p\'{e}dalier et la roue arri\`{e}rel\\ +\Lkeyword{vehicle} & \texttt{\textbackslash Bike} & Bike choisi par d\'{e}faut\\ +\Lkeyword{ownvehicle} & & Utilis\'{e} pour cr\'{e}er un v\'{e}hicule personnalis\'{e}\\ +\Lkeyword{backwheel} & \texttt{\textbackslash wheelA} & wheelA est choisi par d\'{e}faut\\ +\Lkeyword{frontwheel} & \texttt{\textbackslash wheelA} & wheelA est choisi par d\'{e}faut\\ +\Lkeyword{MonoAxis} & false & Si le v\'{e}hicule a un axe\\ +\Lkeyword{showSlope} & true & Affiche la pente du v\'{e}hicule et son signe\\ +\Lkeyword{startPos} & 0 & Synchronise la rotation initiale des roues au point de départ\\ +\bottomrule +\end{tabularx} +\end{quote} + + + +\section{Le Slope-o-Meter} + +Un indicateur de pente pour afficher l'angle de la pente de la droite joignant les points de contact du v\'{e}hicule avec la courbe. l'effet est tr\`{e}s spectaculaire dans le cas d'une animations. +Cette commande poss\`{e}de deux arguments permettant de la personnaliser avec \emph{couleur} et \emph{angle de l'aiguille}. + +%\textbf{Note :} Le nom \emph{Slope-o-Meter} n'est pas du tout une d\'{e}nomination officielle, mais nous avons eu beaucoup de plaisir à lui donner ce nom sp\'{e}cial. +\textbf{Note:} The name \emph{Slope-o-Meter} is not at all an academically correct notation, but we all together had great fun to give it that special name. +\begin{LTXexample}[pos=l,width=5cm] +\begin{pspicture}(-2.5,-2.5)(2.5,2.5) +\pstVerb{/omega 30 def} +\rput(0,0){\SlopeoMeter{cyan!90}{omega}} +\end{pspicture} +\end{LTXexample} + + + +\section{Exemples} + +\subsection{V\'{e}hicule pr\'{e}d\'{e}fini avec roues personnalis\'{e}es} + +\begin{LTXexample}[pos=l,width=7cm] +\begin{pspicture}(1,1)(8,6) +\def\FuncA{0.5*cos(x)+2} +\psframe*[linecolor=yellow!10](1,1)(8,6) +\psgrid[style=quadrillage](1,1)(8,6) +\psplot{1}{8}{\FuncA} +\psVehicle[vehicle=\Truck,showSlope=false,frontwheel=\wheelC,backwheel=\arrowWheel,rB=1,rF=1]{0.5}{3.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + +\subsection{Personnaliser ou cr\'{e}er un v\'{e}hicule} + +Pour concevoir votre propre v\'{e}hicule, il n'y a que quelques r\`{e}gles à suivre : +\begin{itemize} +\item Choisir \nxLkeyword{vehicle=\textbackslash SelfDefinedVehicle} +\item Vous pouvez choisir les roues pr\'{e}d\'{e}finies ou bien dessiner vos propres roues avec les options \nxLkeyword{backwheel=} and \nxLkeyword{frontwheel=} +\item \textbf{Note important :} L'axe de la roue arri\`{e}re est plac\'{e} en : \Epkt{O}{0}{0} +\item La position de la roue avant est calcul\'{e}e automatiquement en fonction de la distance donn\'{e}e entre les deux axes \nxLkeyword{d=} +\item Dessinez votre v\'{e}hicule comme s'il se trouvait sur un plan horizontal, puis d\'{e}finissez-le et r\'{e}glez-le avec i.\,e. \nxLkeyword{ownwheel=\textbackslash myVeh} comme indiqu\'{e} dans l'exemple ci-dessous. +\end{itemize} +\begin{LTXexample}[pos=l,width=5cm] +\def\myVeh{\psframe*[linecolor=red](-1,-0.25)(5,2)} +\begin{pspicture}(2,1)(7,4) +\def\FuncA{0.5*sin(x)+2} +\psframe*[linecolor=yellow!10](2,1)(7,4) +\psgrid[style=quadrillage](2,1)(7,4) +\psplot{2}{7}{\FuncA} +\psVehicle[vehicle=\SelfDefinedVehicle,ownvehicle=\myVeh,showSlope=false,frontwheel=\wheelA,backwheel=\wheelB,rB=1,rF=1,d=4]{0.5}{3.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + +Le même type de v\'{e}hicule est choisi celui de l'exemple pr\'{e}c\'{e}dent, mais la roue avant a un rayon plus petit. + +\begin{LTXexample}[pos=l,width=5cm] +\def\myVeh{\psframe*[linecolor=red](-1,-0.25)(5,2)} +\begin{pspicture}(2,1)(7,4) +\def\FuncA{0.5*sin(x)+2} +\psframe*[linecolor=yellow!10](2,1)(7,4) +\psgrid[style=quadrillage](2,1)(7,4) +\psplot{2}{7}{\FuncA} +\psVehicle[vehicle=\SelfDefinedVehicle,ownvehicle=\myVeh,showSlope=false,frontwheel=\wheelA,backwheel=\wheelB,rB=1,rF=0.7,d=4]{0.5}{3.2}{\FuncA} +\end{pspicture} +\end{LTXexample} + + + +\section{Animation} + +\begin{LTXexample}[pos=t,width=15cm] +\def\funkg{0.25*(x-3)*sin(0.2*(x-2))-1} +\begin{animateinline}[controls,palindrome, + begin={\begin{pspicture}(-2,-2)(13,3)}, + end={\end{pspicture}}]{20}% 20 frames/s (velocity of the animation) +\multiframe{100}{rB=0+0.05}{% number of frames +\psframe*[linecolor=cyan!20](-2,-2)(13,4) +\pscustom[fillstyle=solid,fillcolor={[RGB]{174 137 100}},linestyle=none]{ +\psplot[plotpoints=500,algebraic]{-2}{13}{\funkg} +\psline(13,-2)(-2,-2) +\closepath} +\psplot[plotpoints=500,algebraic]{-2}{13}{\funkg} +\psVehicle[vehicle=\Bike,style=bike,linecolor=DodgerBlue4]{0.4}{\rB}{\funkg} +\rput(10.5,0.5){\SlopeoMeter{cyan!90}{omega}} +} +\end{animateinline} +\end{LTXexample} + + +\clearpage + +\section{Liste des options de \texttt{pst-vehicle}} +\xkvview{family=pst-vehicle,columns={key,type,default}} + + +\clearpage + + +\nocite{*} +\bgroup +\RaggedRight +\printbibliography +\egroup + + +\printindex +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.pdf b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.pdf Binary files differindex aa77f40d3ca..72b3f32055d 100644 --- a/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.pdf +++ b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.pdf diff --git a/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.tex b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.tex index f8acf1e1f59..6a04bb3dfad 100644 --- a/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.tex +++ b/Master/texmf-dist/doc/generic/pst-vehicle/pst-vehicle-doc.tex @@ -34,6 +34,72 @@ \usepackage{pst-vehicle,pst-eucl,pstricks-add,animate} \let\belowcaptionskip\abovecaptionskip + +\usepackage{etex} % um die Anzahl der Register zu erh\"{o}hen (sonst nur 256) + + +\newcommand{\qrq}{\ensuremath{\quad \Rightarrow \quad}} +\newcommand{\envert}[1]{\left\lvert#1\right\rvert} +\let\abs=\envert +\newcommand{\BM}[1]{\ensuremath{\text{\boldmath $#1$\unboldmath}}} +\newcommand{\Anf}[1]{\glqq{}#1\grqq{}} + +\parindent0pt + +\makeatletter +\def\curveVal{\def\pst@par{}\pst@object{curveVal}}% +\def\curveVal@i#1#2{\@ifnextchar[% +{\curveVal@ii{#1}{#2}}% +{\curveVal@ii{#1}{#2}[1]}}% +\def\curveVal@ii#1#2[#3]{% +\pst@killglue% +\begingroup% +\use@par% +\begin@SpecialObj% +\pst@Verb{% + /Pi 3.1415926 def + /rpn {tx@AlgToPs begin AlgToPs end cvx} def + /x0 #1 def + /rW #3 def + /func (#2) rpn def + /Diff (Derive(1,#2)) rpn def + /DiffI (Derive(2,#2)) rpn def + /dAB (sqrt(1+Diff^2)) rpn def + /dABdiff (Derive(1,sqrt(1+(Derive(1,#2))^2))) rpn def + /x x0 def func /funcx0 exch def % ----- f(x0) + /x x0 def Diff /Diffx0 exch def % ----- f'(x0) + /x x0 def DiffI /DiffIx0 exch def % --- f''(x0) + /KWRho {DiffI 1 Diff dup mul add 3 exp sqrt div} def + /x x0 def KWRho /KWRhox0 exch def % --- f''(x0) + /tA 1 1 Diffx0 dup mul add sqrt div def % + /deltax0 tA Diffx0 mul neg KWRhox0 div def + /deltay0 tA KWRhox0 div def + /deltaxW tA Diffx0 mul neg rW mul def + /deltayW tA rW mul def + /Rho {1 KWRho div} def + /x x0 def Rho abs /Rhox0 exch def + /alpha deltax0 deltay0 atan def + /beta Diffx0 1 atan def + /tex beta cos def + /tey beta sin def + /gamma 90 beta add def + /nex gamma cos def + /ney gamma sin def +}% +\pnode(!x0 funcx0){PC}% +\pnode(!x0 deltaxW 2 mul add funcx0 deltayW 2 mul add){QC}% +\pnode(!x0 deltax0 add funcx0 deltay0 add){MC}% +\pnode(!x0 deltaxW add funcx0 deltayW add){MW}% +\showpointsfalse% +\end@SpecialObj% +\endgroup\ignorespaces% +}% +\makeatother +%3 \cdot f' \cdot (f'')^2 - (f')^2 \cdot f''' - f''' = 0 Stellen maximaler Kr\"{u}mmung! + +\psset{arrowlength=2.8,arrowinset=0.1} + + \def\bgImage{% \begin{pspicture}(0,0)(14,8) \def\FuncA{0.5*cos(1.5*x)+0.25*x} @@ -56,7 +122,7 @@ \begin{document} -\title{pst-vehicle v 1.0} +\title{pst-vehicle v 1.1} \subtitle{A PSTricks package for slipping/rolling vehicles on curves of any kind of mathematical functions} \author{Thomas \textsc{S\"{o}ll}\\ avec la collaboration de\\ @@ -418,27 +484,133 @@ The total angle $\gamma$ is: -\subsection{Rolling without slipping} +\subsection{Determination of the curvature radius} + +A curved curve can be imagined from many small circular arcs. The radius of the respective associated circles is referred to as the radius of curvature. The stronger the curvature of a curve changes, the smaller the intervals have to be chosen in order to be able to speak approximately of a circular arc. + +To find the radius of such an arc and thus the radius of the curvature of the curve at a point $x_{0}$, the normal in $ x_{0} $ should be intersected with the normal in $x_{0}+\epsilon$. This yields the $x$ value of the center of the curvature circle M of the curve. The following drawing is intended to illustrate this. + +\begin{pspicture}[showgrid=false,shift=0,saveNodeCoors,NodeCoorPrefix=n](0,-0.6)(18,9.2) +\def\funkg{0.4*(x-3)*sin(0.2*(x-5))} +\curveVal{5}{\funkg}[5] + +\psplot[algebraic=true,plotpoints=500,linecolor=black,linewidth=2pt,yMaxValue=25,yMinValue=-15]{0}{18}{\funkg} +%\psplot[algebraic=false,plotpoints=500,linecolor=red,linewidth=2pt,yMaxValue=25,yMinValue=-15]{0}{18}{Rho} +\pcline[linewidth=1.5pt,nodesepB=-2.6,linecolor=BrickRed](!x0 funcx0)(!x0 deltax0 add funcx0 deltay0 add) +\pcline[linewidth=1.5pt,nodesepB=-2.6,linecolor=Green](*{x0 0.5 add} {\funkg})(!x0 deltax0 add funcx0 deltay0 add) +\psdot[dotsize=5pt](!x0 funcx0) +\psdot[dotsize=5pt](*{x0 0.5 add} {\funkg}) +\psdot[dotsize=5pt](!x0 deltax0 add funcx0 deltay0 add) +\uput{0.25}[150]{0}(!x0 deltax0 add funcx0 deltay0 add){M} +\psarc[linewidth=1.5pt,linestyle=dashed,linecolor=cyan](!x0 deltax0 add funcx0 deltay0 add){!1 KWRhox0 div}{230}{380} +\pcline[offset=-30pt,tbarsize=20pt,linewidth=1.5pt,linecolor=BrickRed]{|<->|}(!x0 funcx0)(!x0 deltax0 add funcx0 deltay0 add) +\ncput*{\color{BrickRed}$\rho$} +%\pcline[offset=20pt,tbarsize=20pt,linewidth=1.5pt]{|<->|}(!x0 deltax0 add funcx0)(!x0 deltax0 add funcx0 deltay0 add) +%\ncput*{$\Delta y_{m}$} +\pcline[linecolor=orange,linewidth=1.2pt]{<->}(!x0 deltax0 add funcx0)(!x0 deltax0 add funcx0 deltay0 add) +\naput[nrot=:U]{\color{orange}$\Delta y_{m}$} +\pcline[linecolor=orange,linewidth=1.2pt]{<->}(!x0 deltax0 add funcx0)(!x0 funcx0) +\nbput[nrot=:U]{\color{orange}$\Delta x_{m}$} +\end{pspicture} -\textbf{Important note:} There is a limitation for the radii. The radii $r$ of the wheels of the vehicle need to be smaller than the minimal curvature radius $\varrho$ of the given curve. +\makebox[7cm][l]{\textbf{Normal in \BM{x_{0}}:}} $ n(x)=-\frac{1}{f'(x_{0})}\cdot (x-x_{0})+f(x_{0})$ -At points of inflection, the curvature radius is $\infty$. The curvature radius $\varrho$ is calculated with the following formula: +\makebox[7cm][l]{\textbf{Normal in \BM{x_{0}+\epsilon}:}} $ n_{\epsilon}(x)=-\frac{1}{f'(x_{0}+\epsilon)}\cdot (x-x_{0}-\epsilon)+f(x_{0}+\epsilon)$ + +\makebox[7cm][l]{\textbf{Intersection point of the normals:}} $n_{\epsilon}(x) - n(x) = 0$ +\begin{alignat*}{2} +- \frac{x}{f'(x_{0}+\epsilon)} + \frac{x_{0}}{f'(x_{0}+\epsilon)} + \frac{\epsilon}{f'(x_{0}+\epsilon)} + f(x_{0}+\epsilon) + \frac{x}{f'(x_{0})} - \frac{x_{0}}{f'(x_{0})} - f(x_{0}) & = 0&\qquad& \\[4pt] +\frac{x\cdot \left[f'(x_{0}+\epsilon) - f'(x_{0})\right]}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} - \frac{x_{0}\cdot \left[f'(x_{0}+\epsilon) - f'(x_{0})\right]}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} + \frac{\epsilon}{f'(x_{0}+\epsilon)} + f(x_{0}+\epsilon) - f(x_{0}) & = 0&\qquad& |:\epsilon\\[4pt] +\frac{x\cdot \frac{f'(x_{0}+\epsilon) - f'(x_{0})}{\epsilon}}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} - \frac{x_{0}\cdot \frac{f'(x_{0}+\epsilon) - f'(x_{0})}{\epsilon}}{f'(x_{0}+\epsilon)\cdot f'(x_{0})} + \frac{1}{f'(x_{0}+\epsilon)} + \frac{f(x_{0}+\epsilon) - f(x_{0})}{\epsilon} & = 0&\qquad&| \lim_{\epsilon\to 0}\\[4pt] +\frac{x\cdot f''(x_{0})}{f'(x_{0})\cdot f'(x_{0})} - \frac{x_{0}\cdot f''(x_{0})}{f'(x_{0})\cdot f'(x_{0})} + \frac{1}{f'(x_{0})} + f'(x_{0}) & = 0&& +\end{alignat*} +Solving for $x$: +\begin{equation*} + x = x_{0} - \frac{f'(x_{0})}{f''(x_{0})} - \frac{\left[f'(x_{0})\right]^{3}}{f''(x_{0})} = x_{0} + \underbrace{\left[-\frac{f'(x_{0})}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\}\right]}_{\Delta x_{m}} +\end{equation*} +For the corresponding change $\Delta y_{m}$ of the ordinate $y$, we multiply the slope of the normal with $\Delta x_{m}$: +\begin{equation*} + \Delta y_{m} = -\frac{1}{f'(x_{0})} \cdot \Delta x_{m} =\frac{1}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\} +\end{equation*} +With the Pythagorean theorem we get for the curvature radius: \begin{equation*} -\varrho=\frac{\sqrt{(1+f'(x)^2)^3}}{f''(x)} + \rho = \sqrt{(\Delta x_{m})^{2} + (\Delta y_{m})^{2}} = \sqrt{(\Delta x_{m})^{2} + \left[-\frac{1}{f'(x_{0})} \cdot \Delta x_{m}\right]^{2}} = \abs{\frac{\Delta x_{m}}{f'(x_{0})}} \cdot \sqrt{\left[f'(x_{0})\right]^{2} + 1} \end{equation*} -The condition for \emph{rolling without slipping} is +Using $\Delta x_{m} = -\frac{f'(x_{0})}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\}$--- this leads to: \begin{equation*} -\omega=\left(\frac{1}{r}-\frac{1}{\varrho}\right)\cdot \dot{s}, + \rho = \abs{\frac{\frac{f'(x_{0})}{f''(x_{0})}\cdot \left\{ 1 + \left[f'(x_{0})\right]^{2} \right\}}{f'(x_{0})}} \cdot \sqrt{\left[f'(x_{0}\right]^{2} + 1} = + \frac{\sqrt{\left\{1 + \left[f'(x_{0})\right]^{2}\right\}^{3}}}{\abs{f''(x_{0})}} \end{equation*} -where $s$ is the length along the curve of the function $f$. -With + + +\subsection{Rolling without slipping} + +\begin{pspicture}[showgrid=false,shift=0,saveNodeCoors,NodeCoorPrefix=n](0,-0.8)(18,11) +\def\funkg{0.4*(x-3)*sin(0.2*(x-5))} +\curveVal{7}{\funkg}[3] +%\psplot[algebraic=true,plotpoints=500,linecolor=black,linewidth=2pt,yMaxValue=25,yMinValue=-15]{0}{18}{\funkg} +\pcline[linewidth=1.5pt,nodesepB=0,linecolor=BrickRed](PC)(MC) +\psdot[dotsize=5pt](MC) +\uput{0.2}[40]{0}(MC){M$_{\text{c}}$} +\psarc[linewidth=1.5pt,linecolor=cyan](MC){!Rhox0}{255}{340} +\psdot[dotsize=5pt](PC) +\uput{0.25}[-60]{0}(PC){P} +\uput{0.25}[60]{0}(QC){Q} +\uput{0.3}[-100]{0}(MW){M$_{\text{w}}$} +\pnode([offset=1.3cm]{MC}PC){PCO} +\pnode([offset=-1.3cm]{PC}MC){MCO} +\pnode([offset=-1.3cm]{PC}MW){MWO} +\psline[linewidth=1.5pt](MWO)(MW) +\psline[linewidth=1.5pt](MCO)(MC) +\pcline[offset=-5pt,linewidth=1.5pt,linecolor=BrickRed]{<->}(MWO)(MCO) +\ncput*{\color{BrickRed}$R=\rho - r$} +\psdot[dotsize=5pt](QC) +\psdot[dotsize=5pt](MW) +\pscircle[linewidth=1.5pt](MW){!rW} +\psarcn[linewidth=1.5pt,linecolor=BrickRed]{->}(MW){!rW 0.5 add}{180}{150} +\uput{3.65}[165]{0}(MW){$\omega=\dot{\varphi}$} +%\multido{\iC=0+1}{11}{% +%\definecolor[ps]{rainbow}{hsb}{0.9 \iC\space 15 div sub 0.95 0.7 }% +%\rput{!-90 \iC\space 0.5 mul 180 mul Pi div rW div sub alpha sub}(MW){\psline[linewidth=1.5pt,linecolor=rainbow](!rW 0)(!rW 0.2 sub 0)} +%\rput{!-90 \iC\space 0.5 mul 180 mul Pi div Rhox0 div sub alpha sub}(MC){\psline[linewidth=1.5pt,linecolor=rainbow](!Rhox0 0)(!Rhox0 0.2 add 0)} +%} +%%\rput(MW){\psline[linewidth=1.5pt]{->}(0,0)(!tex 4 mul tey 4 mul)} +\rput{!beta}(MW){\pcline[linewidth=1.2pt,linecolor=BrickRed]{->}(0,0)(2,0)\nbput[npos=0.7]{\color{BrickRed}$\vv{v_{\text{c}}}$}} +\rput{0}(MC){\uput{!Rho}[-19]{0}(0,0){\color{cyan}G$_{f}$}} +\rput{-40}(MC){\pnode(!Rho rW sub 0){MWI}} +\rput{-40}(MC){\pnode(!Rho 0){PCI}} +\pscircle[linewidth=1.2pt,linecolor=gray,linestyle=dashed](MWI){!rW} +\psarc[linewidth=1.5pt,linecolor=gray,linestyle=dashed](MC){!Rhox0 rW sub}{290}{330} +\pcline[linewidth=1pt,nodesepB=0,linecolor=cyan!60,linestyle=dashed](PCI)(MC) +\pcline[linewidth=1.5pt,nodesepB=0,linecolor=gray,linestyle=dashed](MWI)(MC) +\psdot[dotsize=5pt,linecolor=gray](MWI) +\psdot[dotsize=5pt,linecolor=gray](PCI) +\uput{0.3}[-20]{0}(PCI){$\text{P}'$} +\uput{0.3}[0]{0}(MWI){$\text{M}_{\text{w}}'$} +\multido{\iC=0+1}{11}{% +\definecolor[ps]{rainbow}{hsb}{0.9 \iC\space 15 div sub 1 \iC\space 11 div sub 0.7 }% +\rput{!-90 \iC\space 0.5 mul 180 mul Pi div rW div sub -50 sub}(MWI){\psline[linewidth=1.5pt,linecolor=rainbow](!rW 0)(!rW 0.2 sub 0)} +\rput{!-90 \iC\space 0.5 mul 180 mul Pi div Rhox0 div sub -50 sub}(MC){\psline[linewidth=1.5pt,linecolor=rainbow](!Rhox0 0)(!Rhox0 0.2 add 0)} +} +%\multido{\iC=0+1}{11}{% +%\rput{!-90 \iC\space 0.5 mul 180 mul Pi div rW div sub alpha sub 50 gamma sub Rhox0 mul rW div sub}(MWI){\psline[linewidth=1.5pt,linecolor=gray!50](!rW 0)(!rW 0.2 sub 0)} +%} +\rput{!beta}(PC){\pcline[linewidth=2pt,linecolor=Green]{->}(0,0)(1.5,0)\nbput[npos=0.7,nrot={!beta neg}]{\color{Green}$\vv{e_{\text{t}}}$}} +\rput{!gamma}(PC){\pcline[linewidth=2pt,linecolor=Green]{->}(0,0)(1.5,0)\nbput[npos=0.7,nrot={!gamma neg}]{\color{Green}$\vv{e_{\text{n}}}$}} +\end{pspicture} + +The condition of a rolling wheel without slipping forces, that the center of the wheel needs to make a rotation around the point P. Therefore, the center moves with the velocity: +\begin{equation*} + \vv{v_{\text{c}}} = r\cdot \dot{\varphi}\cdot \vv{e_{\text{t}}} \qquad \text{with normed tangent vector } \vv{e_{\text{t}}} +\end{equation*} +Cause the center of the wheel also moves along the circle around M$_{\text{c}}$ with radius $\rho - r$ and therefore the point P moves through the distance $\Delta s$ to the point $\text{P}'$---the velocities in M$_\text{w}$ and in P behave like their corresponding radii: \begin{equation*} -\omega=\frac{\text{d}\varphi}{\text{d}t}\quad\text{ and }\quad \dot{s}=\sqrt{1+f'(x)^2}\cdot\frac{\text{d}x}{\text{d}t} + \vv{v_{\text{c}}} = \frac{\rho - r}{\rho}\cdot \frac{\Delta s}{\Delta t} \cdot \vv{e_{\text{t}}} \qquad \text{with very small intervals, thus }\quad \frac{\Delta s}{\Delta t} = \dot{s} \end{equation*} -this finally leads to +Equating the right sides of both equations for the velocity of the center of the wheel finally leads to: \begin{equation*} -\text{d} \varphi=\left(\frac{1}{r}-\frac{1}{\varrho}\right)\cdot\sqrt{1+f'(x)^2}\,\text{d}x + r\cdot \dot{\varphi} = \frac{\rho - r}{\rho}\cdot \dot{s} \qrq \frac{\text{d}\varphi}{\text{d}t} = \frac{\rho - r}{\rho \cdot r}\cdot \frac{\text{d}s}{\text{d}t} \qrq \text{d}\varphi = \frac{\rho - r}{\rho \cdot r}\cdot \text{d}s = \frac{\rho - r}{\rho \cdot r}\cdot \sqrt{1+[f'(x)]^{2}} \cdot \text{d}x \end{equation*} @@ -547,7 +719,7 @@ Here follows a list of the vehicles that come along with the package: \section{Predefined wheels} -In this section we present the predefined wheels that can be used for the front or back wheel. +In this section we present $12$ predefined wheels that can be used for the front and/or the back wheel. @@ -641,6 +813,16 @@ In this section we present the predefined wheels that can be used for the front +\subsection{\textbackslash SpokesWheelB} + +\begin{LTXexample}[pos=l,width=2cm] +\begin{pspicture}(-1,-1)(1,1) +\rput(!/rB 1 def 0 0){\SpokesWheelB} +\end{pspicture} +\end{LTXexample} + + + \subsection{\textbackslash TractorFrontWheel} \begin{LTXexample}[pos=l,width=2cm] @@ -671,7 +853,7 @@ This package offers the following command: \textbf{Important note:} The function has to be given in algebraic notation and not in RPN. -The package \LPack{pst-vehicle} contains the options \nxLkeyword{epsilon=}, \nxLkeyword{rB=}, \nxLkeyword{rF=}, \nxLkeyword{d=}, \nxLkeyword{gang=}, \nxLkeyword{vehicle=}, \nxLkeyword{ownvehicle=}, \nxLkeyword{backwheel=}, \nxLkeyword{frontwheel=}, \nxLkeyword{MonoAxis=} and \nxLkeyword{showSlope=} +The package \LPack{pst-vehicle} contains the options \nxLkeyword{epsilon=}, \nxLkeyword{rB=}, \nxLkeyword{rF=}, \nxLkeyword{d=}, \nxLkeyword{gang=}, \nxLkeyword{vehicle=}, \nxLkeyword{ownvehicle=}, \nxLkeyword{backwheel=}, \nxLkeyword{frontwheel=}, \nxLkeyword{MonoAxis=}, \nxLkeyword{showSlope=} and \nxLkeyword{startPos=} \begin{quote} \begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule \emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule @@ -686,6 +868,7 @@ The package \LPack{pst-vehicle} contains the options \nxLkeyword{epsilon=}, \nxL \Lkeyword{frontwheel} & \texttt{\textbackslash wheelA} & wheelA is chosen by default\\ \Lkeyword{MonoAxis} & false & if the vehicle has one axis\\ \Lkeyword{showSlope} & true & showing the slope of the vehicle\\ +\Lkeyword{startPos} & 0 & synchronizing the initial rotation of the wheels at the start point\\ \bottomrule \end{tabularx} \end{quote} @@ -759,9 +942,18 @@ The same body of the vehicle is chosen as within the example above, but the fron \end{LTXexample} +\newpage + \section{Animation} +In case of animation there is a thing to be said: If tex memory is exceeded, please increase your memory. For \TeX{}Live users this can be done within the \texttt{texmf.cnf}. We chose the following: +\begin{lstlisting} +main_memory = 12000000 % words of inimemory available; also applies to inimf&mp +extra_mem_top = 60000000 % extra high memory for chars, tokens, etc. +extra_mem_bot = 12000000 % extra low memory for boxes, glue, breakpoints, etc. +\end{lstlisting} + \begin{LTXexample}[pos=t,width=15cm] \def\funkg{0.25*(x-3)*sin(0.2*(x-2))-1} \begin{animateinline}[controls,palindrome, diff --git a/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex b/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex index 83d4ff901a1..e4f84b3fffb 100644 --- a/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex +++ b/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex @@ -15,7 +15,6 @@ %% Distributed from CTAN archives in directory %% %% macros/latex/base/lppl.txt; either version 1.3c of %% %% the License, or (at your option) any later version. %% - %% %% DESCRIPTION: %% `pst-vehicle' is a PSTricks package @@ -28,8 +27,8 @@ \ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex\fi \ifx\PSTplotLoaded\endinput\else\input pst-plot.tex\fi \ifx\PSTnodeLoaded\endinput\else\input pst-node.tex\fi -\def\fileversion{1.0} -\def\filedate{2017/05/29} +\def\fileversion{1.1} +\def\filedate{2017/06/05} \message{`PST' v\fileversion, \filedate} \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -47,10 +46,13 @@ \define@key[psset]{pst-vehicle}{rB}[1.6]{\def\pst@rB{#1 }} % \define@key[psset]{pst-vehicle}{gang}[1]{\def\pst@gang{#1 }} % \define@key[psset]{pst-vehicle}{epsilon}[1e-6]{\def\pst@epsilon{#1 }} % +\define@key[psset]{pst-vehicle}{startPos}[0]{\def\pst@startPos{#1 }} % \define@boolkey[psset]{pst-vehicle}[Pst@]{showSlope}[true]{} % \define@boolkey[psset]{pst-vehicle}[Pst@]{MonoAxis}[false]{} % +%\define@boolkey[psset]{pst-vehicle}[Pst@]{EqValveStartPos}[true]{} % \input{ListVehicles.tex} -\psset[pst-vehicle]{gang=1,epsilon=1e-6,rB=1.6,rF=1.6,d=5.8,vehicle=\Bike,ownvehicle=,backwheel=\wheelA,frontwheel=\wheelA,showSlope=true,MonoAxis=false} +\psset[pst-vehicle]{gang=1,epsilon=1e-6,rB=1.6,rF=1.6,d=5.8,vehicle=\Bike,ownvehicle=,backwheel=\wheelA,frontwheel=\wheelA,showSlope=true,% +startPos=0,MonoAxis=false} \psset{algebraic} \def\psVehicle{\def\pst@par{}\pst@object{psVehicle}}% \def\psVehicle@i#1#2#3{% @@ -68,16 +70,19 @@ \pst@Verb{% /rpn { tx@AlgToPs begin AlgToPs end cvx } def% /x0 #2 def % -------------- x-Wert des Punktes auf der Kurve, wo das Hinterrad die Kurve ber\"{u}hrt; von diesem Wert startet die Rechnung + /XST \pst@startPos\space def % Untergrenze f\"{u}r die Integration bei der Rotationswinkelbestimmung %---- % Definition of the function f(x), its first derivative f'(x) and \sqrt{1+f'(x)^2} Definition de la fonction et la premiere derivee - /func (#3) rpn def - /Diff (Derive(1,#3)) rpn def - /DiffI (Derive(2,#3)) rpn def - /dAB (sqrt(1+Diff^2)) rpn def - /dABdiff (Derive(1,sqrt(1+(Derive(1,#3))^2))) rpn def - /x x0 def func /funcx0 exch def % ----- f(x0) - /x x0 def Diff /Diffx0 exch def % ----- f'(x0) - /x x0 def DiffI /DiffIx0 exch def % --- f''(x0) -% Calculating the length of the function between X1 and X2 ---- longueur de l'arc entre les points d'abscisse X1 et X2 % + /func (#3) rpn def + /Diff (Derive(1,#3)) rpn def + /DiffI (Derive(2,#3)) rpn def + /dAB (sqrt(1+Diff^2)) rpn def + /dABdiff (Derive(1,sqrt(1+(Derive(1,#3))^2))) rpn def + /x XST def func /funcxST exch def %---- f(XST) + /x XST def Diff /DiffxST exch def %---- f'(XST) + /x x0 def func /funcx0 exch def % ----- f(x0) + /x x0 def Diff /Diffx0 exch def % ----- f'(x0) + /x x0 def DiffI /DiffIx0 exch def % --- f''(x0) +%----------------------------------------------------------------------------------------------------------------------- /eps \pst@epsilon def % Definition of a transmission between frontwheel and backwheel (interesting for vehicles with pedals) --- Gangschaltung /Gang \pst@gang def @@ -94,21 +99,27 @@ /tA 1 1 Diffx0 dup mul add sqrt div def% /deltax0 tA Diffx0 mul rBs mul def /deltay0 tA rBs mul def +%----------------------------------------------------------------------------------------------------------------------------------------- +/Function ((x-x0+rBs*Diffx0/(sqrt(1+(Diffx0)^2))-rFs*(Diff)/(sqrt(1+(Diff)^2)))^2+% + (func-funcx0+rFs/(sqrt(1+(Diff)^2))-rBs/(sqrt(1+(Diffx0)^2)))^2-dA12s^2) rpn def +%----------------------------------------------------------------------------------------------------------------------------------------- +/FunctionST ((x-XST+rBs*DiffxST/(sqrt(1+(DiffxST)^2))-rFs*(Diff)/(sqrt(1+(Diff)^2)))^2+% + (func-funcxST+rFs/(sqrt(1+(Diff)^2))-rBs/(sqrt(1+(DiffxST)^2)))^2-dA12s^2) rpn def %--------- inferior value to search for the intersection point of the frontwheel with the curve -/Xinf x0 def % ---------------------------------- Untergrenze f\"{u}r die Schnittpunktsuche des Vorderrades mit der Kurve +/Zeros { %% Funktion xinf +1 dict begin +/Xinf exch def % ---------------------------------- Untergrenze f\"{u}r die Schnittpunktsuche des Vorderrades mit der Kurve % superior value to search for the intersection point of the frontwheel with the curve = x0 + distance axes + radius frontwheel + radius backwheel -/Xsup x0 dA12s add rBs rFs add add def % ---------- Obergrenze f\"{u}r die Schnittpunktsuche des Vorderrades mit der Kurve +/Xsup Xinf dA12s add rBs rFs add add def % ---------- Obergrenze f\"{u}r die Schnittpunktsuche des Vorderrades mit der Kurve %---% Calculating the intersection point of the frontwheel with the function------ Schnittpunktberechnung --------------------------------- /NB 0 def %-----------------loop-variable ----- Laufvariable f\"{u}r loop /NbreIterations 200 def % ---------- Maximum of iterations for the loop -/Function ((x-x0+rBs*Diffx0/(sqrt(1+(Diffx0)^2))-rFs*(Diff)/(sqrt(1+(Diff)^2)))^2+% - (func-funcx0+rFs/(sqrt(1+(Diff)^2))-rBs/(sqrt(1+(Diffx0)^2)))^2-dA12s^2) rpn def { %------------------------------------ loop begin --------------------- /xM Xinf Xsup add 2 div def %--------- Mittelwert von xM = (Xinf + Xsup):2 /x Xinf def - /F_1 Function def %----------------- F(Xinf) + /F_1 FUNK def %----------------- F(Xinf) /x xM def %------------------------- - /F_M Function def %----------------- F(xM) + /F_M FUNK def %----------------- F(xM) F_M 0 eq {exit} if %---------------- if F(xM) = 0 --> exit F_1 F_M mul 0 ge {/Xinf xM def} %-- F(Xinf) * F(xM) >= 0 Xinf = xM, else Xsup = xM {/Xsup xM def} @@ -117,7 +128,13 @@ /NB NB 1 add def %------------------- else loopvariable NB = NB + 1 Loopvariable um eins erh\"{o}hen NB NbreIterations ge {exit} if %------ if number of iterations >= 200 --> exit } loop -/FWx xM def +xM + end +} def +% \ifPst@EqValveStartPos +/FUNK {FunctionST} def XST Zeros /FWxST exch def +% \else /FWxST XST def \fi +/FUNK {Function} def x0 Zeros /FWx exch def /FWy /x FWx def func def %----------------------- Ber\"{u}hrpunkt des Vorderrades (FWx,FWy) /mFWy /x FWx def Diff def %----------------------- mFWy = Tangentensteigung in (FWx,FWy) /TermFW 1 1 mFWy dup mul add sqrt div def % 1/sqrt(1+f'(x_Q)^2) @@ -134,9 +151,9 @@ X1 X2 /x {dPhiF} eps SIMPSON } def % % length of the curve for the wheels -- La longueur de la courbe pour la roue avant --- Kurvenl\"{a}nge -/X1 0 def /X2 x0 def % Integral_{0}^{x0} +/X1 XST def /X2 x0 def % Integral_{0}^{x0} /sB AngleCumB def % ---backwheel - length from 0 to x0 ---- roue arri\`{e}re ---- Kurvenl\"{a}nge von 0 bis x0 (Hinterrad) -/X2 FWx def +/X1 FWxST def /X2 FWx def /sF AngleCumF def % --frontwheel - length from 0 to the abscissa of the intersection frontwheel with curve - roue avant -- Kurvenl\"{a}nge von 0 bis zum SP Vorderrad - Kurve %-------------------------------------------------------------------------------------------------------------------- %---% Definition angle of rotation for the backwheel --- Definition de l'angle de roue arriere ---- Rotationswinkel des Hinterrades @@ -162,9 +179,9 @@ /gamma beta alpha add AFx ABx lt { 180 add } if def % gesamter Neigungswinkel des Fahrzeugs %--------% Special case (mono-axis vehicle) Nr 4 --> segway --------------------------------------------------------------------------- \ifPst@MonoAxis Diffx0 1 atan /omega exch def Diffx0 /mVehicle exch def \else FWy funcx0 sub FWx x0 sub div /mVehicle exch def mVehicle 1 atan /omega exch def \fi -/normNorm x0 FWx sub FWy funcx0 sub div dup mul 1 add sqrt def -/mTgy FWy funcx0 sub 0 eq { 1 } { x0 FWx sub FWy funcx0 sub div normNorm div } ifelse def -/mTgx FWy funcx0 sub 0 eq { 0 } { 1 normNorm div } ifelse def +/normNorm FWy funcx0 eq { 1 } { x0 FWx sub FWy funcx0 sub div dup mul 1 add sqrt } ifelse def +/mTgy FWy funcx0 eq { 1 } { x0 FWx sub FWy funcx0 sub div normNorm div } ifelse def +/mTgx FWy funcx0 eq { 0 } { 1 normNorm div } ifelse def /xMTg x0 FWx add 2 div def /yMTg funcx0 FWy add 2 div def }% |