我前几天还画了最后一个「棱切球」,但是对效果不太满意,和开发者在这里讨论了一下...其实真实的3D和教学性用图需要的是不太一样的,这个包的作者更希望展示真实的3D情景...
BTW, 原题主在小红书发的帖子最好贴个原链接...我看原图样式可能是GGB转tikz的吧...

下面是我修改后的版本:
% https://github.com/pfradin/luadraw/discussions/335#discussioncomment-18452750
\documentclass{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\usepackage{fourier-otf}
\begin{document}
\begin{luadraw}{name=tetrahedron}
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 poly = require 'luadraw_polyhedrons'
require 'luadraw_spherical'
local g = ld.graph3d:new{ window = {-4,4,-4,4}, viewdir = {60,80}, size={12,12} }
ld.Hiddenlines = true; ld.Hiddenlinestyle = "dashed"
local P = poly.tetrahedron(Origin, 3*vecK)
local D, B, C, A = table.unpack(P.vertices)
local T1,T2,T3,T4 = (A+B)/2, (B+C)/2, (C+D)/2, (D+A)/2
local T5,T6 = (B+D)/2, (A+C)/2
local R = pt3d.abs(T1)
local o1,r1,n1 = ld.incircle3d(A,B,C) -- incircle of triangle ABC
local o2,r2,n2 = ld.circumcircle3d(T3,T4,T5) -- circumcircle of triangle T3T4T5
g:Define_sphere({radius=R, color="magenta!25", edgestyle="noline", mode=ld.mBorder, hiddencolor="violet"})
g:DScircle({Origin,vecK}, {color="violet", width=8})
g:DSpolyline( ld.facetedges(P),{width=8} )
g:DScircle({A,pt3d.prod(C-A,B-A)},{color="violet"})
g:DScircle({T5,pt3d.prod(T3-T5,T4-T5)},{color="violet"})
g:Dspherical()
g:Dcircle3d(o1,r1,n1,"draw=none, fill=blue!30, fill opacity=0.4")
g:Dcircle3d(o2,r2,n2,"draw=none, fill=blue!30, fill opacity=0.4")
g:Dpolyline3d({{Origin,T3},{T2,T4}},"red,dashed,thick")
g:Dpolyline3d({D,o1,A},"teal,dashed,semithick")
g:Dballdots3d({Origin,o1,o2,A,B,C,D,T1,T2,T3,T4,T5,T6},"red",0.75)
g:Dlabel3d(
"$A$",A,{pos="W"},
"$B$",B,{pos="S"},
"$C$",C,{pos="E"},
"$D$",D,{pos="N"}
)
g:Linecolor("black");-- g:Linestyle("dashed")
g:Dangle3d(D,T4,T2,0.15,"thick"); g:Dangle3d(D,T3,Origin,0.15,"thick"); g:Dangle3d(T4,T2,B,0.15,"thick");
g:Dlabel3d(
"$O$",Origin,{pos="E"},
"$O_1$",o1,{},
"$O_2$",o2,{},
"$a$",(A+B)/2,{pos="SW",node_options="text=red"},
"$R$",(T2+T4)/2,{pos="W",dist=0.1}
)
g:Show()
\end{luadraw}
\end{document}
我建议你可以画到某个图的时候开新的问题(不需要额外悬赏),避免在一个帖子里存在大量不同版本的代码,一个帖子集中在一个图,逐个击破。
好的好的.
原题主是用tikz的3dplot画的,我记得所有实虚线要手动控制,所以我想应该有更好的方法.类似tkz_euclide画平面几何,对称的,应该有画几何体的.
@u124578
luadraw 应该是能比较好地自动处理这一点的... 可以看看文档里的例子...
https://ctan.org/pkg/luadraw