找回密码
 快速注册
搜索
查看: 59|回复: 3

圆锥曲线反演

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-5-12 18:32 |阅读模式
Geogebra / Polar Command
geometry.asy中的tangents函数可以画切线
import geometry; size(7.5cm,0);
point A=(2.5,-1); dot(A);
ellipse C=ellipse(A,3,1); draw(C,linewidth(bp));
path Cp=shift(A)*xscale(2)*scale(3)*unitcircle;
point M=relpoint(Cp, 45/360); dot(M);
draw(tangents(C, M), 0.8*red);
addMargins(10mm,10mm);

改造为polar函数,画圆锥曲线外的点的极线
import geometry; size(7.5cm,0);
line polar(ellipse el, point M)
{
  point Mp = samecoordsys(M, el.F2) ?
    M : changecoordsys(el.F2.coordsys, M);
  circle c = circle(Mp, abs(el.F1 - Mp));
  circle cc = circle(el.F2, 2 * el.a);
  point[] inter = intersectionpoints(c, cc);
  line tl0 = line(inter[0], el.F2, false);
  line tl1 = line(inter[1], el.F2, false);
  return line(intersectionpoints(tl0, el)[0],intersectionpoints(tl1, el)[0]);
}
point A=(2.5,-1); dot(A);
ellipse C=ellipse(A,3,1); draw(C,linewidth(bp));
path Cp=shift(A)*xscale(2)*scale(3)*unitcircle;
point M=relpoint(Cp, 45/360); dot(M);
draw(polar(C, M), 0.8*red);
addMargins(10mm,10mm);

用polar和diameter相交得反演点
import geometry; size(7.5cm,0);
point inverse(ellipse el, point M)
{
  point Mp = samecoordsys(M, el.F2) ?
    M : changecoordsys(el.F2.coordsys, M);
  circle c = circle(Mp, abs(el.F1 - Mp));
  circle cc = circle(el.F2, 2 * el.a);
  point[] inter = intersectionpoints(c, cc);
  line tl0 = line(inter[0], el.F2, false);
  line tl1 = line(inter[1], el.F2, false);
  return intersectionpoint(line(Mp,el.C),line(intersectionpoints(tl0, el)[0],intersectionpoints(tl1, el)[0]));
}
point A=(2.5,-1); dot(A);
ellipse C=ellipse(A,3,1); draw(C,linewidth(bp));
path Cp=shift(A)*xscale(2)*scale(3)*unitcircle;
point M=relpoint(Cp, 45/360); dot(M);
dot(inverse(C, M), 0.8*red);
addMargins(10mm,10mm);

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-5-12 19:00
圆的反演像
Inversions in an Ellipse
Arxiv José L. Ramírez
import geometry; size(10cm,0);
point inv(ellipse el, point M)
{
  point Mp = samecoordsys(M, el.F2) ?
    M : changecoordsys(el.F2.coordsys, M);
  circle c = circle(Mp, abs(el.F1 - Mp));
  circle cc = circle(el.F2, 2 * el.a);
  point[] inter = intersectionpoints(c, cc);
  line tl0 = line(inter[0], el.F2, false);
  line tl1 = line(inter[1], el.F2, false);
  return intersectionpoint(line(Mp,el.C),line(intersectionpoints(tl0, el)[0],intersectionpoints(tl1, el)[0]));
}
point O=(0,0);
ellipse C=ellipse(O,3,1); draw(C,linewidth(bp));
point M=(4,1); dot(M);draw(O--M,dashed);dot(O,Fill(white));
point P=(2,3);
path c=circle(P,M);
draw(c);
guide invpath;
for(int i=0;i<20;++i){
  point M=relpoint(c,i/20);
  invpath=invpath..inv(C,M);
}
dot(inv(C,M),red);
draw(invpath..cycle,red);

471

主题

945

回帖

9837

积分

积分
9837

显示全部楼层

青青子衿 发表于 2023-5-15 15:59
hbghlyj 发表于 2023-5-12 19:00
圆的反演像
Inversions in an Ellipse
Arxiv José L. Ramírez

好神奇的"Pappus chain of ellipses",鞋匠刀的推广版

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-5-15 17:18
青青子衿 发表于 2023-5-15 08:59
好神奇的"Pappus chain of ellipses",鞋匠刀的推广版


Pappus chain的仿射

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:18

Powered by Discuz!

× 快速回复 返回顶部 返回列表