/usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Defs.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Calc.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Nodes.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Line.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/ts.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Projections.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.CS.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.Function.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.Marks.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.Parallels.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Defs.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Calc.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Nodes.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Line.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/ts.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Projections.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.CS.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.Function.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.Marks.tikz.tex not found! /usr/local/Slides/1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig/Fig/Draw.Distances.Parallels.tikz.tex not found! SmtC: Show me the Code!
SmtC: Show me the Code
Ole Peter Smith
Instituto de Matemática e Estatística
Universidade Federal de Goiás
http://www.olesmith.com.br

Taxist
Somos todos Condenados à Liberdade
Jean Paul Sartre
< Mediatrizes | Distance: Point to Line | Ellipsis >

Distance from Point to Line

Line r with distinct Points A(xa,ya) and B(xb,yb). Given Qr:
  • PQ=QAt AB=(xax+t(xaxb)yay+t(yayb))
  • d(t)=d(P,Q)=|xax+t(xaxb)|+|yay+t(yayb)|
  • Minimums:
    • xaxb: tx=xxaxaxb dx=|yay+xxaxaxb(yay)|= |yay||xaxb+xxaxaxb| |(xxb)(yya)xbxa|
    • yayb: ty=yyayayb dy=|xax+yyayayb(xax)|= |(xax)(yby)ybya|
  • Projection Candidates:
    • xaxb: Qx=(xya(xba)+yb(xxa)xbxa)
    • yayb: Qy=(xa(yby)+xb(yya)ybyay)
1_Disciplines/3_FG/10_Models/02_Taxist/04_Line_Dist/Figs/Fig-000000_0.svg

TiKZ Listing: Figs/Fig.tikz.tex. PDF   PNG   SVG   ZIP*  
%Draw Function with minimum - and Projections:
%Taxist and Cartesian.
\tikzmath{\x=#X-3;};
\tikzmath{\y=2.0;};
\input{Fig/Draw.tikz}

TiKZ Listing: Figs/Fig/Calc.tikz.tex. PDF   PNG   SVG   ZIP*  
%Do calculations

%Taxist vertical projection
\tikzmath{\yyy=   \ya*(\xb-\x)+\yb*(\x-\xa)   ;};
\tikzmath{\yyy=\yyy/(\xb-\xa);};
\coordinate (QX) at (\x,\yyy);

%Taxist horisontal projection
\tikzmath{\xxx=   \xa*(\y-\yb)-\xb*(\y-\ya)   ;};
\tikzmath{\xxx=\xxx/(\ya-\yb);};
\coordinate (QY) at (\xxx,\y);



%Coordinates of rightmost point.
\tikzmath{\dt=(\tright-\tleft)/100.0;};
\tikzmath{\N=100;};



\tikzmath{\t=\tright;};
\tikzmath{\xright=\xa+\t*(\xb-\xa);};
\tikzmath{\yright=\ya+\t*(\yb-\ya);};

%Distance of rightmost point.
\tikzmath{\dleft=abs(\x-\xright)+abs(\y-\yright);};


%Coordinates of leftmost point.
\tikzmath{\t=\tleft;};
\tikzmath{\xleft=\xa+\t*(\xb-\xa);};
\tikzmath{\yleft=\ya+\t*(\yb-\ya);};

%Distance of leftmost point.
\tikzmath{\dright=abs(\x-\xleft)+abs(\y-\yleft);};



%Minimum parameter values
\tikzmath{\tx=(\x-\xa)/\dx;};

\tikzmath{\pxx=\xa+\tx*(\xb-\xa);};
\tikzmath{\pxy=\ya+\tx*(\yb-\ya);};
\tikzmath{\dpx=abs(\x-\pxx)+abs(\y-\pxy);};


\tikzmath{\ty=(\y-\ya)/\dy;};

\tikzmath{\pyx=\xa+\ty*(\xb-\xa);};
\tikzmath{\pyy=\ya+\ty*(\yb-\ya);};

\tikzmath{\dpy=abs(\x-\pyx)+abs(\y-\pyy);};

%Distance function points in A and B
\coordinate (PA) at (\xa,\DistLevel);
\coordinate (PB) at (\xb,\DistLevel);

%Distance function points in the minimum values
\coordinate (PX) at (\pxx,\dpx+\DistLevel);
\coordinate (PY) at (\pyx,\dpy+\DistLevel);

\coordinate (PPX) at (\pxx,\DistLevel);
\coordinate (PPY) at (\pyx,\DistLevel);


%P(t)=A t^2+Bt+C
\tikzmath{\A=(\xb-\xa)*(\xb-\xa)+(\yb-\ya)*(\yb-\ya);};
\tikzmath{\B=2*(\xa-\x)*(\xb-\xa)+2*(\ya-\y)*(\yb-\ya);};

\tikzmath{\C=(\x-\xa)*(\x-\xa)+(\y-\ya)*(\y-\ya);};

\tikzmath{\Discriminant=\B*\B-4*\A*\C);};

