3Dドローンとオイラー角

3Dドローンとオイラー角

アップロードした絵をtikzで描きたいのですが、角度を指定して絵に似たものを作ることができません。ここに画像の説明を入力してください

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

\fill[black!50] (2.5,1) ellipse (1 and 0.5);

%\fill[black!50][rotate=-30] (-2.5,1) ellipse (1.5 and 0.5);

\fill[black!50] (-2.5,1) ellipse (1 and 0.5);

\fill[black!50] (2.5,-1) ellipse (1 and 0.5);

\fill[black!50] (-2.5,-1) ellipse (1 and 0.5);

\fill[black!50] (-0,-0) ellipse (1.5 and 0.5);

\draw[black, ultra thick] (1.,.4) -- (2.5,1);

\draw[black, ultra thick] (-1.,.4) -- (-2.5,1);

\draw[black, ultra thick] (1.,-.4) -- (2.5,-1);

\draw[black, ultra thick] (-1.,-.4) -- (-2.5,-1);


\end{tikzpicture}
\end{document}

答え1

3dTikZ は 3D ダイアグラムに最適なツールではないかもしれませんが、とライブラリの形でサポートされていますperspective

さらに、tikz-3dplotそしてtikz-3dtools

青い座標系がどのように機能し、それが世界の中でどのように位置しているかはわかりません。青いええ軸は赤い破線のメイン軸に対して定義されており、それらの間に円弧を描くのが簡単です。anglesライブラリはキャンバス常に 2D である座標系 (単位付きのもの)。

コード

\documentclass[tikz]{standalone}
%\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{3d, arrows.meta, calc, quotes}
\begin{document}
\begin{tikzpicture}[
  x = ( 20:-2cm), y = (-30: 2cm), z = ( 80: 1.6cm),
  > = Triangle]
\draw coordinate (O) (0,0,-.05) ellipse [radius=.2];

\foreach \xy/\yx in {x/y, y/x} {
  \fill[white] (xyz cs: \xy = -1, \yx = -.05) -- (xyz cs: \xy =  1, \yx=-.05)
            -- (xyz cs: \xy =  1, \yx =  .05) -- (xyz cs: \xy = -1, \yx= .05) -- cycle;
  \foreach \lmr in {-.05, 0, .05}
    \draw[gray] (xyz cs: \xy=-1, \yx = \lmr) -- (xyz cs: \xy=1, \yx=\lmr);
  \draw[fill=white, radius=.15] (xyz cs: \xy = -1) ellipse[]
                                (xyz cs: \xy =  1) ellipse[];
}
\draw[fill=white] (O) ellipse [radius=.2];

\foreach \xyz/\Label/\Ang in {% \Ang needs to start with a ,
  x/left/ {, longitude = 70},
  y/right/{, longitude =-20},
  z/above/{, longitude = 70, latitude=70}%
} {
  \draw[->, densely dashed, red] (0, 0, 0) -- ++(xyz cs: \xyz= 1.5)
    coordinate (ax-\xyz) node[\Label] {$\xyz$};
  \draw[blue, ->]
     (0, 0, 0) -- (xyz spherical cs: radius = 1.5,/tikz/style/.expanded=\Ang)
      coordinate (ax-\xyz') node[\Label] {$\xyz$};
}

\draw[canvas is xy plane at z=0]
  (0, 1) arc[start angle=90, delta angle=20, radius=1]
  node[midway, below right] {$\varphi$};
\end{tikzpicture}
\end{document}

出力

ここに画像の説明を入力してください

関連情報