Muszę zrobić bardzo prosty stożek z h i r (jak na zdjęciu, które przesłałem jako przykład) i nie mogę go znaleźć w poprzednim pytań.

Prosty stożek

Komentarze

Odpowiedź

Z 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} 

tutaj wprowadź opis obrazu

Z 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} 

tutaj wprowadź opis zdjęcia

Gonzalo uprzejmie dostarczył cienie do cylindra i odtwarzam jego kod (z podziękowaniami):

\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} 

tutaj wprowadź opis obrazu

Komentarze

  • Ponieważ odpowiedziałeś podając dwie opcje, być może mógłbyś dodać nowy opcja z cieniami jak w mojej odpowiedzi? Nie widzę sensu w podawaniu prawie tego samego kodu w dwóch różnych odpowiedziach.
  • @GonzaloMedina Dzięki i użyłem twojego kodu jako takiego, ponieważ uważałem, że jest dobry. dziękuję.
  • U podstawy wystąpił nieprzyjemny błąd, ponieważ boki powinny być styczne do dolnej elipsy, aw tym przypadku tak nie jest. Rysowanie większego problemu staje się większe.

Odpowiedź

Do tego potrzebny jest matematyk. Musisz obliczyć punkty styczności, a następnie połączyć wierzchołek stożka z tymi punktami, a nie z końcami głównej osi. Jeśli elipsa ma swoją główną oś od (-a,0) do (a,0), jej mniejsza oś od (0,-b) do (b,0), a jego wierzchołek w (0,h) (z h>b), a następnie jeden punkt styczność jest (a*sqrt(1-(b/h)^2), b*(b/h)), a druga jest taka sama, ale z zanegowaną współrzędną x.

Oto kod MetaPost, aby poprawnie narysować stożek:

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 

Nie używam TikZ, więc w razie potrzeby pozwolę innym zapewnić tłumaczenie. (I uwzględnij przerywane fragmenty).

Odpowiedź

Rozwiązanie Dana przetłumaczone na 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} 

tutaj wprowadź opis obrazu

Odpowiedź

Dla zabawy z 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} 

wprowadź opis obrazu Iption tutaj

Komentarze

  • U podstawy wystąpił nieprzyjemny błąd, ponieważ boki powinny być styczne do dolnej elipsy iw tym jeśli tak nie jest. Rysowanie większego problemu staje się większe.

Odpowiedź

Przyjechałem tutaj, szukając sposobu na narysowanie stożek świetlny w TikZ, więc oto ten, który utworzyłem, używając odpowiedzi Dana:

\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} 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *