绘制二面角模型的外接球?

发布于 2026-09-20 21:03:27

如题,希望复刻下面这幅图:

image.png

查看更多

关注者
0
被浏览
24
1 个回答
Sagittarius Rover
Sagittarius Rover 9小时前
这家伙很懒,什么也没写!

没有完全复刻,具体角度和位置,以及一些线条之间颜色遮挡的细节并未考虑得十分完备...有缘再讨论吧;-)

\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,77.5}
    }
    require 'luadraw_spherical'
    local sM = ld.sM
    ld.Hiddenlines = true;ld.Hiddenlinestyle = "dashed"
    g:Define_sphere{ color = "", edgewidth=8, edgecolor="black" }
    local A,B,M,N = sM(-10,120), sM(-115,120),sM(150,120), sM(0,0)
    g:DScircle({Origin, vecK})
    local vecN = pt3d.prod(A-N,B-N)
    local O1,O2 = ld.proj3d(Origin,{M,vecK}), ld.proj3d(Origin,{N,vecN})
    local r1,r2 = pt3d.abs(M-O1), pt3d.abs(N-O2)
    g:DScircle({M,vecK});g:DScircle({N,vecN})
    g:Dcircle3d(O1,r1,vecK,"draw=none, fill=violet!50, fill opacity=0.4")
    g:Dcircle3d(O2,r2,vecN,"draw=none, fill=violet!50, fill opacity=0.4")
    g:Dspherical()
    g:Dpolyline3d({{A,B,M},{A,B,N}},true,"dashed,blue!75,thick")
    local D = (A+B)/2
    g:Dpolyline3d({Origin,O1,D,O2},true,"dashed,red,thick")
    g:Dpolyline3d({B,Origin,D},"dashed,thick")
    g:Dballdots3d({Origin,O1,O2,A,B,M,N},"red",0.75)
    g:Dballdots3d({D},"blue",0.75)
    g:Dangle3d(Origin,O2,D,0.2,"thick");g:Dangle3d(Origin,O1,D,0.2,"thick");g:Darc3d(O1,D,O2,0.3,1,"red,very thick")
    g:Dlabel3d(
        "$O$",Origin,{pos="E"},
        "$O_1$",O1,{},
        "$M$",M,{pos="N"},
        "$N$",N,{},
        "$O_2$",O2,{pos="N"},
        "$A$",A,{pos="S"},
        "$D$",D,{},
        "$B$",B,{pos="W"},
        "$\\ell$",(B+D)/2,{pos="S",node_options="text=blue!75"},
        "$R$",0.8*B,{pos="N",node_options="text=red"},
        "$n$",0.2*D+0.8*O2,{pos="W"},
        "$m$",0.4*D+0.6*O1,{pos="S"},
        "$\\theta$",D,{pos="NE",dist=0.15}
    )
    g:Show()
\end{luadraw}
\end{document}

image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览