Рисование цилиндра с использованием квадратичной формы

Рисование цилиндра с использованием квадратичной формы

Итак, я искал способ нарисовать цилиндр, но, похоже, не могу найти способ. Как мне получить координаты из следующей неявной функции, чтобы я мог нарисовать ее с помощью pgfplots? или есть ли способ построить ее с помощью матричной формы?

$$1=q(x,y,z)=(x,y,z) \begin{bmatrix}
2& -1 & -1\\
-1 & 2 & -1\\
-1 &-1 &2
\end{bmatrix} (x,y,z)^T$$

решение1

Вы можете параметризовать этот тип бесконечно расширяющегося вырожденного эллипсоида (это математика!). Я сделал это для вас.

Цилиндры должны быть нарисованы дважды, чтобы справиться с фальшивым 3D между участками: чтобы линия была"внутри"цилиндр.

Я оставлю это в качестве упражнения и сниму один цилиндр.

Выход

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

Код

\documentclass[12pt,tikz,border=0pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset%{{{
{
  mySurface/.style = 
  {
    mesh, % there should be better options : look at the PGFplots manual
    opacity=.1, 
  }
}
%}}}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    [
      %{{{
      width=30cm,
      xticklabels=\empty,
      yticklabels=\empty,
      zticklabels=\empty,
      samples = 2, % for the lines
      samples y = 100, % for the circles
      % limits of the box
      xmin = -12, xmax = 12, 
      ymin = -12, ymax = 12,
      zmin = -12, zmax = 12,
      unit vector ratio = 1 1 1,
      % parametrize the 3d view
      view/az=15,
      view/h=80,
      %length of the cylinder
      domain = -8:8,
      %}}}
    ]
    \def\X{\r*cos(y)-\r*sin(y) + x}
    \def\Y{-\r*cos(y)-\r*sin(y) + x}
    \def\Z{2 * \r*sin(y) + x}
    \def\r{2}
    \addplot3[mySurface,domain y= 90:270] ({\X},{\Y},{\Z});
    \def\r{1}
    \addplot3[mySurface,domain y= 90:270] ({\X},{\Y},{\Z});
    \addplot3[domain=-12:12, samples=2, blue, thick] (x,x,x);
    \addplot3[mySurface,domain y= -90:90] ({\X},{\Y},{\Z}); ;
    \def\r{2}
    \addplot3[mySurface,domain y= -90:90] ({\X},{\Y},{\Z}); ;
  \end{axis}
\end{tikzpicture}
\end{document}

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