Drawing a topological “handle” with TikzDrawing circular arrows in tikz to represent turns in a T-intersectionTikz: Once punctured torus?Decoration of (relative) segments of Bézier curvesDrawing Torus with semi-dashed line on itRotate a node but not its content: the case of the ellipse decorationHow to draw an elliptical arc in TikZ given only opposite extreme points (vertices) of the ellipse?TikZ scaling graphic and adjust node position and keep font sizeDraw edge on arcNumerical conditional within tikz keys?Tikz: Error “dimension too large” when decorating arcTikZ: Drawing an arc from an intersection to an intersectionLine up nested tikz enviroments or how to get rid of themProblems with nested TikZpicturesTikz: positionning a beginscope…endscope relatively to the left of another block

Should I install hardwood flooring or cabinets first?

Translation of Scottish 16th century church stained glass

Query about absorption line spectra

What is the difference between "Do you interest" and "...interested in" something?

Drawing a topological "handle" with Tikz

Interest Rate Futures Question from Hull, 8e

Can we have a perfect cadence in a minor key?

How will losing mobility of one hand affect my career as a programmer?

Did US corporations pay demonstrators in the German demonstrations against article 13?

anything or something to eat

Can somebody explain Brexit in a few child-proof sentences?

How do you respond to a colleague from another team when they're wrongly expecting that you'll help them?

How much character growth crosses the line into breaking the character

Do Legal Documents Require Signing In Standard Pen Colors?

What major Native American tribes were around Santa Fe during the late 1850s?

How can "mimic phobia" be cured or prevented?

How do I repair my stair bannister?

Longest common substring in linear time

Varistor? Purpose and principle

Customize circled numbers

Can a significant change in incentives void an employment contract?

On a tidally locked planet, would time be quantized?

Why did the HMS Bounty go back to a time when whales are already rare?

Python script not running correctly when launched with crontab



Drawing a topological “handle” with Tikz


Drawing circular arrows in tikz to represent turns in a T-intersectionTikz: Once punctured torus?Decoration of (relative) segments of Bézier curvesDrawing Torus with semi-dashed line on itRotate a node but not its content: the case of the ellipse decorationHow to draw an elliptical arc in TikZ given only opposite extreme points (vertices) of the ellipse?TikZ scaling graphic and adjust node position and keep font sizeDraw edge on arcNumerical conditional within tikz keys?Tikz: Error “dimension too large” when decorating arcTikZ: Drawing an arc from an intersection to an intersectionLine up nested tikz enviroments or how to get rid of themProblems with nested TikZpicturesTikz: positionning a beginscope…endscope relatively to the left of another block













3















I'm trying to do the following drawing in Tikz:





I almost finished the leftmost picture:





begintikzpicture
fill[blue!20] (7.5,0) ellipse (1 and .75);
draw (7.5,0) ellipse (1 and .75);
beginscope
clip (7.5,-.9) ellipse (1 and 1.25);
draw(7.5,1.1) ellipse (1 and 1.25);
clip (7.5,1.1) ellipse (1 and 1.25);
draw (7.5,-1.1) ellipse (1 and 1.25);
fill[white] (7.5,-1.1) ellipse (1 and 1.25);
endscope
draw (7.5,0) ellipse (0.8 and .47);
draw (7.5,.47) node[scale=0.8] $<$ node[above] $a$;
node (a) at (7.61,-.142894);
node (b) at (8,-.649519);
node (c) at ($(a)!0.5!(b)$) ;
beginscope[shift=(c),x=(a), scale=0.7]
draw (1,0) arc (0:180:1 and 0.3);
draw[dashed] (-1,0) arc (180:360:1 and 0.3);
endscope
draw (7.942,-0.555) node[scale=0.8,rotate=-85] $<$;
draw (7.67,-0.60) node $b$;
endtikzpicture


However I failed to do the "bubble" in the first drawing and to the second one. I appreciate any help.



The closest question I found here was this one: Tikz: Once punctured torus?



However, the answers there don't solve most of my problems.










