Por favor, ejecuta las celdas una por una. Exekutatu zelda guztiak banan banan, mesedez. Please, run the Cells one by one.

Toro[a_, b_][{u_, v_}] :=  {(a + b* Cos[v])*
          Cos[u], (a + b*Cos[v])*Sin[u],  b Sin[v]}

dip[ins_][g_] := $DisplayFunction[
        Insert[g, ins, {1, 1}]]

toro = 
        ParametricPlot3D[Toro[2.5, 1][{u, v}] // Evaluate, {u, 0, 
            2 Pi}, {v, 0, 2 Pi}, 
PlotPoints -> 
            40, 
ViewPoint -> {2.194,  -1.232,  
              2.262}, 
Boxed -> 
            False, 
Axes -> 
            None, 
DisplayFunction -> 
            dip[EdgeForm[]]];

Curva[m_][t_] := {t, m*t}

a y b controlan las dimensiones del toro. m controla la pendiente, y n controla la longitud de la curva.

a eta b baloreak toruaren dimentsioak kontrolatzen dituzte. m malda da, eta n kurbaren luzera da.

a and b control the dimensions of the torus, m determines the slope, and n determines the curve's length

dibujocurva[a_, b_][m_][
          n_] := 
ParametricPlot3D[Toro[a, 
                b][Curva[m][t]] // Evaluate, {t, 0, 
            n}, 
PlotPoints -> 
            10000, 
ViewPoint -> {2.194,  -1.232,  
              2.262}, 
Boxed -> 
            False, 
Axes -> None];

foliacion = dibujocurva[2.5, 1.01][Pi][600];

Show[foliacion, toro];

Nota: si cambias a y b, también lo has de cambiar en "toro", celda 3.

Oharra: a eta b aldatuz gero, aldatu ere "toro" definizioan, hirugarren zeldan.

Note: if you change a and b, you should perform the changes again in the definition of "toro", in the third Cell.