Dibujar una línea paramétrica con un vector director unitario produce una línea recta más larga usando PGFPlots

Dibujar una línea paramétrica con un vector director unitario produce una línea recta más larga usando PGFPlots

Me gustaría trazar una línea normal delimitada a una superficie en un punto.

La superficie es y=xy el punto es (1/2,1/2,1). El gradiente es (-1,1,0), y en el punto (1/2,1/2,1)sigue siendo el mismo, por lo que la línea normal sería (x-1/2)/(-1)=(y-1/2)/(1)=(z-1)/(0), por lo tanto, la línea se describe por (.5,.5,1)+t(-1,1,0).

Sin embargo, quiero que la línea seaencerrado, para hacer unvector director unitario, pero no puedo hacer esto. Estoy usando tentre 0y 1, pero estos dibujan una línea larga; quiero que sea un vector delongitud1.

No estoy seguro de si esta matemática es correcta. Si encuentro que (-1,1,0)su vector unitario es (-1,1,0)/(sqrt(2)), es decir, (-sqrt(2)/2,sqrt(2)/2,0)entonces todavía no tengo un vector de longitud 1(cuando testá entre 0y 1).

Aquí está mi MWE:

\documentclass{article}
\usepackage[a4paper,margin=1in,footskip=0.25in]{geometry}

\usepackage{pgfplots}
\pgfplotsset{compat=1.15}

\begin{document}

\begin{center}
    \begin{tikzpicture}
        \begin{axis} [
                title={Without normalizing $(-1,1,0)$ ($t\in[0,1]$)},
                axis on top,
                axis lines=center,
                xlabel=$x$,
                ylabel=$y$,
                zlabel=$z$,
                ticklabel style={font=\tiny},
                view={115}{25}
            ]
            \addplot3[opacity=.5,surf,samples=21,variable=\t,variable y=\s,domain=0:2,y domain=0:90,z buffer=sort,colormap={red}{color=(red) color=(red)}] ({\t*cos(\s)*(sqrt(2)*.5)},{\t*cos(\s)*(sqrt(2)*.5)},{\t*sin(\s)});%Red S
            \addplot3[-stealth,variable=\t,domain=0:1] ({1/2+t},{1/2-t},{1});
        \end{axis}
    \end{tikzpicture}
    \hfill
    \begin{tikzpicture}
        \begin{axis} [
                title={Normalizing $(-1,1,0)$ ($t\in[0,1]$)},
                axis on top,
                axis lines=center,
                xlabel=$x$,
                ylabel=$y$,
                zlabel=$z$,
                ticklabel style={font=\tiny},
                view={115}{25}
            ]
            \addplot3[opacity=.5,surf,samples=21,variable=\t,variable y=\s,domain=0:2,y domain=0:90,z buffer=sort,colormap={red}{color=(red) color=(red)}] ({\t*cos(\s)*(sqrt(2)*.5)},{\t*cos(\s)*(sqrt(2)*.5)},{\t*sin(\s)});%Red S
            \addplot3[-stealth,variable=\t,domain=0:1] ({1/2+(sqrt(2)/2)*t},{1/2-(sqrt(2)/2)*t},{1});
        \end{axis}
    \end{tikzpicture}
\end{center}

\end{document}

MWE

Incluso la línea tiene mala calidad, se ve pixelada:

Línea pixelada

¿Alguien sabe cómo producir un vector de longitud 1o qué me falta?

Algunos enlaces de interés:

¡¡Gracias!!

Respuesta1

Espero no perderme nada obvio. Sólo necesitas dividir por sqrt(2)en el ejemplo de la izquierda para llegar a

\documentclass{article}
\usepackage[a4paper,margin=1in,footskip=0.25in]{geometry}

\usepackage{pgfplots}
\pgfplotsset{compat=1.15}

\begin{document}

\begin{center}
    \begin{tikzpicture}
        \begin{axis} [
                title={Normalizing},
                axis on top,
                axis lines=center,
                xlabel=$x$,
                ylabel=$y$,
                zlabel=$z$,
                ticklabel style={font=\tiny},
                view={115}{25}
            ]
            \addplot3[opacity=.5,surf,samples=21,variable=\t,variable y=\s,domain=0:2,y domain=0:90,z buffer=sort,colormap={red}{color=(red) color=(red)}] ({\t*cos(\s)*(sqrt(2)*.5)},{\t*cos(\s)*(sqrt(2)*.5)},{\t*sin(\s)});%Red S            
            \pgfmathsetmacro{\msq}{sqrt(1/2)}
            \addplot3[-stealth,variable=\t,samples at={0,\msq},samples y=0] ({1/2+t},{1/2-t},{1});
        \end{axis}
    \end{tikzpicture}
\end{center}
\end{document}

ingrese la descripción de la imagen aquí

La "pixelación" desapareció después de agregar samples y=0.

información relacionada