Love Heart Jewelry
​By Frederick Wu

1. Prologue

My wife, Julia, and I have been married for 12 years, and we are raising two kids. However, she never received any jewelry from me. I once plotted a few diamonds for her, but that was just a kind of mentally jewelry, still not physical jewelry. Me, being an ungenerous husband, always shrouded in my heart.
A few weeks before, I suddenly got an idea with the progressing of Wolfram Language and rapidly developing of 3D printing technology. Why not design and make a jewelry for my lover? So I implemented my idea with below steps.

2. Design

2.1 Heart Curve (1D Curve)

First, I download a first heart curve for WA.
In[]:=
PlaneCurveData
first heart curve
PLANE CURVE
,"CartesianEquation"
Out[]=
Functiona.,Function{x.,y.},
3

2
x.
+
2
y.
-
2
a.

a.
2
x.
3
y.

It’s an implicit equation and looks like a very standard heart shape. Parameter a can be used to control its size.
In[]:=
With[{a=1},ContourPlot[
3
(
2
x
+
2
y
-
2
a
)
a
2
x
3
y
,{x,-2,2},{y,-2,2},MaxRecursion3,ContourStyleDirective[Blue,Thick]]]
Out[]=
One heart is not quiet enough to express my feelings. So, I replace x and y with trigonometric function. That generates a periodical heart pattern as shown in RegionPlot below. I will use this 2D curve pattern for mapping later.
In[]:=
Module[{x,y,a=0.75,expression},​​expression=
3
(
2
x
+
2
y
-
2
a
)
-a
2
x
3
y
/.{xSin[12u],yCos[12v]};RegionPlot[expression≥0,{u,-Pi/2,Pi/2},{v,-Pi/2,Pi/2},MeshAll,PlotPoints50,MaxRecursion3]]
Out[]=

2.2 Heart Surface (2D Surface)

