\文档类〔a4纸张〕{文章} \使用包{tkz-euclide} \使用包[nomessages]{fp} \新命令{\ra}{39} \新命令{\thick}{6} \新命令{\fa}{3} \新命令{\fb}{3} \新命令{\bias}{1} %忽略这一点,这只是复制品 \FPeval{y}{2*\ra/2.618} \FPeval{\f}{(2*\ra)-(y)} \FPeval{\rasmall}{\ra-\thick} \FPeval{\faa}{\f-\fa+\bias} \FPeval{\fbb}{\fb-\bias} \开始{文档} \此页面样式{空} \开始{tikzpicture}[scale=0.2] \tkzDefPoint(\fa-\bias,-\fb+\bias){A}%圆心1 \tkzDefPoint(\f,0){B}%圆心2 \tkzInterCC[R](A,\rasmall)(B,\ra)\tkzGetPoints{M1}{N1} \开始{scope} \tkzClipCircle(A,M1) %\tkzFillCircle[颜色=绿色!50,不透明度=.5](B,M1) \结束{scope} \tkzDefShiftPoint[M1](192:6.4){BB} \tkzDrawCircle[R](A,\rasmall)%画圆1,以A为中心,半径为1 \tkzDrawCircle[R](B,\ra)%以A为中心绘制半径为1的圆1 \tkz绘图点[颜色=橙色,填充=橙色](M1,N1)%绘图点 \tkzDrawCircle[颜色=橙色,R](BB,4)% \结束{tikzpicture} \结束{文档}
-
猜测不是构造,应该在编码之前完成。// 你会怎么构造这样的东西? – MS-SPO公司 5月4日15:50 -
这就是问题所在。 我认为有一条线(圆?),所有可能的圆都接触到两个较大的圆,但我不知道如何计算这条线。 – 蒂埃里·布朗 5月4日16:06 -
这是数学论坛的一个问题,不是吗? – 安德烈·C 5月4日16:35 -
如果已知圆的半径,构造就很简单:找到与圆1具有相同中心但半径r1-r3和与右侧圆2具有相同中心且半径r2+r3为第三个圆的中心的圆的交点 – LdBeth公司 5月4日16:37 -
您的tkz-euclide版本已经过时。 \tkz画圆[R] 不再有效。 首先用定义圆 \tkzDefCircle[R]{中心,R} 和 \tkzGetPoint{pt} 获取圆上的一个点,然后绘制 \tkzDrawCircle{中心,pt} . – 阿兰·马提斯 5月4日16:48
5个答案
\文档类[a4paper]{article} \使用包{tkz-euclide} \使用包[nomessages]{fp} \新命令{\ra}{39} \新命令{\thick}{6} \新命令{\fa}{3} \新命令{\fb}{3} \新命令{\bias}{1} %忽略这一点,这只是复制品 \FPeval{y}{2*\ra/2.618} \FPeval{\f}{(2*\ra)-(y)} \FPeval{\rasmall}{\ra-\thick} \FPeval{\faa}{\f-\fa+\bias} \FPeval{\fbb}{\fb-\bias} \开始{文档} \此页面样式{空} \开始{tikzpicture}[scale=0.2] \tkzDefPoint(\fa-\bias,-\fb+\bias){A}%圆心1 \tkzDefPoint(\f,0){B}%圆心2 \tkzInterCC[R](A,\rasmall)(B,\ra)\tkzGetPoints{M1}{N1} \开始{scope} \tkzClipCircle(A,M1) \结束{范围} \tkzDefShiftPoint[M1](192:6.4){BB} \tkzDefCircle[R](A,\rasmall)\tkzGetPoint{A}%以A为中心绘制半径为1的圆1 \tkzDefCircle[R](B,\ra)\tkzGetPoint{B}%绘制以A为中心、半径为1的圆1 \tkz绘图点[颜色=橙色,填充=橙色](M1,N1)%绘图点 \tkz绘制圆[](A,A B,B) \FPeval{\raa}{\rasmall-4} \FPeval{\rbb}{\ra+4} \tkzInterCC[R](A,\raa)(B,\rbb)\tkzGetPoints{P1}{Q1} \tkzDefCircle[R](P1,4)\tkzGetPoint{c}% \tkzDrawCircle[橙色](P1,c) \tkzLabelPoints(P1、Q1) \结束{tikzpicture} \结束{文档}
\文档类[a4paper]{article} \使用包{tkz-euclide} \开始{文档} \开始{tikzpicture} \定义\ra{4} \定义\rb{6} \定义\r{.5} \tkz定义点{0/0/A,5/2/B} \tkzDefCircle[R](A,\ra)\tkzGetPoint{A} \tkzDefCircle[R](B,\rb)\tkzGetPoint{B} \tkzInterCC(A,A)(B,B)\tkzGetPoints{E}{F} \edef\raa{\fpeval{\ra-\r}} \edef\rbb{\fpeval{\rb+\r}} \tkzInterCC[R](A,\raa)(B,\rbb)\tkzGetPoints{P}{Q} \tkzDefCircle[R](P,\R)\tkzGetPoint{c} \tkz绘图圆圈[青色](A,A B,B) \tkz绘图圆圈[紫色](A,P B,P) \tkzDrawCircle[橙色](P,c) \tkz牵引点[颜色=橙色,填充=橙色](E,F) \结束{tikzpicture} \结束{文档}
\文档类[a4paper]{article} \使用包{tkz-euclide} \开始{文档} \开始{tikzpicture} \定义\ra{4} \定义\rb{6} \定义\r{.5} \tkz定义点{0/0/A,5/2/B} \tkzInterCC[R](A,\ra)(B,\rb)\tkzGetPoints{E}{F} \edef\raa{\fpeval{\ra-\r}} \edef\rbb{\fpeval{\rb+\r}} \tkzInterCC[R](A,\raa)(B,\rbb)\tkzGetPoints{P}{Q} \tkzDefCircle[R](P,\R)\tkzGetPoint{c} \tkz绘图圆圈[青色](A、E、B、E) \tkz绘图圆圈[紫色](A,P B,P) \tkzDrawCircle[橙色](P,c) \tkz牵引点[颜色=橙色,填充=橙色](E,F) \结束{tikzpicture} \结束{文档}
\文档类{独立} \使用包[mini]{tkz-euclide} \使用包{tkz-elements} \开始{文档} \开始{tkzelements} z.A=点:新(0,0) z.B=点:新(5,2) ra=4 rb=6 r=.5 C.A=圆:半径(z.A,ra) C.B=圆:半径(z.B,rb) z.E=交叉口(C.A、C.B) C.AA=圆:半径(z.A,ra-r) C.BB=圆:半径(z.B,rb+r) z.P=交叉点(C.AA、C.BB) C.P=圆:半径(z.P,r) z.X=C.P.通过 \结束{tkzelements} \开始{tikzpicture} \tkz获取节点 \tkzDrawCircles[青色](A、E、B、E) \tkz绘图圆圈[紫色](A,P B,P) \tkzDrawCircle[橙色](P,X) \tkzDrawPoints[颜色=橙色,填充=橙色](E) \结束{tikzpicture} \结束{文档}
-
1 -
这些答案给我留下了深刻的印象。 不幸且非常尴尬的是,没有人在我的ubuntu(22.04)系统上工作,既没有lualatex也没有pdflatex。 此处出现错误: pastebin.com/Qc4L2bV5 – 蒂埃里·布朗 5月5日10:08 -
1 -
@ThierryBlank我在某个地方看到了与Ubuntu的TeX安装有关的问题。 问一个与乌布图有关的问题可能会很有趣。 你的tkz-euclide是什么版本的? 我想可以在CTAN上获得最新版本,并将其安装在个人texmf中。 – 阿兰·马提斯 5月5日16:11 -
@AlainMatthes我使用了texlive-full的默认ubuntu安装以及其他一些包。 tkz-euclide为4.03。 我无法找到强制ubuntu升级的方法。 tkz元素没有安装,我手动将sty文件添加到tex文件所在的目录中。 我还在那里添加了tkz-elements文件夹(latex-dir的内容),现在我得到了latex错误:找不到文件“tkz-draw-eu-points.tex”。 – 蒂埃里·布朗 5月6日6:32
开始(1); d1=4厘米; d2=5cm; d3=1cm; 绘制缩放的圆圈d1移位(10,50); 绘制缩放的圆圈d2; 路径c[]; c1=移动(10,50)的满圈缩放(d1-d3); c2=缩放的全圆(d2+d3); 用0.8白色绘制c1; 用0.8白色绘制c2; 用4白色绘制缩放的全圆d3移位(c1交点c2);; endfig;
\documentclass[border=10pt,multi=drawing]{独立} \使用包{l3draw} \Expl语法打开 \新文档命令{\TwoAndOneCircle}{O{1}m m m O{1}m}{ \绘图开始(_B): \draw_path_circle:nn{#2}{#3} \draw_path_use_clear:n{draw} \draw_path_circle:nn{#4}{#5} \draw_path_use_clear:n{draw} \绘图路径圆:nn{ \int_case:nn{#1}{ {1} { \绘图点相交圆:nnnnn {#2} { #3 + #7 } {#4} { #5 + #7 } {#6} } {2} { \绘图点相交圆:nnnnn {#2} { #3 + #7 } {#4} { #5 - #7 } {#6} } {3} { \绘图点相交圆:nnnnn {#2} { #3 - #7 } {#4} { #5 + #7 } {#6} } {4} { \绘图点相交圆:nnnnn {#2} { #3 - #7 } {#4} { #5 - #7 } {#6} } } } {#7} \draw_path_use_clear:n{draw} \绘图结束(_E): \ExplSyntax关闭 } \新建文档环境{drawing}{}{}}{} \开始{文档} \ExplSyntax打开 \int_step_inline:nn{2}{ \int_step_inline:nn{4}{ \开始绘制 \两个和一个圆圈[#1]{1cm,4cm}{7cm}{0cm,0cm}{5cm}[#1]}{1cm} \结束{绘图} } } \ExplSyntax关闭 \结束{文档}
1:第一个外圆,第二个外圆(默认) 2:第一圈在外,第二圈在内 3:第一个圆在里面,第二个圆在外面 4:第一圈在里面,第二圈在里面
\documentclass[border=10pt]{独立} \使用包{tikz} \newif\ifTwoandonecircleOne内部 \newif\ifTwoandonecircleCircleTwo内部 \提克兹特{ 图片/两个和一个圆/.style={ 代码={ \tikzset{两个和一个圆/.cd,#1} \坐标(一个圆位于)位于(\pgfkeysvalueof{/tikz/two和一个圆/一个圆在}); \坐标(圆圈2 at)位于(\pgfkeys值{/tikz/two和一个圆圈/圆圈2 at}); \画[pic动作,两个和一个圆/一个圆] (在以下位置圈出一个) 圆[radius=\pgfkeysvalueof{/tikz/两个和一个圆/圆一个半径}]; \绘制[图片动作,两个和一个圆圈/两个圆圈] (在以下位置圈出两个) 圆[radius=\pgfkeysvalueof{/tikz/两个和一个圆/圆两个半径}]; \圆形交叉点{ \pgfpointanchor{在}{center}圈一个 }{ \pgfpointanchor{在}{center}圈两个 }{ \{/tikz/两个和一个圆/圆一个半径}的pgfkeys值 \如果两个圆圈内有一个圆圈 -\pgfkeys值为{/tikz/两个和一个圆/圆三个半径} \其他 +\pgfkeys值为{/tikz/两个和一个圆/圆三个半径} \fi(菲涅耳) }{ \{/tikz/两个和一个圆/圆两个半径}的pgfkeys值 \ifTwo和necircleCircleTwo在里面 -\pgfkeys{/tikz/二和一圆/圆三半径}的值 \其他 +\pgfkeys值为{/tikz/两个和一个圆/圆三个半径} \fi(菲涅耳) }{ \{/tikz/两个和一个圆/交点}的pgfkeys值 } \pgfgetlastxy{\TwoandonecircleCircleThreeX}{\twoandonecirclecircleThrieY} \画[pic动作,两个和一个圆圈/三个圆圈] (\TwoandonecircleCircleThreeX,\Twoanondonecircle CirclethreeY) 圆[radius=\pgfkeysvalueof{/tikz/两个和一个圆/圆三个半径}]; } }, 两个和一个圆/一个圆位于/。initial={0,0}, 两个和一个圆/圆一个半径/.initial={1cm}, 两个和一个圆/一个圆/.style={}, 两个和一个圆/两个圆位于/.initial={1,0}, 两个和一个圆/圆两个半径/.initial={1cm}, 二和一个圆/圆二/。样式={}, 两个和一个圆/圆三个半径/.initial={0.25cm}, 二和一个圆/圆三/。样式={}, 二加一圆/内圆一/。is if=TwoandonecircleCircleOneInside, 两个和一个圆/内圈一=假, 二加一圆/内圆二/。is if=TwoandonecircleCircleTwoInside, 二和一圆/内圆二=假, 两个和一个圆/交点/.initial={1}, } \开始{文档} \开始{tikzpicture} \图片{ 两个和一个圆={ 圈出三个/.style={red}, 交点=2, 内圆一 } }; \pic[厚度](0,-2){ 两个和一个圆={ 圈出一个/.style={蓝色,虚线}, 圆三/.style={洋红色}, 圆一半径=0.75cm, 在={1,-0.5}处圈出两个, 圆三半径=0.5cm, 内圆二 } }; \结束{tikzpicture} \结束{文档}
\文档类[a4paper]{article} \使用包{tikz} \usetikzlibrary{交叉} \开始{文档} \开始{tikzpicture} \定义\ra{4} \定义\rb{6} \定义\r{.5} \坐标(A)位于(0,0); \坐标(B)位于(5,2); \绘制[name path=cercle A,cyan](A)圆[radius=\ra]; \绘制[name path=cercle B,cyan](B)圆[radius=\rb]; \路径[名称交集={of=圆环A和圆环B,by={E,F}}]; \pgfmathsetmacro\raa{\ra-\r} \pgfmathsetmacro\rbb{\rb+\r} %按照@Qrrbrbirlbel的建议,用“overlay”替换下面的“draw=purple”参数,以隐藏紫色圆圈,并使图像边界框不超过需要的大小。 \path[name path=cercle A',draw=purple](A)circle[radius=\raa]; \路径[name path=cercle B',draw=purple](B)圆[radius=\rbb]; \路径[名称交集={of=cercle A'和cercle B',by={P,Q}}]; \绘制[橙色](P)圆[半径=\r]; \结束{tikzpicture} \结束{文档}
-
1 -
-
1 -
将所有8个圆显示给2个给定的圆(\touchingCircleShow) 获取这8个特定圆的中心点(总是成对的P和Q) 获取相邻圆与两个圆之一(PM、PN、QM、QN)的接触点坐标
\文档类{独立} \使用包{tikz} \使用包{tkz-euclide} \usetikzlibrary{交叉} \使用包{xstring} \使用包{ifthen} \newcommand\touchingCircleShow[6]{% \{n,W,S,E}中的每个{ \触摸圆圈坐标{\n}{#2}{#3}{#4}{#5}{#6} \绘制[color=red](P)圆[radius=#6]节点[center](){P-\n}; \绘制[color=red](Q)圆[radius=#6]节点[center](){Q-\n}; } } \新命令\ touchingCircleCoord[6]{% \如果其他{\等于{#1}{N}}{ \pgfmathsetmacro\raa{3+6} \pgfmathsetmacro\rbb{5+6} }{} \如果其他{\等于{#1}{E}}{ \pgfmathsetmacro\raa{3+6} \pgfmathsetmacro\rbb{5-6} }{} \如果其他{\等于{#1}{W}}{ \pgfmathsetmacro\raa{3-6} \pgfmathsetmacro\rbb{5+6} }{} \如果其他{\等于{#1}{S}}{ \pgfmathsetmacro\raa{3-6} \pgfmathsetmacro\rbb{5-6} }{} % %\tkzInterCC[R](#2,\raa)(#4,\rbb)\tkzGetPoints{P}{Q} %\tkzInterCC[](#2,#3)(P,#6)\tkzGetPoint{PM} %\tkzInterCC[](#4,#5)(P,#6)\tkzGetPoint{PN} %\tkzInterCC[](#2,#3)(Q,#6)\tkzGetPoint{QM} %\tkzInterCC[](#4,#5)(Q,#6)\tkzGetPoint{QN} \路径[name path=ciA,](#2)圆[radius=\raa]; \路径[名称路径=ciB,](#4)圆[半径=\rbb]; \路径[名称交集={of=ciA和ciB,by={P,Q}}]; % \路径[名称路径=ciC](#2)圆[半径=#3]; \路径[name path=ciD](#4)圆[radius=#5]; \路径[名称路径=ciSm1](P)圆[半径=#6]; \路径[name path=ciSm2](Q)圆[radius=#6]; % \路径[名称交集={of=ciC和ciSm1,by={PM}}]; \路径[名称交集={of=ciD和ciSm1,by={PN}}]; \路径[名称交集={of=ciC和ciSm2,by={QM}}]; \路径[名称交集={of=ciD和ciSm2,by={QN}}]; } \定义\ra{75} \定义{65} \定义\r{12} \开始{文档} \开始{tikzpicture}[scale=0.2] \坐标(A)位于(0,0); \坐标(D)位于(20,30); \绘制[name path=cA,cyan](A)圆[radius=\ra]; \绘制[名称路径=cD,青色](D)圆[半径=\rd]; \触摸圆圈显示{}{A}{\ra}{D}{\rd}{\r} \结束{tikzpicture} \开始{tikzpicture}[scale=0.2] \坐标(A)位于(0,0); \坐标(D)位于(20,30); \绘制[name path=cA,cyan](A)圆[radius=\ra]; \绘制[name path=cD,cyan](D)圆[radius=\rd]; %获取接触圆的坐标 %#1 NWST方向(北、东、西、南) %#2#3:第一个圆心、半径 %#4#5:第二个圆的中心、半径 %#6半径邻接圆 % %返回点P和Q、相邻圆心、PM/PN和QM/QN接触点 % \触摸圆坐标{S}{A}{\ra}{D}{\rd}{\r} %经典邻接圆(绿色和青色) \绘制[绿色](P)圆[半径=\r]; \绘制[黄色](Q)圆[半径=\r]; % \触摸圆坐标{W}{A}{\ra}{D}{\rd}{\r} %使用圆弧的接触点 \tkzDrawArc[R带节点,颜色=青色](P,\R)(PN,PM); \tkzDrawArc[R带节点,颜色=青色](Q,\R)(QM,QN); \结束{tikzpicture} \结束{文档}