10 如何用latex实现高中几何体的如下效果?例如正方体内切球.顺便教下怎么充值余额

发布于 2026-09-15 07:51:54
关注者
0
被浏览
420
Sagittarius Rover
Sagittarius Rover 2026-09-20
这家伙很懒,什么也没写!

我前几天还画了最后一个「棱切球」,但是对效果不太满意,和开发者在这里讨论了一下...其实真实的3D和教学性用图需要的是不太一样的,这个包的作者更希望展示真实的3D情景...

BTW, 原题主在小红书发的帖子最好贴个原链接...我看原图样式可能是GGB转tikz的吧...

image.png

下面是我修改后的版本:

% 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}

image.png

我建议你可以画到某个图的时候开新的问题(不需要额外悬赏),避免在一个帖子里存在大量不同版本的代码,一个帖子集中在一个图,逐个击破。

4 个回答
LaTeXer
LaTeXer 2026-09-18
这家伙很懒,什么也没写!

我看看

LaTeXer
LaTeXer 2026-09-19
这家伙很懒,什么也没写!

已经修复了。

时珍
时珍 2026-09-15
愉悦一天!

点击追加悬赏,去充值,显示充值金额不正确

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览