\tikzmath{\tcartesian=-\B/(2*\A);};

\tikzmath{\xcartesian=\xa+\tcartesian*(\xb-\xa);};
\tikzmath{\ycartesian=\ya+\tcartesian*(\yb-\ya);};
\tikzmath{\dcartesian=-\Discriminant/(4*\A);};
\tikzmath{\dcartesian=sqrt(\dcartesian);};

\coordinate (QC) at (\xcartesian,\ycartesian);

\coordinate (PPC) at (\xcartesian,\dcartesian+\DistLevel);

    Figs/Figs/Figs/Figs/Fig/Draw.Projections.tikz.tex

TiKZ Listing: Figs/Fig/Draw.Distances.CS.tikz.tex. PDF   PNG   SVG   ZIP*  
%Mark istance function CS
\coordinate (R1) at (\xa,\DistLevel);
\coordinate (R2) at (\xb,\DistLevel);
\tikzmath{\tmp=max(\dpy,\dpx);};
\draw [Distances_CS]
   ($(R1)!\tleft!(R2)$)
   --
   ($(R1)!\tright!(R2)$)
   node [right] {$x(t)$};
\draw [Distances_CS]
   (0,-0.25+\DistLevel)
   --
   (0,\tmp+\DistLevel)
   node [above] {$d(t)$};

TiKZ Listing: Figs/Fig/Draw.Distances.Function.tikz.tex. PDF   PNG   SVG   ZIP*  
%Draw Curve (x,d(x)) of taxist and cartesian distances


%Parameter, first value
\tikzmath{\t=\tleft;};


%Point on r
\tikzmath{\xx=\xa+\t*(\xb-\xa);};
\tikzmath{\yy=\ya+\t*(\yb-\ya);};

%Distances, Taxist and Cartesian
\tikzmath{\dtaxist=abs(\x-\xx)+abs(\y-\yy);};
\tikzmath{\dcartesian=sqrt(  (\x-\xx)*(\x-\xx)+(\y-\yy)*(\y-\yy));};

%Graph points for distances
\coordinate (T) at (\xx,\dtaxist+\DistLevel);
\coordinate (C) at (\xx,\dcartesian+\DistLevel);

\foreach \n in {1,2,...,\N}
{
    %Parameter value
    \tikzmath{\t=\tleft+\n*\dt;};

    %Point on r
    \tikzmath{\xx=\xa+\t*(\xb-\xa);};
    \tikzmath{\yy=\ya+\t*(\yb-\ya);};

    %Distances, Taxist and Cartesian
    \tikzmath{\dtaxist=abs(\x-\xx)+abs(\y-\yy);};

    \tikzmath{\dcartesian=sqrt(  (\x-\xx)*(\x-\xx)+(\y-\yy)*(\y-\yy));};

    %Graph points for distances
    \coordinate (TT) at (\xx,\dtaxist+\DistLevel);
    \coordinate (CC) at (\xx,\dcartesian+\DistLevel);

    \draw [Taxist] (T) -- (TT);
    \draw [Cartesian] (C) -- (CC);

    %'Increment' point
    \coordinate (T) at (TT);
    \coordinate (C) at (CC);
}

\draw (T) node [Taxist,right] {$d=d_T(t)$};
\draw (C) node [Cartesian,right] {$d=d_C(t)$};

TiKZ Listing: Figs/Fig/Draw.Distances.Marks.tikz.tex. PDF   PNG   SVG   ZIP*  
%Mark points on distances CS
\tkzMarkSegment[pos=0.0,mark=|,size=1](PA,PB);
\tkzMarkSegment[pos=1.0,mark=|,size=1](PA,PB);


\tkzLabelSegment[pos=1.0,Distances_Labels](PA,PB) {$x_b$};
\tkzLabelSegment[pos=0.0,Distances_Labels](PA,PB) {$x_a$};

\filldraw [dotted]
   (PPX)
   circle(1.5pt)
   node [Distances_Labels]
   {$x(t_x)$} -- (PX);
   
\filldraw [dotted]
   (PPY)
   circle(1.5pt)
   node
   [Distances_Labels] {$x(t_y)$} -- (PY);

TiKZ Listing: Figs/Fig/Draw.Distances.Parallels.tikz.tex. PDF   PNG   SVG   ZIP*  
\draw [Parallels] (A) -- (PA);
\draw [Parallels] (B) -- (PB);

\draw [Parallels] (PX) -- (QX);
\draw [Parallels] (PY) -- (QY);

\filldraw (PX) circle(1pt) node [Parallels,Distances_Labels,left] {$d_x$};
\filldraw (PY) circle(1pt) node [Parallels,Distances_Labels,right] {$d_y$};
< Mediatrizes | Distance: Point to Line | Ellipsis >
Messages:
0 secs.