\documentclass{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\usepackage{fourier-otf}
\begin{document}
\begin{luadraw}{name=spherical_circle}
local ld = luadraw
local pt3d, cpx = ld.pt3d, ld.cpx
local M, Mc, Ms = pt3d.M, pt3d.Mc, pt3d.Ms
local Origin, vecI, vecJ, vecK = pt3d.Origin, pt3d.vecI, pt3d.vecJ, pt3d.vecK
local g = ld.graph3d:new{
window3d = {-5,5,-5,5,-5,5},
window = {-5,5,-5,5},
-- adjust2d = true,
viewdir = {0,65}
}
require 'luadraw_spherical'
local sM = ld.sM
ld.Hiddenlines = true;ld.Hiddenlinestyle = "dashed"
g:Define_sphere{ color = "", edgewidth=8, edgecolor="black" }
local A,B,C,D = sM(90,90), sM(140,90),sM(-40,90), sM(-120,50)
g:DScircle({Origin, vecK})
local vecn = pt3d.prod(B,D)
g:Dcircle3d(Origin,3,vecn,"draw=none, fill=violet!30, fill opacity=0.4")
g:DSgreatcircle({B,D},{width = 6})
g:Dspherical()
g:Dpolyline3d({{A,B,D,C,A},{A,D},{B,C}},"dashed,red,thick")
g:Dpolyline3d({D,Origin,A},"dashed,blue!75,thick")
g:Dballdots3d({Origin,A,B,C,D},"red",0.75)
g:Dlabel3d(
"$O$",Origin,{pos="S"},
"$C$",C,{pos="SW"},
"$B$",B,{pos="NE"},
"$D$",D,{pos="N"},
"$A$",A,{pos="E"},
"$r$",A/2,{pos="N",node_options="text=blue"},
"$r$",D/2,{pos="S",dist=0.1},
"$\\ell$",Origin,{pos="N",node_options="text=red"}
)
g:Show()
\end{luadraw}
\end{document}