From 3974ef07e7042d7cfc8ac6fd0252fe3fdf080996 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 16 Sep 2017 20:46:46 +0000 Subject: pst-vehicle (16sep17) git-svn-id: svn://tug.org/texlive/trunk@45320 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/generic/pst-vehicle/ListVehicles.tex | 6 ++-- .../tex/generic/pst-vehicle/pst-vehicle.tex | 38 ++++++++++++---------- 2 files changed, 23 insertions(+), 21 deletions(-) (limited to 'Master/texmf-dist/tex/generic') diff --git a/Master/texmf-dist/tex/generic/pst-vehicle/ListVehicles.tex b/Master/texmf-dist/tex/generic/pst-vehicle/ListVehicles.tex index f3d57441dca..cb2e8f2c614 100644 --- a/Master/texmf-dist/tex/generic/pst-vehicle/ListVehicles.tex +++ b/Master/texmf-dist/tex/generic/pst-vehicle/ListVehicles.tex @@ -5,7 +5,7 @@ %% %% Package `pst-vehicle.tex' %% -%% Thomas S\"{o}ll +%% Thomas Söll %% with the collaboration of %% Juergen Gilg %% Manuel Luque @@ -163,7 +163,7 @@ \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.58,1.35)(1.62,1.38)(1.65,1.4)% <<----- Start the white line -- Startpunkt für die weiß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) @@ -467,4 +467,4 @@ \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/tex/generic/pst-vehicle/pst-vehicle.tex b/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex index e4f84b3fffb..a971eaae9fa 100644 --- a/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex +++ b/Master/texmf-dist/tex/generic/pst-vehicle/pst-vehicle.tex @@ -5,7 +5,7 @@ %% %% Package `pst-vehicle.tex' %% -%% Thomas S\"{o}ll +%% Thomas Söll %% with the collaboration of %% Juergen Gilg %% Manuel Luque @@ -27,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.1} -\def\filedate{2017/06/05} +\def\fileversion{1.2} +\def\filedate{2017/09/16} \message{`PST' v\fileversion, \filedate} \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -41,6 +41,7 @@ \define@key[psset]{pst-vehicle}{frontwheel}[\wheelA]{\def\pst@frontwheel{#1 }} % \define@key[psset]{pst-vehicle}{ownvehicle}{\def\pst@ownvehicle{#1 }} % \define@key[psset]{pst-vehicle}{vehicle}[\Bike]{\def\pst@vehicle{#1}} % +\define@key[psset]{pst-vehicle}{GravNode}[]{\def\pst@GravNode{#1 }} % \define@key[psset]{pst-vehicle}{d}[5.8]{\def\pst@d{#1 }} % \define@key[psset]{pst-vehicle}{rF}[1.6]{\def\pst@rF{#1 }} % \define@key[psset]{pst-vehicle}{rB}[1.6]{\def\pst@rB{#1 }} % @@ -52,7 +53,7 @@ %\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,% -startPos=0,MonoAxis=false} +startPos=0,MonoAxis=false,GravNode=dA12 2 div 1} \psset{algebraic} \def\psVehicle{\def\pst@par{}\pst@object{psVehicle}}% \def\psVehicle@i#1#2#3{% @@ -69,8 +70,8 @@ startPos=0,MonoAxis=false} \begin@SpecialObj \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 + /x0 #2 def % -------------- x-Wert des Punktes auf der Kurve, wo das Hinterrad die Kurve berührt; von diesem Wert startet die Rechnung + /XST \pst@startPos\space def % Untergrenze fü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 @@ -108,11 +109,11 @@ startPos=0,MonoAxis=false} %--------- inferior value to search for the intersection point of the frontwheel with the curve /Zeros { %% Funktion xinf 1 dict begin -/Xinf exch def % ---------------------------------- Untergrenze f\"{u}r die Schnittpunktsuche des Vorderrades mit der Kurve +/Xinf exch def % ---------------------------------- Untergrenze fü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 Xinf 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ü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 +/NB 0 def %-----------------loop-variable ----- Laufvariable für loop /NbreIterations 200 def % ---------- Maximum of iterations for the loop { %------------------------------------ loop begin --------------------- /xM Xinf Xsup add 2 div def %--------- Mittelwert von xM = (Xinf + Xsup):2 @@ -125,7 +126,7 @@ startPos=0,MonoAxis=false} {/Xsup xM def} ifelse Xinf Xsup sub abs 1e-8 le {exit} if %- if Xinf - Xsup <= 10^-8 --> exit - /NB NB 1 add def %------------------- else loopvariable NB = NB + 1 Loopvariable um eins erh\"{o}hen + /NB NB 1 add def %------------------- else loopvariable NB = NB + 1 Loopvariable um eins erhöhen NB NbreIterations ge {exit} if %------ if number of iterations >= 200 --> exit } loop xM @@ -135,7 +136,7 @@ xM /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) +/FWy /x FWx def func def %----------------------- Berü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) /deltaxFW TermFW mFWy mul rFs mul def % skal*rF*f'(x_Q)*1/sqrt(1+f'(x_Q)^2) @@ -150,31 +151,31 @@ xM /AngleCumF { % 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 +% % length of the curve for the wheels -- La longueur de la courbe pour la roue avant --- Kurvenlänge /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) +/sB AngleCumB def % ---backwheel - length from 0 to x0 ---- roue arrière ---- Kurvenlänge von 0 bis x0 (Hinterrad) /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 +/sF AngleCumF def % --frontwheel - length from 0 to the abscissa of the intersection frontwheel with curve - roue avant -- Kurvenlä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 /phiB sB RadToDeg neg def %---% Definition angle of rotation for the frontwheel --- Definition de l'angle de roue avant ---- Rotationswinkel des Vorderrades /phiF sF RadToDeg neg def %--------------------------------------------------------------------------------------------------------------------- -%--% coordinates for the axes of the wheels within the non-scaled system -- Koordinaten der Vorderradachse im nicht skalierten System ( au{\ss}erhalb der \psscalebox ) +%--% coordinates for the axes of the wheels within the non-scaled system -- Koordinaten der Vorderradachse im nicht skalierten System ( außerhalb der \psscalebox ) %---------------------------------------------------------------------------------------------------------------------- /AFx FWx deltaxFW sub def % % x-coordinate front axis x-Koordinate der Vorderradachse /AFy FWy deltayFW add def % % y-coordinate front axis y-Koordinate der Vorderradachse /ABx x0 deltax0 sub def % % x-coordinate back axis x-Koordinate der Hinterradachse /ABy funcx0 deltay0 add def % % y-coordinate back axis y-Koordinate der Hinterradachse -%--------------- Koordinaten der Vorderradachse im System des Fahrzeugs, also unskalierte Gr\"{o}{\ss}en verwenden --( innerhalb der \psscalebox ) +%--------------- Koordinaten der Vorderradachse im System des Fahrzeugs, also unskalierte Größen verwenden --( innerhalb der \psscalebox ) %--coordinates for the front axis of the wheels within \psscalebox -- Die Koordinaten der Hinterradachse sind im System des Fahrzeugs (0,0) /AF1x dA12 dup mul rF rB sub dup mul sub sqrt def /AF1y rF rB sub def %------% slope and angle of the vehicle----------------------------------------------------------------------------- /m-vehicle AFy ABy sub AFx ABx sub div def -/beta m-vehicle 1 atan def % % angle for both radii of front- and backwheel are equal -- Neigungswinkel des Fahrzeugs bei gleich gro{\ss}en R\"{a}dern -/alpha AF1y neg AF1x atan def % % additional angle if radii of front- and backwheel are not equal -- zus\"{a}tzlicher Winkel bei unterschiedlich gro{\ss}en R\"{a}dern +/beta m-vehicle 1 atan def % % angle for both radii of front- and backwheel are equal -- Neigungswinkel des Fahrzeugs bei gleich großen Rädern +/alpha AF1y neg AF1x atan def % % additional angle if radii of front- and backwheel are not equal -- zusätzlicher Winkel bei unterschiedlich großen Rädern % whole angle (correction with +180 in case the whole angle gets 90 degrees which can be possible with not equal radii) /gamma beta alpha add AFx ABx lt { 180 add } if def % gesamter Neigungswinkel des Fahrzeugs %--------% Special case (mono-axis vehicle) Nr 4 --> segway --------------------------------------------------------------------------- @@ -192,6 +193,7 @@ xM %------------------------- % SETTING SOME VEHICLES ------------------------------------------------------- \psscalebox{#1}{%---------------Das Fahrzeug kann skaliert werden ----------------------------------------- %\psset{linecolor=#2}% +\pnode(!\pst@GravNode){GravC}% \pst@vehicle}}% \ifPst@showSlope \rput{!omega}(!x0 mVehicle 0 ge { 0 add } { 100 add } ifelse funcx0 0.75 sub){% -- cgit v1.2.3