Minun täytyy tehdä hyvin yksinkertainen kartio h: llä ja r: llä (kuten kuva, jonka olen ladannut esimerkkinä), enkä löydä sitä edellisestä kysymykset.

Yksinkertainen kartio

Kommentit

Vastaa

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

kirjoita kuvan kuvaus tähän

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

kirjoita kuvan kuvaus tähän

Gonzalo on ystävällisesti toimittanut sylinterin varjostukset ja toistan hänen koodinsa (kiitoksella):

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

kirjoita kuvan kuvaus tähän

kommentit

  • Koska vastasit tarjoamalla kaksi vaihtoehtoa, voit ehkä lisätä uuden vaihtoehto varjostuksilla kuten vastauksessani? En näe mitään järkeä antaa melkein samaa koodia kahdessa eri vastauksessa.
  • @GonzaloMedina Kiitos ja käytin koodiasi sellaisenaan, kun minusta tuntui, että se on hyvä. kiitos.
  • Pohjassa on epämiellyttävä virhe, koska sivujen tulisi olla tangentteja alempaan ellipsiin, ja tässä tapauksessa ne eivät ole. Suuremman piirtäminen ongelma kasvaa.

Vastaa

Tämä vaatii matemaatikon. Sinun on laskettava tangentiaalipisteet ja yhdistettävä sitten kartion kärki näihin pisteisiin, ei pääakselin päihin. Jos ellipsin pääakseli on (-a,0)(a,0), sen sivuakseli (0,-b) kohtaan (b,0), ja sen kärki kohdassa (0,h) (h>b), sitten yksi piste tangentiaali on (a*sqrt(1-(b/h)^2), b*(b/h)) ja toinen on sama, mutta sen x-koordinaatti on hylätty.

Tässä on MetaPost-koodi piirtämään kartio oikein:

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 

En käytä TikZ: tä, joten annan muiden antaa tarvittaessa käännöksen. (Ja välitä katkoviivaiset osat.)

Vastaus

Danin ratkaisu käännetty 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} 

kirjoita kuvan kuvaus tähän

Vastaa

Vain huvin vuoksi PSTricksillä.

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

kirjoita kuvan kuvaus iption here

Kommentit

  • Pohjassa on epämiellyttävä virhe, koska sivujen tulisi olla tangentteja alimpaan ellipsiin ja tässä jos ne eivät ole. Suuremman piirtäminen ongelma kasvaa.

Vastaus

Tulin tänne etsimään tapaa piirtää valokartio TikZ: ssä, joten tässä minä tein Danin vastauksen:

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *