Ich muss einen sehr einfachen Kegel mit h und r erstellen (wie das Bild, das ich als Beispiel hochgeladen habe) und kann es im vorherigen nicht finden Fragen.

Einfacher Kegel

Kommentare

Antwort

Mit arc

 \documentclass[tikz,border=10pt]{standalone} \usetikzlibrary{calc} \begin{document} \begin{tikzpicture} \draw[dashed] (0,0) arc (170:10:2cm and 0.4cm)coordinate[pos=0] (a); \draw (0,0) arc (-170:-10:2cm and 0.4cm)coordinate (b); \draw[densely dashed] ([yshift=4cm]$(a)!0.5!(b)$) -- node[right,font=\footnotesize] {$h$}coordinate[pos=0.95] (aa)($(a)!0.5!(b)$) -- node[above,font=\footnotesize] {$r$}coordinate[pos=0.1] (bb) (b); \draw (aa) -| (bb); \draw (a) -- ([yshift=4cm]$(a)!0.5!(b)$) -- (b); \end{tikzpicture} \end{document} 

Geben Sie hier die Bildbeschreibung ein.

Mit ellipse

\documentclass[tikz,border=10pt]{standalone} \usetikzlibrary{calc} \begin{document} \begin{tikzpicture} \begin{scope} \clip (-2,0) rectangle (2,1cm); \draw[dashed] (0,0) circle(2cm and 0.35cm); \end{scope} \begin{scope} \clip (-2,0) rectangle (2,-1cm); \draw (0,0) circle(2cm and 0.35cm); \end{scope} \draw[densely dashed] (0,4) -- node[right,font=\footnotesize] {$h$}coordinate[pos=0.95] (aa)(0,0) -- node[above,font=\footnotesize] {$r$}coordinate[pos=0.1] (bb) (2,0); \draw (aa) -| (bb); \draw (-2,0) -- (0,4) -- (2,0); \end{tikzpicture} \end{document} 

Geben Sie hier die Bildbeschreibung ein.

Gonzalo hat dem Zylinder freundlicherweise die Schattierungen zur Verfügung gestellt, und ich reproduziere seinen Code (mit Dank):

\documentclass{article} \usepackage{tikz} \usetikzlibrary{shadings} \begin{document} \begin{tikzpicture} \fill[ top color=gray!50, bottom color=gray!10, shading=axis, opacity=0.25 ] (0,0) circle (2cm and 0.5cm); \fill[ left color=gray!50!black, right color=gray!50!black, middle color=gray!50, shading=axis, opacity=0.25 ] (2,0) -- (0,6) -- (-2,0) arc (180:360:2cm and 0.5cm); \draw (-2,0) arc (180:360:2cm and 0.5cm) -- (0,6) -- cycle; \draw[dashed] (-2,0) arc (180:0:2cm and 0.5cm); \draw[dashed] (2,0) -- node[below] {$r$} (0,0) -- node[left] {h} (0,6) ; \draw (0,8pt) -- ++(8pt,0) -- (8pt,0); \end{tikzpicture} \end{document} 

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • Da Sie mit zwei Optionen geantwortet haben, können Sie möglicherweise eine neue hinzufügen Option mit Schattierungen wie in meiner Antwort? Ich sehe keinen Grund darin, fast denselben Code in zwei verschiedenen Antworten anzugeben.
  • @GonzaloMedina Vielen Dank, und ich habe Ihren Code als solchen verwendet, da ich der Meinung war, dass er gut ist. Vielen Dank.
  • Es gibt einen unangenehmen Fehler an der Basis, da die Seiten die untere Ellipse tangieren sollten und in diesem Fall nicht. Wenn Sie ein größeres zeichnen, wird das Problem größer.

Antwort

Dies erfordert einen Mathematiker. Sie müssen die Tangentialpunkte berechnen und dann den Scheitelpunkt des Kegels mit diesen Punkten verbinden, nicht mit den Enden der Hauptachse. Wenn die Ellipse ihre Hauptachse von (-a,0) bis (a,0) hat, hat ihre Nebenachse von (0,-b) zu (b,0) und seinem Scheitelpunkt bei (0,h) (mit h>b), dann einem Punkt von Die Tangentialität ist (a*sqrt(1-(b/h)^2), b*(b/h)) und die andere ist dieselbe, jedoch mit negierter x-Koordinate.