I searched all existing 2D heart surfaces in WA, Demonstrations and MathWorld. They are all implicit equations. However, I need a parametric equations to plot in 3D.
In[]:=
SurfaceData
Taubin's heart surface
SURFACE
,"CartesianEquation"
Out[]=
Functiona.,Function{x.,y.,z.},
3
2
x.
+
2
3
2
2
y.
+
2
z.
-1
-
2
x.
3
z.
-
1
20
2
3
2
2
y.
3
z.
0
In[]:=
SurfaceData
Taubin's heart surface
SURFACE
,"ParametricEquations"
Out[]=
Missing[NotAvailable]
So I went back to MathWorld and found that one of 2D heart curves (No. 6) is in simple parametric form.
In[]:=
ParametricPlot[{12Sin[t]-4Sin[3t],13Cos[t]-5Cos[2t]-2Cos[3t]-Cos[4t]},{t,0,2Pi},PlotStyleDirective[Red,Thick],PlotLabelStyle["MathWorld 6th heart curve",14,Bold]]
Out[]=
I modified the parameter of this curve a little bit, so that the bottom corner {0,-19} is not too sharp.
In[]:=
ParametricPlot[{15Sin[t]-4Sin[3t],15Cos[t]-5Cos[2t]-2Cos[3t]-Cos[2t]},{t,0,2Pi},PlotStyleDirective[Red,Thick],PlotLabelStyle["modified heart curve",14,Bold]]
Out[]=
The parametric representation has several advantages.
◼
  • 1. Like the explicit representation, the parametric representation is easy to render: simply evaluate the coordinate functions at various values of the parameters.
  • ◼
  • 2. Like implicit equations, parametric equations can also be used to represent closed curves and surfaces as well as curves and surfaces that self-intersect.
  • ◼
  • 3. In addition, the parametric representation has another advantage : it is easy to extend to higher dimensions.
  • To further illustrate point 3:
    if we want to represent a curve in 3D-space, all we need to do is to introduce an additional equation with one variable z = z(t), like spiral curve in 3D.
    If we want to represent a surface in 3D-space, all we need to do is to introduce one set of equations with two variables x = x(u,v), y = y(u,v), z = z(u,v).
    Again, I modified the above curve equation and upgraded it into a novel parametric equations surface in 3D. Suddenly, I found Julia’s parametric heart surface equation.
    Julia'sparametricheartsurfaceequation​​​​x=Sin[v](15Sin[u]-4Sin[3u])​​y=8Cos[v]​​z=Sin[v](15Cos[u]-5Cos[2u]-2Cos[3u]-Cos[2u])
    (
    1
    )
    In[]:=
    ParametricPlot3D[{Sin[v](15Sin[u]-4Sin[3u]),8Cos[v],Sin[v](15Cos[u]-5Cos[2u]-2Cos[3u]-Cos[2u])},{u,0,2Pi},{v,0,Pi},AxesTrue,AxesLabel{"x","y","z"},PlotStyleRed,PlotLabelStyle["Julia's parametric heart surface",14,Bold],ViewPointFront,ImageSize350{1,1}]
    Out[]=

    2.3 Heart Model (3D Volume)

    Now, let’s join 2D plane heart curve and 3D heart surface together. I take out my periodical heart curve pattern in function form.
    In[]:=
    a=0.65;​​expression=
    3
    (
    2
    x
    +
    2
    y
    -
    2
    a
    )
    -a
    2
    x
    3
    y
    /.{xSin[12u^2],yCos[12v^2]}
    Out[]=
    -0.65
    3
    Cos[12
    2
    v
    ]
    2
    Sin[12
    2
    u
    ]
    +
    3
    (-0.4225+
    2
    Cos[12
    2
    v
    ]
    +
    2
    Sin[12
    2
    u
    ]
    )
    Apply RegionFunction to map 2D plane pattern on 3D heart surface. PlotTheme option “ThickSurface” converts a surface into a volume automatically. Tips: Use MaxRecursion and PlotPoints to balance running-speed and quality-resolution for a final discrete model.
    ParametricPlot3D[{Sin[v](15Sin[u]-4Sin[3u]),8Cos[v],Sin[v](15Cos[u]-5Cos[2u]-2Cos[3u]-Cos[2u])},{u,-π,π},{v,0,π},​​MeshNone,BoxedTrue,AxesTrue,PlotStyle{Red,Specularity[White,80]},MaxRecursion4,PlotPoints80,​​RegionFunctionFunction[{x,y,z,u,v},-0.75`
    3
    Cos[12v]
    2
    Sin[12u]
    +
    3
    (-0.5625`+
    2
    Cos[12v]
    +
    2
    Sin[12u]
    )
    ≥0],PlotTheme"ThickSurface",ViewPointFront,AxesLabel{"x","y","z"},PlotLabelStyle["mapping heart curve on heart surface",14,Bold],ImageSize350{1,1}]
    Out[]=
    This is my heart. Export my heart into STL file format. Design is done within 3 lines of Wolfram code. It takes a few hours to run the code and generates a 240 MB STL file.
    Export["myHeart.stl",ParametricPlot3D[{Sin[v](15Sin[u]-4Sin[3u]),8Cos[v],Sin[v](15Cos[u]-5Cos[2u]-2Cos[3u]-Cos[2u])},​​{u,-π,π},{v,0,π},MaxRecursion8,PlotPoints200,PlotTheme"ThickSurface",​​RegionFunctionFunction[{x,y,z,u,v},((-0.75`
    3
    Cos[12v]
    2
    Sin[12u]
    +
    3
    (-0.5625`+
    2
    Cos[12v]
    +
    2
    Sin[12u]
    )
    ≥0))]]];

    3. Manufacture

    I sent my heart STL file to a vendor with Multi-Jet Printing Services. They print a wax part shown in the left image, then use the wax model to cast a metal part shown in the right image .
    Multi-Jet Printing (MJP) is a technology uses a print-head to deposit casting wax material or photo-curable resin onto a printer platform. The process builds extremely detailed parts, and is coupled with a dissolvable or meltable support. Based on detailed wax parts and lost-wax casting processing to produce a final metal jeweleries in platinum, gold, silver or copper. Mechanical-polishing and electroplating are frequently used as post-processing. Depending on material, size, processing and local marketing, a customized 3D printing jewelry costs from 20 to 200 $ (US Dollars).

    4. Prototype

    The prototype is made by 925 silver and polished surface. The idea is to create a complex geometric heart jewelry, with over 100 heart shapes within a limited 3D space (30X25X13mm). There are three kinds of heart forms can be seen.
    ◼
  • 1. One big heart surface in 3D shell form;
  • ◼
  • 2. About 12 median hearts along contours in an implicit form;
  • ◼
  • 3. Over 100 small and tiny hollow heart pattern in different shapes;
  • Julia got a jewelry from her husband, finally.

    5. Review

    ◼
  • Proposed a novel heart surface, Julia’s parametric heart surface equation;
  • ◼
  • Pure math art, mapping heart curves along heart contours on heart surface as a heart jewelry;
  • ◼
  • Maximum number of heart shapes or patterns within a limited volume;
  • ◼
  • Tailed-made for customer service and unique design in worldwide;
  • ◼
  • Short Wolfram Language code, 3 lines code exports a model in STL file;
  • ◼
  • One-piece Integrated manufacture, 3D printing MJP wax part and lost-wax casting;
  • 6. Epilogue

    With computational power of Wolfram Language and advanced 3D printing technology, there are still millions of unique design jewelries waiting for man, as husband, boyfriend, father, son, son-in-law...etc. As James Brown’s lyrics, (I modified a little bit. Sorry, I can’t find a better one.)
    This is a man's world,
    This is a man's world,
    ...
    You see, man made the jewelries
    To make people shining.
    ...
    But it wouldn’t be nothing,
    Nothing without a woman or a girl.