tikz에서 옆으로 포물선 그리기

tikz에서 옆으로 포물선 그리기

다음을 사용하여 tikz에서 포물선을 그릴 수 있습니다 \draw.parabola bend

\begin{tikzpicture}
        \draw (-3,4) parabola bend (0,-.5) (3,4);
\end{tikzpicture}

그러나 나는 y=x 선 위에 대칭된 포물선을 그리고 싶습니다. 나는 합리적이라고 생각되는 사항을 입력하려고 시도했습니다.

\begin{tikzpicture}
        \draw (4,-3) parabola bend (-.5,0) (4,3);
\end{tikzpicture}

그러나 이는 깨진 곡선을 생성하며 tikz가 이러한 방식으로 입력을 받을 의도가 없다는 것이 매우 분명합니다. \draw첫 번째 곡선을 얻은 방법과 비슷한 방식으로 옆쪽 포물선 곡선을 얻을 수 있습니까 ?

답변1

path parabola명령은 다음과 같은 종류의 포물선만 만듭니다.y=a*x+b . 그래도 회전, 크기 조절, 기울기 등은 자유롭게 할 수 있습니다. 그래서 당신은 그것을 미러링하고 싶습니다. 질문은 남아 있습니다:tikz에서 일부를 미러링할 수 있나요?아, 네, 할 수 있습니다:

여기에 이미지 설명을 입력하세요

MWE

\documentclass{standalone}
\usepackage{tikz}

% Code from user Qrrbrbirlbel (https://tex.stackexchange.com/a/142491/81905)
\usetikzlibrary{backgrounds}
\makeatletter
\tikzset{
    mirror/.code={\pgfutil@in@{--}{#1}\ifpgfutil@in@\tikz@trans@mirror#1\@nil
        \else\tikz@scan@one@point\pgftransformmirror#1\relax\fi},
    ymirror/.code={\pgfutil@ifnextchar(\tikz@trans@ymirror@coordinate\tikz@trans@ymirror@simple#1\@nil},
    xmirror/.code={\pgfutil@ifnextchar(\tikz@trans@xmirror@coordinate\tikz@trans@xmirror@simple#1\@nil}}
\def\tikz@trans@mirror#1--#2\@nil{%
    \pgfextract@process\pgf@trans@mirror@A{\tikz@scan@one@point\pgfutil@firstofone#1}%
    \pgfextract@process\pgf@trans@mirror@B{\tikz@scan@one@point\pgfutil@firstofone#2}%
    \pgftransformMirror{\pgf@trans@mirror@A}{\pgf@trans@mirror@B}}
\def\pgftransformxmirror#1{\pgfmathparse{2*(#1)}\pgftransformcm{-1}{0}{0}{1}{\pgfqpoint{+\pgfmathresult pt}{+0pt}}}
\def\pgftransformymirror#1{\pgfmathparse{2*(#1)}\pgftransformcm{1}{0}{0}{-1}{\pgfqpoint{+0pt}{+\pgfmathresult pt}}}
\def\tikz@trans@ymirror@simple#1\@nil{
    \pgfmathparse{#1}\let\tikz@temp\pgfmathresult
    \ifpgfmathunitsdeclared
    \pgftransformymirror{\tikz@temp pt}%
    \else
    \pgf@process{\pgfpointxy{0}{\tikz@temp}}%
    \pgftransformymirror{+\the\pgf@y}%
    \fi}
\def\tikz@trans@xmirror@simple#1\@nil{
    \pgfmathparse{#1}\let\tikz@temp\pgfmathresult
    \ifpgfmathunitsdeclared
    \pgftransformxmirror{\tikz@temp pt}%
    \else
    \pgf@process{\pgfpointxy{\tikz@temp}{0}}%
    \pgftransformxmirror{+\the\pgf@x}%
    \fi}
\def\tikz@trans@xmirror@coordinate#1\@nil{\tikz@scan@one@point\pgfutil@firstofone#1\pgftransformxmirror{+\the\pgf@x}}
\def\tikz@trans@ymirror@coordinate#1\@nil{\tikz@scan@one@point\pgfutil@firstofone#1\pgftransformymirror{+\the\pgf@y}}
\def\pgftransformmirror#1{%
    \pgfpointnormalised{#1}%
    \pgf@xa=\pgf@sys@tonumber\pgf@y\pgf@x
    \pgf@xb=\pgf@sys@tonumber\pgf@x\pgf@x
    \pgf@yb=\pgf@sys@tonumber\pgf@y\pgf@y
    \multiply\pgf@xa2\relax
    \pgf@xc=-\pgf@yb\advance\pgf@xc\pgf@xb
    \pgf@yc=-\pgf@xb\advance\pgf@yc\pgf@yb
    \edef\pgf@temp{{\the\pgf@xc}{+\the\pgf@xa}{+\the\pgf@xa}{+\the\pgf@yc}}%
    \expandafter\pgf@transformcm\pgf@temp{\pgfpointorigin}}
\def\pgftransformMirror#1#2{%
    \pgfextract@process\pgf@trans@mirror@A{#1}%
    \pgfextract@process\pgf@trans@mirror@B{#2}%
    \pgfextract@process\pgf@trans@mirror@g{\pgfpointdiff{\pgf@trans@mirror@A}{\pgf@trans@mirror@B}}%
    \pgftransformshift{\pgf@trans@mirror@A}%
    \pgftransformmirror{\pgf@trans@mirror@g}%
    \pgftransformshift{\pgfpointscale{-1}{\pgf@trans@mirror@A}}}
\makeatother
%End of code from Qrrbrbirlbel

\begin{document}
\begin{tikzpicture}
\draw (-3,4) parabola bend (0,-.5) (3,4);
\draw[thick, <->] (-3,0) -- (3,0);
\draw[thick, <->] (0,-3) -- (0,4);
\coordinate (1) at (-3,-3);
\coordinate (2) at (3,3);
\draw[dashed,very thin] (1)--(2);
\draw[mirror=(1)--(2),red] (-3,4) parabola bend (0,-.5) (3,4);
\end{tikzpicture}
\end{document}

답변2

고려해야 할 간단한 수정 사항:

\begin{tikzpicture}
        \draw[rotate=-90] (-3,4) parabola bend (0,-.5) (3,4);
\end{tikzpicture}

관련 정보