Проблема с кривыми линиями в трех измерениях

Проблема с кривыми линиями в трех измерениях

Я хочу указать длину кривой S. Использовал алгоритм сглаживания таким же образом, но кривая не выглядит «гладкой»:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}
    [
        >=stealth,
        cm={-1,-1,1,0,(0,0)},
        x=3.85mm,
        z=-1cm, 
        axis/.style={-, black}, 
        vector/.style={-{Stealth[length=6,width=3]}, very thick, black}
    ] 

    \draw (0,0,0) node[left]{$O$};
    \draw[axis] (0,0,0) -- (4,0,0) node[left]{$X$};
    \draw[axis] (0,0,0) -- (0,4,0) node[right]{$Y$};
    \draw[axis] (0,0,0) -- (0,0,4) node[left]{$Z$};

    \draw[vector] (0,0,0) -- (1,1,2) node[circle,fill,inner    sep=0.7pt,label=left:$ A $](){};
    \draw (0.5,0.5,1) node[right]{$ \vec{r}_{0} $};
    \draw[vector] (0,0,0) -- (2.5,4,2.5) node[circle,fill,inner sep=0.7pt,label=right:$ B $](){};
    \draw (1.25,2,1.25) node[below]{$ \vec{r}(t) $};
    \draw[vector] (1,1,2) -- (2.5,4,2.5);
    \draw (1.75,2.25,2.25) node[below]{$ \Delta \vec{r} $};
    \draw [thick] plot [smooth, tension=1] coordinates { (1,1,2) (1.75,2.5,2.5) (2.5,4,2.5)};
    \draw [>=Bracket, <->] plot [smooth, tension=1] coordinates { (1,1,2.25) (1.75,2.5,2.75) (2.5,4,2.75)};
    \draw (1.75,2.5,2.5) node[above]{$ s $};
\end{tikzpicture}
\end{document}

Вот результат:Результат

решение1

Итак, проблема не в координатах или чем-то еще, а в plotспецификаторе пути, обрабатывающем кончики стрелок, это описано здесь:Параметр Smooth иногда приводит к появлению неправильных наконечников стрелок в PGFplots. Джейк предлагает решение для добавления наконечников стрелок в PGFplots, в частности.

Так как вы используете TikZ, это не сработает. Но у меня есть обходной путь. Во-первых, так как график с Bracketsтакой же, как и ниже, вам следует использовать опцию shift, которая делает рисунок более лаконичным. Хорошо, теперь, когда мы знаем, что проблема возникает, когда мы добавляем наконечники стрелок, мы просто нарисуем без наконечников и добавим их позже:

\draw[>={Bracket[]}, postaction={<->, tips=true}, shift={(0,0,.25)}] plot[smooth,...

Ключ tips=trueперезаписывает правила добавления наконечников стрелок, заставляя TikZ добавлять стрелки даже если нет рисунка. Результат:

введите описание изображения здесь

МВЭ

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}
    [
        >=stealth,
        cm={-1,-1,1,0,(0,0)},
        x=3.85mm,
        z=-1cm, 
        axis/.style={-, black}, 
        vector/.style={-{Stealth[length=6,width=3]}, very thick, black}
    ] 

    \draw (0,0,0) node[left]{$O$};
    \draw[axis] (0,0,0) -- (4,0,0) node[left]{$X$};
    \draw[axis] (0,0,0) -- (0,4,0) node[right]{$Y$};
    \draw[axis] (0,0,0) -- (0,0,4) node[left]{$Z$};

    \draw[vector] (0,0,0) -- (1,1,2) node[circle,fill,inner    sep=0.7pt,label=left:$ A $](){};
    \draw (0.5,0.5,1) node[right]{$ \vec{r}_{0} $};
    \draw[vector] (0,0,0) -- (2.5,4,2.5) node[circle,fill,inner sep=0.7pt,label=right:$ B $](){};
    \draw (1.25,2,1.25) node[below]{$ \vec{r}(t) $};
    \draw[vector] (1,1,2) -- (2.5,4,2.5);
    \draw (1.75,2.25,2.25) node[below]{$ \Delta \vec{r} $};
    \draw [thick] plot [smooth, tension=1] coordinates { (1,1,2) (1.75,2.5,2.5) (2.5,4,2.5)};
    \draw [>={Bracket[]}, postaction={<->, tips=true}, shift={(0,0,.25)}] plot [smooth, tension=1] coordinates { (1,1,2) (1.75,2.5,2.5) (2.5,4,2.5) };
    \draw (1.75,2.5,2.5) node[above]{$ s $};
\end{tikzpicture}
\end{document}

Связанный контент