请问如何用tikz-3dplot画出这个图片
目前就只能画出以下图片
以下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}
\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}其实我感觉语法没有比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}
谢谢大佬
(补图doge...srds好像并没画完) 好像这里的
C点是用一些妙妙小数学手动计算的