57

Here's a Sketch/TikZ approach. Running sketch on this file: def helix { def n_segs 600 sweep [draw=orange] { n_segs, rotate(24*360 / n_segs, (1.5,0,0), [0,0,1]), rotate(1*360/n_segs, (0,0,0), [0,1,0]) } (2.01,0,0) } def torus { def n_segs 60 sweep [draw=none, fill=cyan, fill opacity=0.75] {n_segs, rotate(360/n_segs, (0,0,0), [0,1,0])} ...


24

Here's an alternative using Asymptote. It fulfills some version of most of your requests; for instance, the colors are defined in the preamble (but in Asymptote code rather than TeX code, so you might need to define TeX versions separately). % To run: pdflatex --shell-escape filename.tex \documentclass[margin=10pt,convert]{standalone} \usepackage{...


20

Updated: Includes workarounds for previous difficulties with compiling complex paths. Here's an Asymptote approach that allows nth order helixes. I show examples of a first-order helix (which wraps once around the torus, as in the original question), a second-order helix, and a third-order helix. Here's the code (configured for a first-order helix): ...


19

Here's an approach using asymptote. It's pretty basic, but if you open it in Adobe Reader you can rotate the torus! \documentclass[12pt]{article} \usepackage{asymptote} \begin{document} \begin{center} \begin{asy}[width=0.5\textwidth] import graph3; size(200,0); currentprojection=orthographic(4,0,2); //inner radius real R=2; //outer radius real a=0.75; /...


18

You can use object=fusion to merge all the spheres to a single object. For that you must also set the option solidmemory: \documentclass[11pt]{standalone} \usepackage[utf8]{inputenc} \usepackage{pstricks,pst-solides3d} \begin{document} \begin{pspicture}(-6,-6)(6,6) \psset{viewpoint=100 100 100,Decran=150} \axesIIID[showOrigin=true,mathLabel=false,...


17

Here's a work-in-progress. It's missing the most important thing: the visibility of the helix. At first I thought that the points where it becomes (in)visible are evenly spaced, but they are not quite. I think I'll have to do some vector algebra to (hopefully) find a solution. The torus is not a 3D object, it's made from many almost transparent circular ...


14

The (original) image was created using ePiX (available from CTAN). The source sphere.xp can be compiled using elaps <options> sphere.xp to produce sphere.xp: /* -*-ePiX-*- */ #include "epix.h" using namespace ePiX; const double k(2*M_PI/(360*sqrt(3))); // assume "degrees" mode double exp_cos(double t) { return exp(k*t)*Cos(t); } ...


11

Have a look at Asymptote. It's very powerful for 3D graphics and can be embedded into Latex. \documentclass{standalone} \usepackage{asymptote} \begin{document} \begin{asy}[width=10cm,height=10cm] import solids; import labelpath3; // Set page size size(0,150); // Lighting currentlight=Viewport; real wi = 4; real le = 4; material m = material(grey, ...


10

Here is an solution for pstricks, but it's not very nice. Thomas \documentclass[11pt]{standalone} \usepackage[utf8]{inputenc} \usepackage{pstricks,pst-solides3d} \begin{document} \begin{pspicture}(-6,-6)(6,6) \psset{viewpoint=100 100 100,Decran=150,solidmemory} \axesIIID[showOrigin=true,mathLabel=false,axisemph=\textbf,labelsep=8pt](-7,-7,-7)(7,7,7) \...


9

Thanks to Alex' answer I was able to redo the plot using pst-solides3d \documentclass[pstricks,border=3pt]{standalone} \usepackage{pst-plot} \usepackage{pst-solides3d} \begin{document} \begin{pspicture}(-1,-1)(1,1) \defFunction[algebraic]{harmonic}(u,v) {sin(u)*cos(v)*(sqrt(3/(4*\psPi))*sin(u)*cos(v))^2} {sin(u)*sin(v)*(sqrt(3/(4*\psPi))*sin(u)*cos(v)...


9

The function \parametricplotThreeD takes the x,y,z-coordinates of the surface as arguments, whereas t and u are polar and azimuthal angles. The following code gives what you are looking for: \documentclass{minimal} \usepackage{pst-3dplot} \begin{document} \centering \psset{algebraic=true} \begin{pspicture}(-2,-3.5)(4,0) \parametricplotThreeD[...


7

Your solids S4 and T4 are both set at locations consisting of only 2 dimensions (-3,-0.9)/(3,-0.9) while you need 3 dimensions. I've done so using (-3,0,-0.9)/(3,0,-0.9) in the MWE below: \documentclass[ dvipsnames ]{article} \usepackage[ hmargin=2.4cm, vmargin=3cm ]{geometry}% http://ctan.org/pkg/geometry \usepackage{pst-solides3d}% tug.org/PSTricks/...


7

The procedures Sin and Cos aren't native PostScript operators, but are defined in pst-solides3d.pro as: /Cos {rd cos} def /Sin {rd sin} def with /pi 3.14159 def /rd {180 pi div mul} def The native PostScript operators are sin and cos and take their argument in degrees. If you want to specify an angle in radians which should be used by rotateOpoint3d, ...


7

If you're willing to use rasterized images, you might consider an Asymptote solution. The basic idea is to draw two surfaces, the "top" and "bottom" of your region, and then fill in the edges with a tube. Here's the code, with some explanatory comments. (Drawing the top and bottom surfaces correctly does, unfortunately, require a bit of math.) \...


7

Minimal Working Solution \documentclass[pstricks,margin=1mm]{standalone} \usepackage{pst-solides3d} \psset{viewpoint=50 70 50 rtp2xyz,Decran=50,linewidth=0.5\pslinewidth} \defFunction[algebraic]{helicespherique}(t) {0.5*cos(10*t)*cos(t)} {0.5*sin(10*t)*cos(t)} {0.5*sin(t)} \begin{document} \begin{pspicture*}(-0.5,-0.5)(0.5,0.5)...


7

Let's start with the skeleton. Coordinates are copy from polyhedron_js.asy. \documentclass[border=9,tikz]{standalone} \usepackage{tikz-3dplot} \begin{document} \foreach\s in{2,4,...,360}{ \tdplotsetmaincoords{2.71828+\s}{2.71828+\s*2} \tikz[tdplot_main_coords,scale=.1]{ \path(-150cm,-150cm)(150cm,150cm); \draw (20.1774,...


6

If SolidWorks can export the model to either u3d or prc (preferred) file formats, you can embed that into your document using the media9 package. If, however, only PDF with the embedded interactive model can be exported, you may extract the u3d or prc data into a standalone file using pdftk and a text editor. Instructions are given in another answer.


Only top voted, non community-wiki answers of a minimum length are eligible