使用仿射变换略施小计可以避免复杂的求根操作:
\documentclass{standalone}
\usepackage{luadraw}
\usepackage[svgnames]{xcolor}
\usepackage{fourier-otf}
\begin{document}
\begin{luadraw}{name=steiner_inellipse}
local ld = luadraw
local cpx = ld.cpx
local g = ld.graph:new{window={-1,6,-1,4},size={10,10}
}
local i, Z = cpx.I, cpx.Z
local sqrt, pi = math.sqrt, math.pi
local A0,B0,C0 = Z(-1,0), Z(1,0), Z(0,sqrt(3))
local A,B,C = Z(0,0), Z(5,0), Z(1,3)
local MA1 = {A0, B0-A0, C0-A0}
local MA2 = {A, B-A, C-A}
local M = ld.composematrix(MA2, ld.invmatrix(MA1))
local In, r = ld.incircle(A0,B0,C0)
g:Savematrix();g:Setmatrix(M)
g:Dpolyline({A0,B0,C0}, true)
g:Dpolyline(ld.circle({In,r}), true, "semithick,magenta")
g:Restorematrix()
g:Dlabel(
"$A$",A,{pos="SW"},
"$B$",B,{pos="SE"},
"$C$",C,{pos="N"}
)
g:Show()
\end{luadraw}
\end{document}这里用到的原理是,deepseek告诉我「三角形之于其内切斯坦纳椭圆的关系」,正如「一个等边三角形之于其内切圆的关系」。因此只要知道「A0B0C0」到「ABC」的仿射矩阵(代码中以基矩阵作为媒介),便可以对内切圆进行仿射变换M,立刻得到目标的内切椭圆...




















问 如何绘制斯坦纳内切椭圆?