share|improve this question


























    3















    I'm trying to do the following drawing in Tikz:





    I almost finished the leftmost picture:





    begintikzpicture
    fill[blue!20] (7.5,0) ellipse (1 and .75);
    draw (7.5,0) ellipse (1 and .75);
    beginscope
    clip (7.5,-.9) ellipse (1 and 1.25);
    draw(7.5,1.1) ellipse (1 and 1.25);
    clip (7.5,1.1) ellipse (1 and 1.25);
    draw (7.5,-1.1) ellipse (1 and 1.25);
    fill[white] (7.5,-1.1) ellipse (1 and 1.25);
    endscope
    draw (7.5,0) ellipse (0.8 and .47);
    draw (7.5,.47) node[scale=0.8] $<$ node[above] $a$;
    node (a) at (7.61,-.142894);
    node (b) at (8,-.649519);
    node (c) at ($(a)!0.5!(b)$) ;
    beginscope[shift=(c),x=(a), scale=0.7]
    draw (1,0) arc (0:180:1 and 0.3);
    draw[dashed] (-1,0) arc (180:360:1 and 0.3);
    endscope
    draw (7.942,-0.555) node[scale=0.8,rotate=-85] $<$;
    draw (7.67,-0.60) node $b$;
    endtikzpicture


    However I failed to do the "bubble" in the first drawing and to the second one. I appreciate any help.



    The closest question I found here was this one: Tikz: Once punctured torus?



    However, the answers there don't solve most of my problems.










    share|improve this question
























      3












      3








      3


      1






      I'm trying to do the following drawing in Tikz:





      I almost finished the leftmost picture:





      begintikzpicture
      fill[blue!20] (7.5,0) ellipse (1 and .75);
      draw (7.5,0) ellipse (1 and .75);
      beginscope
      clip (7.5,-.9) ellipse (1 and 1.25);
      draw(7.5,1.1) ellipse (1 and 1.25);
      clip (7.5,1.1) ellipse (1 and 1.25);
      draw (7.5,-1.1) ellipse (1 and 1.25);
      fill[white] (7.5,-1.1) ellipse (1 and 1.25);
      endscope
      draw (7.5,0) ellipse (0.8 and .47);
      draw (7.5,.47) node[scale=0.8] $<$ node[above] $a$;
      node (a) at (7.61,-.142894);
      node (b) at (8,-.649519);
      node (c) at ($(a)!0.5!(b)$) ;
      beginscope[shift=(c),x=(a), scale=0.7]
      draw (1,0) arc (0:180:1 and 0.3);
      draw[dashed] (-1,0) arc (180:360:1 and 0.3);
      endscope
      draw (7.942,-0.555) node[scale=0.8,rotate=-85] $<$;
      draw (7.67,-0.60) node $b$;
      endtikzpicture


      However I failed to do the "bubble" in the first drawing and to the second one. I appreciate any help.



      The closest question I found here was this one: Tikz: Once punctured torus?



      However, the answers there don't solve most of my problems.










      share|improve this question














      I'm trying to do the following drawing in Tikz:





      I almost finished the leftmost picture:





      begintikzpicture
      fill[blue!20] (7.5,0) ellipse (1 and .75);
      draw (7.5,0) ellipse (1 and .75);
      beginscope
      clip (7.5,-.9) ellipse (1 and 1.25);
      draw(7.5,1.1) ellipse (1 and 1.25);
      clip (7.5,1.1) ellipse (1 and 1.25);
      draw (7.5,-1.1) ellipse (1 and 1.25);
      fill[white] (7.5,-1.1) ellipse (1 and 1.25);
      endscope
      draw (7.5,0) ellipse (0.8 and .47);
      draw (7.5,.47) node[scale=0.8] $<$ node[above] $a$;
      node (a) at (7.61,-.142894);
      node (b) at (8,-.649519);
      node (c) at ($(a)!0.5!(b)$) ;
      beginscope[shift=(c),x=(a), scale=0.7]
      draw (1,0) arc (0:180:1 and 0.3);
      draw[dashed] (-1,0) arc (180:360:1 and 0.3);
      endscope
      draw (7.942,-0.555) node[scale=0.8,rotate=-85] $<$;
      draw (7.67,-0.60) node $b$;
      endtikzpicture


      However I failed to do the "bubble" in the first drawing and to the second one. I appreciate any help.



      The closest question I found here was this one: Tikz: Once punctured torus?



      However, the answers there don't solve most of my problems.







      tikz-pgf






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 6 hours ago









      Gabriel RibeiroGabriel Ribeiro

      33518




      33518




















          1 Answer
          1






          active

          oldest

          votes


















          8














          If you really intend to play with these tori, you may eventually want to switch to 3d coordinates, where it is possible to find out whether a coordinate is on the visible or hidden patch.



          documentclass[tikz,border=3.14mm]standalone
          usepackagetikz-3dplot
          begindocument
          tdplotsetmaincoords600
          tikzsetdeclare function=torusx(u,v,R,r)=cos(u)*(R + r*cos(v));
          torusy(u,v,R,r)=(R + r*cos(v))*sin(u);
          torusz(u,v,R,r)=r*sin(v);
          vcrit1(u,th)=atan(tan(th)*sin(u));% first critical v value
          vcrit2(u,th)=180+atan(tan(th)*sin(u));% second critical v value
          disc(th,R,r)=((pow(r,2)-pow(R,2))*pow(cot(th),2)+%
          pow(r,2)*(2+pow(tan(th),2)))/pow(R,2);% discriminant
          umax(th,R,r)=ifthenelse(disc(th,R,r)>0,asin(sqrt(abs(disc(th,R,r)))),0);


          begintikzpicture[tdplot_main_coords]
          pgfmathsetmacroR4
          pgfmathsetmacror1.5
          draw[thick,fill=gray,even odd rule,fill opacity=0.2] plot[variable=x,domain=0:360,smooth,samples=71]
          (torusx(x,vcrit1(x,tdplotmaintheta),R,r),
          torusy(x,vcrit1(x,tdplotmaintheta),R,r),
          torusz(x,vcrit1(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r):-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=umax(tdplotmaintheta,R,r):180-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          draw[thick] plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r)/2:-umax(tdplotmaintheta,R,r)/2,smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          foreach X in 300
          draw[thick,dashed]
          plot[smooth,variable=x,domain=360+vcrit1(X,tdplotmaintheta):vcrit2(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick]
          plot[smooth,variable=x,domain=vcrit2(X,tdplotmaintheta):vcrit1(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick,-latex]
          plot[smooth,variable=x,domain=vcrit1(X,tdplotmaintheta):90,samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));

          draw[thick,-latex] plot[smooth,variable=x,domain=00:360,samples=71]
          (torusx(x,90,R,r),
          torusy(x,90,R,r),
          torusz(x,90,R,r));
          beginscope[declare function=myu(x)=sin(2*x)*sin(x);
          myv(x)=sin(2*x)*cos(x);]
          draw[thick,fill=white] plot[smooth,variable=x,domain=00:90,samples=71]
          (torusx(-60+45*myu(x),90-45*myv(x),R,r),
          torusy(-60+45*myu(x),90-45*myv(x),R,r),
          torusz(-60+45*myu(x),90-45*myv(x),R,r));
          endscope
          endtikzpicture
          enddocument


          enter image description here



          If you want a cartoon, consider e.g.



          documentclass[tikz,border=3.14mm]standalone
          usetikzlibraryarrows.meta,bending,decorations.markings,intersections
          % https://tex.stackexchange.com/a/430239/121799
          tikzset% inspired by https://tex.stackexchange.com/a/316050/121799
          arc arrow/.style args=%
          to pos #1 with length #2
          decoration=
          markings,
          mark=at position 0 with pgfextra%
          pgfmathsetmacrotmpArrowTime#2/(pgfdecoratedpathlength)
          xdeftmpArrowTimetmpArrowTime,
          mark=at position #1-tmpArrowTime with coordinate(@1);,
          mark=at position #1-2*tmpArrowTime/3 with coordinate(@2);,
          mark=at position #1-tmpArrowTime/3 with coordinate(@3);,
          mark=at position #1 with coordinate(@4);
          draw[-Stealth[length=#2,bend]]
          (@1) .. controls (@2) and (@3) .. (@4);,
          ,
          postaction=decorate,
          ,bent arrow/.style=arc arrow=to pos #1 with length 2mm,


          begindocument
          begintikzpicture[scale=4]
          beginscope[local bounding box=left]
          draw[fill=blue!20,even odd rule] (0,0) ellipse (1 and .75)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.25] (xt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw[bent arrow=0.2,thick,name path=b] (-65:1 and .75) to[out=40,in=10]
          node[pos=0.2,right]$b$ (xt);
          draw[dashed] (xt) to[out=-170,in=-140] (-65:1 and .75);
          draw[bent arrow=0.98,thick,name path=a] (0.8,0.05) arc(0:360:0.8 and .5)
          node[pos=0.2,below]$ell$ node[pos=0.98,right]$a$;
          draw[name intersections=of=a and b,by=i,fill=white] (i)
          to[out=45,in=-45] ++ (0.2,0.4) to[out=135,in=45](i);
          endscope
          %
          beginscope[local bounding box=right,xshift=2.5cm]
          draw[fill=blue!20,even odd rule]
          (-0.7,-1) to[out=90,in=-90] (-1,0) arc(180:0:1 and .75)
          to[out=-90,in=90] coordinate[pos=0.7] (ys) (0.7,-1) arc(0:180:0.7 and 0.12) coordinate[pos=0.5] (p)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.5] (yt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw (0.7,-1) arc(0:-180:0.7 and 0.12);
          draw[bent arrow=0.5,thick] (p) to[out=70,in=-120] (-20:0.8 and .5)
          arc(-20:200:0.8 and .5) node[pos=0.5,below]$a$ to[out=-60,in=110] cycle;
          draw[bent arrow=0.5,thick] (p) to[out=80,in=180] node[pos=0.5,right]$b$ (yt);
          draw[dashed] (yt) to[out=0,in=70] (ys);
          draw[thick] (ys) to[out=-110,in=20] (p);
          endscope
          path (left) -- (right) node[midway,scale=2]$simeq$;
          endtikzpicture
          enddocument


          enter image description here



          Unlike in the above picture, you cannot adjust the view angle.






          share|improve this answer

























          • Is it also easier to do the second picture with this method?

            – Gabriel Ribeiro
            4 hours ago






          • 1





            @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

            – marmot
            3 hours ago






          • 1





            @GabrielRibeiro I also added cartoons.

            – marmot
            2 hours ago






          • 1





            This is beautiful! Thank you a lot

            – Gabriel Ribeiro
            1 hour ago










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "85"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481212%2fdrawing-a-topological-handle-with-tikz%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          8














          If you really intend to play with these tori, you may eventually want to switch to 3d coordinates, where it is possible to find out whether a coordinate is on the visible or hidden patch.



          documentclass[tikz,border=3.14mm]standalone
          usepackagetikz-3dplot
          begindocument
          tdplotsetmaincoords600
          tikzsetdeclare function=torusx(u,v,R,r)=cos(u)*(R + r*cos(v));
          torusy(u,v,R,r)=(R + r*cos(v))*sin(u);
          torusz(u,v,R,r)=r*sin(v);
          vcrit1(u,th)=atan(tan(th)*sin(u));% first critical v value
          vcrit2(u,th)=180+atan(tan(th)*sin(u));% second critical v value
          disc(th,R,r)=((pow(r,2)-pow(R,2))*pow(cot(th),2)+%
          pow(r,2)*(2+pow(tan(th),2)))/pow(R,2);% discriminant
          umax(th,R,r)=ifthenelse(disc(th,R,r)>0,asin(sqrt(abs(disc(th,R,r)))),0);


          begintikzpicture[tdplot_main_coords]
          pgfmathsetmacroR4
          pgfmathsetmacror1.5
          draw[thick,fill=gray,even odd rule,fill opacity=0.2] plot[variable=x,domain=0:360,smooth,samples=71]
          (torusx(x,vcrit1(x,tdplotmaintheta),R,r),
          torusy(x,vcrit1(x,tdplotmaintheta),R,r),
          torusz(x,vcrit1(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r):-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=umax(tdplotmaintheta,R,r):180-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          draw[thick] plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r)/2:-umax(tdplotmaintheta,R,r)/2,smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          foreach X in 300
          draw[thick,dashed]
          plot[smooth,variable=x,domain=360+vcrit1(X,tdplotmaintheta):vcrit2(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick]
          plot[smooth,variable=x,domain=vcrit2(X,tdplotmaintheta):vcrit1(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick,-latex]
          plot[smooth,variable=x,domain=vcrit1(X,tdplotmaintheta):90,samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));

          draw[thick,-latex] plot[smooth,variable=x,domain=00:360,samples=71]
          (torusx(x,90,R,r),
          torusy(x,90,R,r),
          torusz(x,90,R,r));
          beginscope[declare function=myu(x)=sin(2*x)*sin(x);
          myv(x)=sin(2*x)*cos(x);]
          draw[thick,fill=white] plot[smooth,variable=x,domain=00:90,samples=71]
          (torusx(-60+45*myu(x),90-45*myv(x),R,r),
          torusy(-60+45*myu(x),90-45*myv(x),R,r),
          torusz(-60+45*myu(x),90-45*myv(x),R,r));
          endscope
          endtikzpicture
          enddocument


          enter image description here



          If you want a cartoon, consider e.g.



          documentclass[tikz,border=3.14mm]standalone
          usetikzlibraryarrows.meta,bending,decorations.markings,intersections
          % https://tex.stackexchange.com/a/430239/121799
          tikzset% inspired by https://tex.stackexchange.com/a/316050/121799
          arc arrow/.style args=%
          to pos #1 with length #2
          decoration=
          markings,
          mark=at position 0 with pgfextra%
          pgfmathsetmacrotmpArrowTime#2/(pgfdecoratedpathlength)
          xdeftmpArrowTimetmpArrowTime,
          mark=at position #1-tmpArrowTime with coordinate(@1);,
          mark=at position #1-2*tmpArrowTime/3 with coordinate(@2);,
          mark=at position #1-tmpArrowTime/3 with coordinate(@3);,
          mark=at position #1 with coordinate(@4);
          draw[-Stealth[length=#2,bend]]
          (@1) .. controls (@2) and (@3) .. (@4);,
          ,
          postaction=decorate,
          ,bent arrow/.style=arc arrow=to pos #1 with length 2mm,


          begindocument
          begintikzpicture[scale=4]
          beginscope[local bounding box=left]
          draw[fill=blue!20,even odd rule] (0,0) ellipse (1 and .75)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.25] (xt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw[bent arrow=0.2,thick,name path=b] (-65:1 and .75) to[out=40,in=10]
          node[pos=0.2,right]$b$ (xt);
          draw[dashed] (xt) to[out=-170,in=-140] (-65:1 and .75);
          draw[bent arrow=0.98,thick,name path=a] (0.8,0.05) arc(0:360:0.8 and .5)
          node[pos=0.2,below]$ell$ node[pos=0.98,right]$a$;
          draw[name intersections=of=a and b,by=i,fill=white] (i)
          to[out=45,in=-45] ++ (0.2,0.4) to[out=135,in=45](i);
          endscope
          %
          beginscope[local bounding box=right,xshift=2.5cm]
          draw[fill=blue!20,even odd rule]
          (-0.7,-1) to[out=90,in=-90] (-1,0) arc(180:0:1 and .75)
          to[out=-90,in=90] coordinate[pos=0.7] (ys) (0.7,-1) arc(0:180:0.7 and 0.12) coordinate[pos=0.5] (p)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.5] (yt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw (0.7,-1) arc(0:-180:0.7 and 0.12);
          draw[bent arrow=0.5,thick] (p) to[out=70,in=-120] (-20:0.8 and .5)
          arc(-20:200:0.8 and .5) node[pos=0.5,below]$a$ to[out=-60,in=110] cycle;
          draw[bent arrow=0.5,thick] (p) to[out=80,in=180] node[pos=0.5,right]$b$ (yt);
          draw[dashed] (yt) to[out=0,in=70] (ys);
          draw[thick] (ys) to[out=-110,in=20] (p);
          endscope
          path (left) -- (right) node[midway,scale=2]$simeq$;
          endtikzpicture
          enddocument


          enter image description here



          Unlike in the above picture, you cannot adjust the view angle.






          share|improve this answer

























          • Is it also easier to do the second picture with this method?

            – Gabriel Ribeiro
            4 hours ago






          • 1





            @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

            – marmot
            3 hours ago






          • 1





            @GabrielRibeiro I also added cartoons.

            – marmot
            2 hours ago






          • 1





            This is beautiful! Thank you a lot

            – Gabriel Ribeiro
            1 hour ago















          8














          If you really intend to play with these tori, you may eventually want to switch to 3d coordinates, where it is possible to find out whether a coordinate is on the visible or hidden patch.



          documentclass[tikz,border=3.14mm]standalone
          usepackagetikz-3dplot
          begindocument
          tdplotsetmaincoords600
          tikzsetdeclare function=torusx(u,v,R,r)=cos(u)*(R + r*cos(v));
          torusy(u,v,R,r)=(R + r*cos(v))*sin(u);
          torusz(u,v,R,r)=r*sin(v);
          vcrit1(u,th)=atan(tan(th)*sin(u));% first critical v value
          vcrit2(u,th)=180+atan(tan(th)*sin(u));% second critical v value
          disc(th,R,r)=((pow(r,2)-pow(R,2))*pow(cot(th),2)+%
          pow(r,2)*(2+pow(tan(th),2)))/pow(R,2);% discriminant
          umax(th,R,r)=ifthenelse(disc(th,R,r)>0,asin(sqrt(abs(disc(th,R,r)))),0);


          begintikzpicture[tdplot_main_coords]
          pgfmathsetmacroR4
          pgfmathsetmacror1.5
          draw[thick,fill=gray,even odd rule,fill opacity=0.2] plot[variable=x,domain=0:360,smooth,samples=71]
          (torusx(x,vcrit1(x,tdplotmaintheta),R,r),
          torusy(x,vcrit1(x,tdplotmaintheta),R,r),
          torusz(x,vcrit1(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r):-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=umax(tdplotmaintheta,R,r):180-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          draw[thick] plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r)/2:-umax(tdplotmaintheta,R,r)/2,smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          foreach X in 300
          draw[thick,dashed]
          plot[smooth,variable=x,domain=360+vcrit1(X,tdplotmaintheta):vcrit2(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick]
          plot[smooth,variable=x,domain=vcrit2(X,tdplotmaintheta):vcrit1(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick,-latex]
          plot[smooth,variable=x,domain=vcrit1(X,tdplotmaintheta):90,samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));

          draw[thick,-latex] plot[smooth,variable=x,domain=00:360,samples=71]
          (torusx(x,90,R,r),
          torusy(x,90,R,r),
          torusz(x,90,R,r));
          beginscope[declare function=myu(x)=sin(2*x)*sin(x);
          myv(x)=sin(2*x)*cos(x);]
          draw[thick,fill=white] plot[smooth,variable=x,domain=00:90,samples=71]
          (torusx(-60+45*myu(x),90-45*myv(x),R,r),
          torusy(-60+45*myu(x),90-45*myv(x),R,r),
          torusz(-60+45*myu(x),90-45*myv(x),R,r));
          endscope
          endtikzpicture
          enddocument


          enter image description here



          If you want a cartoon, consider e.g.



          documentclass[tikz,border=3.14mm]standalone
          usetikzlibraryarrows.meta,bending,decorations.markings,intersections
          % https://tex.stackexchange.com/a/430239/121799
          tikzset% inspired by https://tex.stackexchange.com/a/316050/121799
          arc arrow/.style args=%
          to pos #1 with length #2
          decoration=
          markings,
          mark=at position 0 with pgfextra%
          pgfmathsetmacrotmpArrowTime#2/(pgfdecoratedpathlength)
          xdeftmpArrowTimetmpArrowTime,
          mark=at position #1-tmpArrowTime with coordinate(@1);,
          mark=at position #1-2*tmpArrowTime/3 with coordinate(@2);,
          mark=at position #1-tmpArrowTime/3 with coordinate(@3);,
          mark=at position #1 with coordinate(@4);
          draw[-Stealth[length=#2,bend]]
          (@1) .. controls (@2) and (@3) .. (@4);,
          ,
          postaction=decorate,
          ,bent arrow/.style=arc arrow=to pos #1 with length 2mm,


          begindocument
          begintikzpicture[scale=4]
          beginscope[local bounding box=left]
          draw[fill=blue!20,even odd rule] (0,0) ellipse (1 and .75)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.25] (xt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw[bent arrow=0.2,thick,name path=b] (-65:1 and .75) to[out=40,in=10]
          node[pos=0.2,right]$b$ (xt);
          draw[dashed] (xt) to[out=-170,in=-140] (-65:1 and .75);
          draw[bent arrow=0.98,thick,name path=a] (0.8,0.05) arc(0:360:0.8 and .5)
          node[pos=0.2,below]$ell$ node[pos=0.98,right]$a$;
          draw[name intersections=of=a and b,by=i,fill=white] (i)
          to[out=45,in=-45] ++ (0.2,0.4) to[out=135,in=45](i);
          endscope
          %
          beginscope[local bounding box=right,xshift=2.5cm]
          draw[fill=blue!20,even odd rule]
          (-0.7,-1) to[out=90,in=-90] (-1,0) arc(180:0:1 and .75)
          to[out=-90,in=90] coordinate[pos=0.7] (ys) (0.7,-1) arc(0:180:0.7 and 0.12) coordinate[pos=0.5] (p)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.5] (yt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw (0.7,-1) arc(0:-180:0.7 and 0.12);
          draw[bent arrow=0.5,thick] (p) to[out=70,in=-120] (-20:0.8 and .5)
          arc(-20:200:0.8 and .5) node[pos=0.5,below]$a$ to[out=-60,in=110] cycle;
          draw[bent arrow=0.5,thick] (p) to[out=80,in=180] node[pos=0.5,right]$b$ (yt);
          draw[dashed] (yt) to[out=0,in=70] (ys);
          draw[thick] (ys) to[out=-110,in=20] (p);
          endscope
          path (left) -- (right) node[midway,scale=2]$simeq$;
          endtikzpicture
          enddocument


          enter image description here



          Unlike in the above picture, you cannot adjust the view angle.






          share|improve this answer

























          • Is it also easier to do the second picture with this method?

            – Gabriel Ribeiro
            4 hours ago






          • 1





            @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

            – marmot
            3 hours ago






          • 1





            @GabrielRibeiro I also added cartoons.

            – marmot
            2 hours ago






          • 1





            This is beautiful! Thank you a lot

            – Gabriel Ribeiro
            1 hour ago













          8












          8








          8







          If you really intend to play with these tori, you may eventually want to switch to 3d coordinates, where it is possible to find out whether a coordinate is on the visible or hidden patch.



          documentclass[tikz,border=3.14mm]standalone
          usepackagetikz-3dplot
          begindocument
          tdplotsetmaincoords600
          tikzsetdeclare function=torusx(u,v,R,r)=cos(u)*(R + r*cos(v));
          torusy(u,v,R,r)=(R + r*cos(v))*sin(u);
          torusz(u,v,R,r)=r*sin(v);
          vcrit1(u,th)=atan(tan(th)*sin(u));% first critical v value
          vcrit2(u,th)=180+atan(tan(th)*sin(u));% second critical v value
          disc(th,R,r)=((pow(r,2)-pow(R,2))*pow(cot(th),2)+%
          pow(r,2)*(2+pow(tan(th),2)))/pow(R,2);% discriminant
          umax(th,R,r)=ifthenelse(disc(th,R,r)>0,asin(sqrt(abs(disc(th,R,r)))),0);


          begintikzpicture[tdplot_main_coords]
          pgfmathsetmacroR4
          pgfmathsetmacror1.5
          draw[thick,fill=gray,even odd rule,fill opacity=0.2] plot[variable=x,domain=0:360,smooth,samples=71]
          (torusx(x,vcrit1(x,tdplotmaintheta),R,r),
          torusy(x,vcrit1(x,tdplotmaintheta),R,r),
          torusz(x,vcrit1(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r):-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=umax(tdplotmaintheta,R,r):180-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          draw[thick] plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r)/2:-umax(tdplotmaintheta,R,r)/2,smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          foreach X in 300
          draw[thick,dashed]
          plot[smooth,variable=x,domain=360+vcrit1(X,tdplotmaintheta):vcrit2(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick]
          plot[smooth,variable=x,domain=vcrit2(X,tdplotmaintheta):vcrit1(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick,-latex]
          plot[smooth,variable=x,domain=vcrit1(X,tdplotmaintheta):90,samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));

          draw[thick,-latex] plot[smooth,variable=x,domain=00:360,samples=71]
          (torusx(x,90,R,r),
          torusy(x,90,R,r),
          torusz(x,90,R,r));
          beginscope[declare function=myu(x)=sin(2*x)*sin(x);
          myv(x)=sin(2*x)*cos(x);]
          draw[thick,fill=white] plot[smooth,variable=x,domain=00:90,samples=71]
          (torusx(-60+45*myu(x),90-45*myv(x),R,r),
          torusy(-60+45*myu(x),90-45*myv(x),R,r),
          torusz(-60+45*myu(x),90-45*myv(x),R,r));
          endscope
          endtikzpicture
          enddocument


          enter image description here



          If you want a cartoon, consider e.g.



          documentclass[tikz,border=3.14mm]standalone
          usetikzlibraryarrows.meta,bending,decorations.markings,intersections
          % https://tex.stackexchange.com/a/430239/121799
          tikzset% inspired by https://tex.stackexchange.com/a/316050/121799
          arc arrow/.style args=%
          to pos #1 with length #2
          decoration=
          markings,
          mark=at position 0 with pgfextra%
          pgfmathsetmacrotmpArrowTime#2/(pgfdecoratedpathlength)
          xdeftmpArrowTimetmpArrowTime,
          mark=at position #1-tmpArrowTime with coordinate(@1);,
          mark=at position #1-2*tmpArrowTime/3 with coordinate(@2);,
          mark=at position #1-tmpArrowTime/3 with coordinate(@3);,
          mark=at position #1 with coordinate(@4);
          draw[-Stealth[length=#2,bend]]
          (@1) .. controls (@2) and (@3) .. (@4);,
          ,
          postaction=decorate,
          ,bent arrow/.style=arc arrow=to pos #1 with length 2mm,


          begindocument
          begintikzpicture[scale=4]
          beginscope[local bounding box=left]
          draw[fill=blue!20,even odd rule] (0,0) ellipse (1 and .75)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.25] (xt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw[bent arrow=0.2,thick,name path=b] (-65:1 and .75) to[out=40,in=10]
          node[pos=0.2,right]$b$ (xt);
          draw[dashed] (xt) to[out=-170,in=-140] (-65:1 and .75);
          draw[bent arrow=0.98,thick,name path=a] (0.8,0.05) arc(0:360:0.8 and .5)
          node[pos=0.2,below]$ell$ node[pos=0.98,right]$a$;
          draw[name intersections=of=a and b,by=i,fill=white] (i)
          to[out=45,in=-45] ++ (0.2,0.4) to[out=135,in=45](i);
          endscope
          %
          beginscope[local bounding box=right,xshift=2.5cm]
          draw[fill=blue!20,even odd rule]
          (-0.7,-1) to[out=90,in=-90] (-1,0) arc(180:0:1 and .75)
          to[out=-90,in=90] coordinate[pos=0.7] (ys) (0.7,-1) arc(0:180:0.7 and 0.12) coordinate[pos=0.5] (p)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.5] (yt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw (0.7,-1) arc(0:-180:0.7 and 0.12);
          draw[bent arrow=0.5,thick] (p) to[out=70,in=-120] (-20:0.8 and .5)
          arc(-20:200:0.8 and .5) node[pos=0.5,below]$a$ to[out=-60,in=110] cycle;
          draw[bent arrow=0.5,thick] (p) to[out=80,in=180] node[pos=0.5,right]$b$ (yt);
          draw[dashed] (yt) to[out=0,in=70] (ys);
          draw[thick] (ys) to[out=-110,in=20] (p);
          endscope
          path (left) -- (right) node[midway,scale=2]$simeq$;
          endtikzpicture
          enddocument


          enter image description here



          Unlike in the above picture, you cannot adjust the view angle.






          share|improve this answer















          If you really intend to play with these tori, you may eventually want to switch to 3d coordinates, where it is possible to find out whether a coordinate is on the visible or hidden patch.



          documentclass[tikz,border=3.14mm]standalone
          usepackagetikz-3dplot
          begindocument
          tdplotsetmaincoords600
          tikzsetdeclare function=torusx(u,v,R,r)=cos(u)*(R + r*cos(v));
          torusy(u,v,R,r)=(R + r*cos(v))*sin(u);
          torusz(u,v,R,r)=r*sin(v);
          vcrit1(u,th)=atan(tan(th)*sin(u));% first critical v value
          vcrit2(u,th)=180+atan(tan(th)*sin(u));% second critical v value
          disc(th,R,r)=((pow(r,2)-pow(R,2))*pow(cot(th),2)+%
          pow(r,2)*(2+pow(tan(th),2)))/pow(R,2);% discriminant
          umax(th,R,r)=ifthenelse(disc(th,R,r)>0,asin(sqrt(abs(disc(th,R,r)))),0);


          begintikzpicture[tdplot_main_coords]
          pgfmathsetmacroR4
          pgfmathsetmacror1.5
          draw[thick,fill=gray,even odd rule,fill opacity=0.2] plot[variable=x,domain=0:360,smooth,samples=71]
          (torusx(x,vcrit1(x,tdplotmaintheta),R,r),
          torusy(x,vcrit1(x,tdplotmaintheta),R,r),
          torusz(x,vcrit1(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r):-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r))
          plot[variable=x,
          domain=umax(tdplotmaintheta,R,r):180-umax(tdplotmaintheta,R,r),smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          draw[thick] plot[variable=x,
          domain=-180+umax(tdplotmaintheta,R,r)/2:-umax(tdplotmaintheta,R,r)/2,smooth,samples=51]
          (torusx(x,vcrit2(x,tdplotmaintheta),R,r),
          torusy(x,vcrit2(x,tdplotmaintheta),R,r),
          torusz(x,vcrit2(x,tdplotmaintheta),R,r));
          foreach X in 300
          draw[thick,dashed]
          plot[smooth,variable=x,domain=360+vcrit1(X,tdplotmaintheta):vcrit2(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick]
          plot[smooth,variable=x,domain=vcrit2(X,tdplotmaintheta):vcrit1(X,tdplotmaintheta),samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));
          draw[thick,-latex]
          plot[smooth,variable=x,domain=vcrit1(X,tdplotmaintheta):90,samples=71]
          (torusx(X,x,R,r),torusy(X,x,R,r),torusz(X,x,R,r));

          draw[thick,-latex] plot[smooth,variable=x,domain=00:360,samples=71]
          (torusx(x,90,R,r),
          torusy(x,90,R,r),
          torusz(x,90,R,r));
          beginscope[declare function=myu(x)=sin(2*x)*sin(x);
          myv(x)=sin(2*x)*cos(x);]
          draw[thick,fill=white] plot[smooth,variable=x,domain=00:90,samples=71]
          (torusx(-60+45*myu(x),90-45*myv(x),R,r),
          torusy(-60+45*myu(x),90-45*myv(x),R,r),
          torusz(-60+45*myu(x),90-45*myv(x),R,r));
          endscope
          endtikzpicture
          enddocument


          enter image description here



          If you want a cartoon, consider e.g.



          documentclass[tikz,border=3.14mm]standalone
          usetikzlibraryarrows.meta,bending,decorations.markings,intersections
          % https://tex.stackexchange.com/a/430239/121799
          tikzset% inspired by https://tex.stackexchange.com/a/316050/121799
          arc arrow/.style args=%
          to pos #1 with length #2
          decoration=
          markings,
          mark=at position 0 with pgfextra%
          pgfmathsetmacrotmpArrowTime#2/(pgfdecoratedpathlength)
          xdeftmpArrowTimetmpArrowTime,
          mark=at position #1-tmpArrowTime with coordinate(@1);,
          mark=at position #1-2*tmpArrowTime/3 with coordinate(@2);,
          mark=at position #1-tmpArrowTime/3 with coordinate(@3);,
          mark=at position #1 with coordinate(@4);
          draw[-Stealth[length=#2,bend]]
          (@1) .. controls (@2) and (@3) .. (@4);,
          ,
          postaction=decorate,
          ,bent arrow/.style=arc arrow=to pos #1 with length 2mm,


          begindocument
          begintikzpicture[scale=4]
          beginscope[local bounding box=left]
          draw[fill=blue!20,even odd rule] (0,0) ellipse (1 and .75)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.25] (xt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw[bent arrow=0.2,thick,name path=b] (-65:1 and .75) to[out=40,in=10]
          node[pos=0.2,right]$b$ (xt);
          draw[dashed] (xt) to[out=-170,in=-140] (-65:1 and .75);
          draw[bent arrow=0.98,thick,name path=a] (0.8,0.05) arc(0:360:0.8 and .5)
          node[pos=0.2,below]$ell$ node[pos=0.98,right]$a$;
          draw[name intersections=of=a and b,by=i,fill=white] (i)
          to[out=45,in=-45] ++ (0.2,0.4) to[out=135,in=45](i);
          endscope
          %
          beginscope[local bounding box=right,xshift=2.5cm]
          draw[fill=blue!20,even odd rule]
          (-0.7,-1) to[out=90,in=-90] (-1,0) arc(180:0:1 and .75)
          to[out=-90,in=90] coordinate[pos=0.7] (ys) (0.7,-1) arc(0:180:0.7 and 0.12) coordinate[pos=0.5] (p)
          (-0.5,0) arc(120:60:1 and 1.25) arc(-60:-120:1 and 1.25) coordinate[pos=0.5] (yt);
          draw (-0.5,0) arc(-120:-130:1 and 1.25) (0.5,0) arc(-60:-50:1 and 1.25);
          draw (0.7,-1) arc(0:-180:0.7 and 0.12);
          draw[bent arrow=0.5,thick] (p) to[out=70,in=-120] (-20:0.8 and .5)
          arc(-20:200:0.8 and .5) node[pos=0.5,below]$a$ to[out=-60,in=110] cycle;
          draw[bent arrow=0.5,thick] (p) to[out=80,in=180] node[pos=0.5,right]$b$ (yt);
          draw[dashed] (yt) to[out=0,in=70] (ys);
          draw[thick] (ys) to[out=-110,in=20] (p);
          endscope
          path (left) -- (right) node[midway,scale=2]$simeq$;
          endtikzpicture
          enddocument


          enter image description here



          Unlike in the above picture, you cannot adjust the view angle.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 2 hours ago

























          answered 5 hours ago









          marmotmarmot

          111k5138263




          111k5138263












          • Is it also easier to do the second picture with this method?

            – Gabriel Ribeiro
            4 hours ago






          • 1





            @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

            – marmot
            3 hours ago






          • 1





            @GabrielRibeiro I also added cartoons.

            – marmot
            2 hours ago






          • 1





            This is beautiful! Thank you a lot

            – Gabriel Ribeiro
            1 hour ago

















          • Is it also easier to do the second picture with this method?

            – Gabriel Ribeiro
            4 hours ago






          • 1





            @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

            – marmot
            3 hours ago






          • 1





            @GabrielRibeiro I also added cartoons.

            – marmot
            2 hours ago






          • 1





            This is beautiful! Thank you a lot

            – Gabriel Ribeiro
            1 hour ago
















          Is it also easier to do the second picture with this method?

          – Gabriel Ribeiro
          4 hours ago





          Is it also easier to do the second picture with this method?

          – Gabriel Ribeiro
          4 hours ago




          1




          1





          @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

          – marmot
          3 hours ago





          @GabrielRibeiro It depends on what you want to do in the end. This proposal makes more sense if you have to draw several tori with cycles and so on. If you just need two quick cartoons, this might be an overkill.

          – marmot
          3 hours ago




          1




          1





          @GabrielRibeiro I also added cartoons.

          – marmot
          2 hours ago





          @GabrielRibeiro I also added cartoons.

          – marmot
          2 hours ago




          1




          1





          This is beautiful! Thank you a lot

          – Gabriel Ribeiro
          1 hour ago





          This is beautiful! Thank you a lot

          – Gabriel Ribeiro
          1 hour ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481212%2fdrawing-a-topological-handle-with-tikz%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Era Viking Índice Início da Era Viquingue | Cotidiano | Sociedade | Língua | Religião | A arte | As primeiras cidades | As viagens dos viquingues | Viquingues do Oeste e Leste | Fim da Era Viquingue | Fontes históricas | Referências Bibliografia | Ligações externas | Menu de navegação«Sverige då!»«Handel I vikingetid»«O que é Nórdico Antigo»Mito, magia e religião na volsunga saga Um olhar sobre a trajetória mítica do herói sigurd«Bonden var den verklige vikingen»«Vikingatiden»«Vikingatiden»«Vinland»«Guerreiras de Óðinn: As Valkyrjor na Mitologia Viking»1519-9053«Esculpindo símbolos e seres: A arte viking em pedras rúnicas»1679-9313Historia - Tema: VikingarnaAventura e Magia no Mundo das Sagas IslandesasEra Vikinge

          What's the metal clinking sound at the end of credits in Avengers: Endgame?What makes Thanos so strong in Avengers: Endgame?Who is the character that appears at the end of Endgame?What happens to Mjolnir (Thor's hammer) at the end of Endgame?The People's Ages in Avengers: EndgameWhat did Nebula do in Avengers: Endgame?Messing with time in the Avengers: Endgame climaxAvengers: Endgame timelineWhat are the time-travel rules in Avengers Endgame?Why use this song in Avengers: Endgame Opening Logo Sequence?Peggy's age in Avengers Endgame

          Are there legal definitions of ethnicities/races? The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Legal definitions in the United StatesAre there truly legal limits on US interest rates?Are gender identity and sexual orientation federally protected?Why is there an apparent legal bias against digital services?What limits are there to the powers of individual judges in the United States legal system?Are women only scholarships legal under Irish / EU law?Is the term “race” defined by Public Law enacted by Congress of the United StatesIs there a legal definition of race in the US?Neighbors are spying for landlord on Renters is it legal?Are Protected Classes Bi-directional?