渐近线中两个双曲线的交点?

渐近线中两个双曲线的交点?

我已经写了asymptote代码:

\begin{asy}
 import geometry;
 //import g2geo;
 unitsize(1cm);
 defaultpen(fontsize(11pt));

 pair A=(0.8,4); dot(Label("$A$",align=NW),A);
 pair B=(0,0); dot(Label("$B$",align=SW),B);
 pair C=(7,0); dot(Label("$C$",align=SE),C);
 draw(A--B--C--A);

 triangle t=triangle(A,B,C);
 draw(circle(A,B,C));
 point I=incenter(t); dot(Label("$I$",align=NW),I);
 point M=midpoint(t.BC); dot(Label("$M$",align=NW),M);

 circle b=incircle(t), c=excircle(t.BC);
 draw(b,red); draw(c,red);

 hyperbola hypB=hyperbola(M,b.C,b.r/2); draw(hypB,brown);
 hyperbola hypC=hyperbola(M,c.C,c.r/2); draw(hypC,orange);

 point[] temp=intersectionpoints(hypB,hypC);
 //dot(Label("$t_0$",align=SE),temp[0]);

 \end{asy}

当我绘制 2 条双曲线(如上所示)并使用函数找到它们的交点时intersectionpoints(hypB,hypC),它没有返回任何值。

请帮我修复此代码。

在此处输入图片描述

答案1

更新:错误geometry.asy已修复(原始代码可以运行)。请参阅https://github.com/vectorgraphics/asymptote/commit/2a237885ddc65eb8db7fc9a8d2fa51c17a5b25a1https://github.com/vectorgraphics/asymptote/commit/d63f1d90e26cfc27d496daee95858ed03b78692a 欢迎测试和反馈。

原始答案:

首先,似乎 中有一个错误geometry.asy。对于双曲线交点,例程是首先导出相应的四次方程,然后使用四次复数分解并提取实根。在您的示例中,方程没有退化,显然存在错误:例程不接受两个双曲线的零系数y^2

其次,即使双曲线有两个部分,铸造path也只提取其中一个部分。这就是为什么path hypB=hyperbola(M,b.C,b.r/2)给出的图像不完整。可以通过添加第二部分hyperbola(b.C,M,b.r/2)

请找到一种解决方法(geometry.asy 具体intersectionpoints应该得到改进)。

import geometry;
//import g2geo;
unitsize(1cm);
defaultpen(fontsize(11pt));

pair A=(0.8,4); dot(Label("$A$",align=NW),A);
pair B=(0,0); dot(Label("$B$",align=SW),B);
pair C=(7,0); dot(Label("$C$",align=SE),C);
draw(A--B--C--A);

triangle t=triangle(A,B,C);
draw(circle(A,B,C));
point I=incenter(t); dot(Label("$I$",align=NW),I);
point M=midpoint(t.BC); dot(Label("$M$",align=NW),M);

circle b=incircle(t), c=excircle(t.BC);
draw(b,red); draw(c,red);

path[] hypB=hyperbola(M,b.C,b.r/2)^^hyperbola(b.C,M,b.r/2);
draw(hypB,brown);
path[] hypC=hyperbola(M,c.C,c.r/2)^^hyperbola(c.C,M,c.r/2);
draw(hypC,orange);

pair[] tp=intersectionpoints(hypB,hypC);
for (int i=0;i<tp.length;++i)
{
    dot(Label("$T_"+string(i)+"$",align=SE),tp[i]);
}

结果

在此处输入图片描述

答案2

hyperbola如果用替换,它就可以正常工作path。请注意,我没有该g2geo模块。

\documentclass[border=3mm]{standalone}
\usepackage{asypictureB}
\begin{document}
\begin{asypicture}{name=hyperbolae}
 import geometry;
 //import g2geo;
 unitsize(1cm);
 defaultpen(fontsize(11pt));

 pair A=(0.8,4); dot(Label("$A$",align=NW),A);
 pair B=(0,0); dot(Label("$B$",align=SW),B);
 pair C=(7,0); dot(Label("$C$",align=SE),C);
 draw(A--B--C--A);

 triangle t=triangle(A,B,C);
 draw(circle(A,B,C));
 point I=incenter(t); dot(Label("$I$",align=NW),I);
 point M=midpoint(t.BC); dot(Label("$M$",align=NW),M);

 circle b=incircle(t), c=excircle(t.BC);
 draw(b,red); draw(c,red);

 path hypB=hyperbola(M,b.C,b.r/2); draw(hypB,brown);
 path hypC=hyperbola(M,c.C,c.r/2); draw(hypC,orange);

 pair[] isp=intersectionpoints(hypB,hypC);
 dot(Label("$t_0$",align=SE),isp[0]);
 dot(Label("$t_1$",align=SW),isp[1]);

\end{asypicture}
\end{document}

在此处输入图片描述

答案3

geometry.asy 中的这个错误已在 Asymptote 版本 2.57 中修复。

相关内容