Hier ist MetaPost-Code zum korrekten Zeichnen des Kegels:

beginfig(1) a:=2in; b:=.5in; h:= 3in; % for example draw fullcircle xscaled 2a yscaled 2b; % a x b ellipse pair Z[]; Z2 := (0,h); % vertex Z1 := (a*sqrt(1 - (b/h)*(b/h)),b*(b/h)); % right tangency Z3 := (-xpart Z1, ypart Z1); % left tangency draw Z1--Z2--Z3; endfig; end 

Ich verwende TikZ nicht, daher lasse ich andere bei Bedarf eine Übersetzung bereitstellen. (Und sorgen Sie für die gestrichelten Teile.)

Antwort

Dans Lösung übersetzt in TikZ:

\documentclass[tikz,border=2mm]{standalone} \usetikzlibrary{positioning, calc} \begin{document} \begin{tikzpicture} \newcommand{\radiusx}{2} \newcommand{\radiusy}{.5} \newcommand{\height}{6} \coordinate (a) at (-{\radiusx*sqrt(1-(\radiusy/\height)*(\radiusy/\height))},{\radiusy*(\radiusy/\height)}); \coordinate (b) at ({\radiusx*sqrt(1-(\radiusy/\height)*(\radiusy/\height))},{\radiusy*(\radiusy/\height)}); \draw[fill=gray!30] (a)--(0,\height)--(b)--cycle; \fill[gray!50] circle (\radiusx{} and \radiusy); \begin{scope} \clip ([xshift=-2mm]a) rectangle ($(b)+(1mm,-2*\radiusy)$); \draw circle (\radiusx{} and \radiusy); \end{scope} \begin{scope} \clip ([xshift=-2mm]a) rectangle ($(b)+(1mm,2*\radiusy)$); \draw[dashed] circle (\radiusx{} and \radiusy); \end{scope} \draw[dashed] (0,\height)|-(\radiusx,0) node[right, pos=.25]{$h$} node[above,pos=.75]{$r$}; \draw (0,.15)-|(.15,0); \end{tikzpicture} \end{document} 

Geben Sie hier die Bildbeschreibung ein

Antwort

Nur zum Spaß mit PSTricks.

\documentclass[pstricks,border=12pt,12pt]{standalone} \usepackage{pst-node} \begin{document} \begin{pspicture}[dimen=m](8,10) \psellipticarc[linestyle=dashed](4,1)(4,.65){0}{180} \psellipticarcn(4,1)(4,.65){0}{180} \psline[linecap=0](0,1)(4,10)(8,1) \pcline[linestyle=dashed](4,10)(4,1)\naput{$h$} \pcline[linestyle=dashed](4,1)(8,1)\naput{$r$} \rput(4,1){\psline(0,9pt)(9pt,9pt)(9pt,0)} \end{pspicture} \end{document} 

Bildbeschreibung eingeben iption hier

Kommentare

  • Es liegt ein unangenehmer Fehler vor, da die Seiten die untere Ellipse und diese tangieren sollten Fall sind sie nicht. Wenn Sie ein größeres zeichnen, wird das Problem größer.

Antwort

Ich bin hier angekommen und habe nach einer Möglichkeit gesucht, ein Lichtkegel in TikZ, also hier ist der, den ich mit Dans Antwort gemacht habe:

\documentclass[tikz]{standalone} \begin{document} \begin{tikzpicture} \def\b{0.2} % semi-minor axis \pgfmathsetmacro{\h}{(1 + sqrt(1 + 4*\b^2)) / 2} \pgfmathsetmacro{\a}{sqrt(\h)} \draw (-1, -1) -- (1, 1); \draw (-1, 1) -- (1, -1); \draw (0, \h) ellipse [x radius = \a, y radius = \b]; \draw (0, -\h) ellipse [x radius = \a, y radius = \b]; \end{tikzpicture} \end{document} 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.