Desenhar uma linha paramétrica com vetor diretor unitário produz uma linha reta mais longa usando PGFPlots

Desenhar uma linha paramétrica com vetor diretor unitário produz uma linha reta mais longa usando PGFPlots

Gostaria de traçar uma linha normal limitada a uma superfície em um ponto.

A superfície é y=xe o ponto é (1/2,1/2,1). O gradiente é (-1,1,0)e no ponto (1/2,1/2,1)ainda é o mesmo, portanto a linha normal seria (x-1/2)/(-1)=(y-1/2)/(1)=(z-1)/(0), portanto a linha é descrita por (.5,.5,1)+t(-1,1,0).

No entanto, quero que a linha sejalimitado, para fazer umavetor diretor unitário, mas não sou capaz de fazer isso. Estou usando tentre 0e 1, mas eles traçam uma linha longa; Eu quero que seja um vetor decomprimento1.

Não tenho certeza se essa matemática está correta. Se eu encontrar o vetor unitário dele (-1,1,0), (-1,1,0)/(sqrt(2))ou (-sqrt(2)/2,sqrt(2)/2,0)seja, ainda não tenho um vetor de comprimento 1(quando testiver entre 0e 1).

Aqui está meu 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

Até a linha tem uma qualidade ruim, parece pixelada:

Linha pixelizada

Alguém sabe como produzir um vetor de comprimento 1ou o que estou perdendo?

Alguns links de interesse:

Obrigado!!

Responder1

Espero não estar perdendo nada óbvio. Você só precisa dividir por sqrt(2)no exemplo da esquerda para chegar 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}

insira a descrição da imagem aqui

A "pixelação" desapareceu após a adição de samples y=0.

informação relacionada