单个第三个图片怎么画出来?
Here below is the proposal:
\documentclass{standalone}
\usepackage[svgnames]{xcolor}
\usepackage[3d]{luadraw}
\begin{document}
\begin{luadraw}{name=round-cobuid}
local ld = luadraw
local pt3d = ld.pt3d
local M, vecI, vecJ, vecK = pt3d.M, pt3d.vecI, pt3d.vecJ, pt3d.vecK
local sqrt, sin, cos = math.sqrt, math.sin, math.cos
local g = ld.graph3d:new{
window3d={-5,5,-5,5,-5,5},
window={-4,3,-2,4},viewdir={35,80}
}
-- length, width, height
local L, W, H = 5.0, 2.4, 3.0
local t = 0.5
local scene = {}
local function add_quarter_cylinder(center, r1, r2, axis, n)
local poly = ld.cylinder(
center, axis, sqrt(pt3d.dot(r1, r1)), 4*n
)
poly = ld.cutpoly(poly, {center, r1}, true)
poly = ld.cutpoly(poly, {center, r2}, true)
local arc1, arc2 = {}, {}
for k=0,n do
local u = k*math.pi/2/n
local p = center + cos(u)*r1 + sin(u)*r2
table.insert(arc1, p)
table.insert(arc2, p+axis)
end
table.insert(scene, g:addPoly(poly, {color="white"}))
table.insert(scene, g:addPolyline({
arc1, arc2,
{arc1[1], arc2[1]},
{arc1[#arc1], arc2[#arc2]}
}, {hidden=true, hiddenstyle="dashed"}))
end
local function add_octant_sphere(center, r1, r2, r3, n)
local poly = ld.sphere(center, sqrt(pt3d.dot(r1, r1)), 4*n, 2*n)
poly = ld.cutpoly(poly, {center, r1}, true)
poly = ld.cutpoly(poly, {center, r2}, true)
poly = ld.cutpoly(poly, {center, r3}, true)
local function arc(a, b)
local points = {}
for k=0,n do
local u = k*math.pi/2/n
table.insert(points, center + cos(u)*a + sin(u)*b)
end
return points
end
table.insert(scene, g:addPoly(poly, {color="white", contrast=0}))
table.insert(scene, g:addPolyline({
arc(r1, r2), arc(r1, r3), arc(r2, r3)
}, {hidden=true, hiddenstyle="dashed"}))
end
local boxes = {
ld.parallelep(M(0,0,0), L*vecI, W*vecJ, H*vecK),
ld.parallelep(M(0,0,H), L*vecI, W*vecJ, t*vecK),
ld.parallelep(M(0,W,0), L*vecI, t*vecJ, H*vecK),
ld.parallelep(M(L,0,0), t*vecI, W*vecJ, H*vecK)
}
for _,poly in ipairs(boxes) do
table.insert(scene, g:addPoly(poly, {color="white",edge=true,hidden=true,hiddenstyle="dashed"}))
end
add_quarter_cylinder(M(0,W,H), t*vecJ, t*vecK, L*vecI, 18)
add_quarter_cylinder(M(L,0,H), t*vecI, t*vecK, W*vecJ, 18)
add_quarter_cylinder(M(L,W,0), t*vecI, t*vecJ, H*vecK, 18)
add_quarter_cylinder(M(0,W,0), t*vecJ, -t*vecK, L*vecI, 18)
add_quarter_cylinder(M(L,0,0), t*vecI, -t*vecK, W*vecJ, 18)
add_octant_sphere(M(L,W,H), t*vecI, t*vecJ, t*vecK, 12)
add_octant_sphere(M(L,W,0), t*vecI, t*vecJ, -t*vecK, 12)
g:Dscene3d(table.unpack(scene))
g:Show()
\end{luadraw}
\end{document}





















问 请问这种图形怎么用Tikz画出来