[Tex/LaTex] How to draw a 3D heart shape (Add depth to a 2d heart)

asymptotetikz-pgf

I have been able to draw the following heart:

My Heart

I am using the following code:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\pagestyle{empty}
\begin{document}
    \begin{tikzpicture}
    \draw[black] (0,0) .. controls (0,0.75) and (-1.5,1.00) .. (-1.5,2)  arc (180:0:0.75);
    \draw[black] (0,0) .. controls (0,0.75) and ( 1.5,1.00) .. ( 1.5,2)  arc (0:180:0.75);
    \end{tikzpicture}
\end{document}

I want to rotate the heart, and add a depth to it. I want my final drawing to be something like this:

What I want

I simply want to add a depth to the 2d heart.

Can someone help me on how to rotate, and add a depth to my figure?

Thanks

Best Answer

Another Asymptote try:

size(200);
import graph;
import three;

currentprojection=orthographic(camera=(15,-13,9),zoom=1);
currentlight.background=paleyellow+opacity(0.0);
pen heartPen=deepred;
pen topPen=red;

guide g0=arc((-3,0),3,0,180,CW)--((-6,0) .. controls (-6,3) and (0,4) .. (0,8));
guide g=rotate(180)*(g0--(reflect((0,0),(0,6))*reverse(g0))--cycle);

real dw=0.15;

pair wScale(real t){
  pair p=relpoint(g0,t);
  return p+dw*reldir(g0,t)*(0,1);
}

guide gtop0=graph(wScale,0.05,1,operator..);
guide gtop=rotate(180)*(gtop0..(reflect((0,0),(0,6))*reverse(gtop0))--cycle);


draw(extrude(g,3*Z),heartPen,meshpen=nullpen,render(merge=true));
draw(surface(g),heartPen,meshpen=nullpen,render(merge=true));

draw(shift(0,0,3.01)*extrude(gtop,-0.5*Z),topPen,meshpen=nullpen,render(merge=true));
draw(shift(0,0,3.01)*surface(gtop),topPen,meshpen=nullpen,render(merge=true));

enter image description here