10 请问如何画四省联考T12的图

发布于 2023-03-29 13:51:09

请问如何用tikz-3dplot画出这个图片
2023年四省联考.png
目前就只能画出以下图片
image.png

以下MWE
MWE.zip

\documentclass[tikz,margin=1cm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows.meta,calc,intersections}
\begin{document}
    \tdplotsetmaincoords{60}{120}
    \begin{tikzpicture}[line cap =round,line join =round,tdplot_main_coords]
            \def\r{2}
            \draw[dashed] (0,0,0)--({\r},0,0) (0,0,0)--(0,{\r},0) (0,0,0)--(0,0,{\r});
            \tdplotdrawarc{(0,0,0)}{\r}{60}{90}{}{};
            \tdplotdrawarc[dashed]{(0,0,0)}{\r}{0}{60}{}{};
            \tdplotsetthetaplanecoords{0};
            \tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{\r}{0}{90}{}{};
            \tdplotsetthetaplanecoords{90};
            \tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{\r}{0}{90}{}{};
            \tdplotsetthetaplanecoords{0};
            \tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{\r}{0}{90}{}{};
            \tdplotsetrotatedthetaplanecoords{30};
            \tdplotdrawarc[color=teal,tdplot_rotated_coords]{(0,0,0)}{\r}{0}{90}{}{};
    \end{tikzpicture}
\end{document}

查看更多

关注者
0
被浏览
1.7k
2 个回答
747
747 2023-03-29
这家伙很懒,什么也没写!
\documentclass[preview]{standalone}

\usepackage{tikz}
\usetikzlibrary{3d}

\usepackage{fontsetup}

\begin{document}
\begin{tikzpicture}
    \begin{scope}[dashed]
        \draw (0,0,0) -- (3,0,0);
        \draw (0,0,0) -- (0,3,0);
        \draw (0,0,0) -- (0,0,3);

        \begin{scope}[canvas is xy plane at z=0]
            \draw (0,3) arc [start angle=90,end angle=0,radius=3];
        \end{scope}

        \begin{scope}[canvas is yz plane at x=0]
            \draw (0,3) arc [start angle=90,end angle=0,radius=3];
        \end{scope}

        \begin{scope}[canvas is xz plane at y=0]
            \draw (0,3) arc [start angle=90,end angle=0,radius=3];
        \end{scope}

        \begin{scope}[plane x={(0,0,1)}, plane y={({cos(30)}, {sin(30)}, 0)}, canvas is plane]
            \draw[solid] (0,3) arc [start angle=90,end angle={acos(sqrt(3/7))},radius=3];
            \draw (3,0) arc [start angle=0,end angle={acos(sqrt(3/7))},radius=3];
        \end{scope}

        \begin{scope}[plane x={({cos(45)},0,{sin(45)})}, plane y={(0, 1, 0)}, canvas is plane]
            \draw (0,3) arc [start angle=90,end angle=0,radius=3];
        \end{scope}
    \end{scope}

    \coordinate (c) at ({3*sqrt(3/7)},{3*sqrt(1/7)},{3*sqrt(3/7)}) ;

    \draw (0,0,0) -- (c) node[above left] {\(C\)};

\end{tikzpicture}
\end{document}
Sagittarius Rover
这家伙很懒,什么也没写!

其实我感觉语法没有比tikz-3d简单,反而求两个大圆交点(在luadraw-v2.6)需要花点心思...

% https://github.com/pfradin/luadraw/discussions/223#discussioncomment-16064759
\documentclass{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\usepackage{fourier}
\begin{document}
    \begin{luadraw}{name=spherical_geometry}
    local g = graph3d:new{window3d={-5, 5, -5, 5, -5, 5},window={-3,4.25,-3,4}, viewdir={30, 65}, size={12, 12}}
    require 'luadraw_spherical'

    local O,R = Origin,4
    g:Define_sphere({radius=R, show=false, opacity=1})
    local Pz, Px, Py = sM(0,0), sM(0,90), sM(90,90)
    local theta = 55
    local A, B = sM(theta, 90), Py
    local D = sM(90,65)
    local M = 0.7 * D
    local N = pxy(M)

    -- calculus of C and K
    -- The function plane(A,B,C) returns the plane passing through the three 3d points A, B, and C (if they are not aligned,otherwise the result is nil).
    local d = interPP( plane(O,Px,D), plane(O,A,Pz) )
    -- the intersection of two planes is line OC
    -- d[2] is a direction vector of the line d
    -- where d is the line in form {A,u}, the normalized direction vector
    local C = R*pt3d.normalize(d[2]) 
    local K = pxy(C) -- projection of C on the plane Oxy

    Hiddenlines = true;Hiddenlinestyle = "dashed"
    g:Linestyle("dashed")

    -- g:DSarc({Pz, Px}, 1)
    -- g:DSarc({Pz, Py}, 1)
    -- g:DSarc({Px, Py}, 1)
    -- g:DSarc({Px, D}, 1)
    -- g:DSarc({Pz, A}, 1)
    for _, arc in ipairs({{Pz, Px}, {Pz, Py}, {Px, Py}, {Px, D}, {Pz, A}}) do
        g:DSarc(arc, 1)
    end

    -- g:DSseg({O, Pz})    
    -- g:DSseg({O, Px})
    -- g:DSseg({O, Py})
    -- g:DSseg({N, K})
    -- g:DSseg({M, N})

    g:DSpolyline({{Px,O,Pz},{M,N,K},{O,B}})

    g:Linestyle("solid"); Hiddenlinestyle = "solid"
    g:DSseg({O, A})    
    g:DSseg({O, D})
    g:DSseg({O, C})
    g:DSseg({C, K})
    g:DSseg({C, M})
    g:DSarc({A, B}, 1)

    g:DSdots({O,A,D,M,N},{mark_options="teal"}) 
    g:DSstars({Pz, Px, Py}, {color="magenta",fill="magenta", scale=0.75}) 
    g:Dspherical()

    g:Dlabel3d(
        "$O$", O, {pos="W"}, 
        "$A$", A, {pos="S"}, 
        "$B$", B, {pos="E"}, 
        "$C$", C, {pos="NW"}, 
        "$D$", D, {pos="NE"}, 
        "$K$", K, {pos="W"}, 
        "$M$", M, {pos="N"}, 
        "$N$", N, {pos="NE"}
    )
    g:Show()
    \end{luadraw}
\end{document}

image.png

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览