mikeo_410
  1. 2.地球
    1. 1.地球楕円体上の点
    2. 2.地球儀と楕円体の描画
    3. 3.3Dの直線と平面
    4. 4.卯酉線
    5. 5.楕円の標準形
    6. 6.5点で決まる楕円
    7. 7.曲率半径と平均曲率
    8. A1.地図、地球儀(Rスクリプト、データ)
    9. A2. 付録6.計算式集の公式

5点で決まる楕円

楕円の式は、

ただし、

のように、2次曲線の式で表されます。

この式の係数は6つですが、楕円の周上の5点の座標値から、楕円の式の係数を決定できます。

式に任意の定数を乗じても同じ楕円を描くので、同じ楕円を描く式は無数にあります。したがって、定数項 F は任意の値で良く、例えば、F=-1 として他の5つの係数を求めて良いということです。

に、5点の座標値を代入して5つの式を作成し連立方程式を解きます。

  1. EllipseCoeff <- function(x, y){
  2.   x <- x[1:5]; y <- y[1:5]
  3.   M <- matrix(c(x^2,x*y,y^2,x,y),5,5)
  4.   u <- solve(M,c(1,1,1,1,1))
  5.   list(A=u[1],B=u[2],C=u[3],D=u[4],E=u[5],F=-1)
  6. }

  1. plot(0,0,pch=20,xlim=c(-5,5),ylim=c(-3,3),
  2.   xlab="x",ylab="y")
  3. abline(v=c(-4,0,4,2),h=c(-2,0,2,sqrt(3)),
  4.   col=c("gray60","black","gray60","gray60"))
  5. abline(a=0,b=sqrt(3)/2,col="gray60")
  6. a <- 4; b <- 2 # 楕円の半径
  7. t <- seq(0,2*pi,length.out=361) # 媒介変数
  8. x <- a*cos(t); y <- b*sin(t) # 1°刻みの座標値
  9. lines(x,y) # 基本の楕円の描画
  10. # 媒介変数0,90,180,270°の4点と、60°の5点
  11. I <- c(0,90,180,270,60)+1
  12. points(x[I],y[I],pch=16,col="red")

上の図は、x軸半径 4、y軸半径 2 の楕円です。式では、

        

あるいは、64を乗じて、

        

などと表されます。

上のスクリプトでは、楕円は媒介変数 t を1° 刻みに採って、0°、90°、180°、270° の4点と、60°の点を合わせて5点に赤丸を描いています。

この5点の座標値から、楕円の式を求めると以下のようになります。

  1. r$> u <- EllipseCoeff(x[I],y[I])
  2. r$> str(u)
  3. List of 6
  4.  $ A: num 0.0625
  5.  $ B: num 0
  6.  $ C: num 0.25
  7.  $ D: num 7.24e-33
  8.  $ E: num 2.78e-17
  9.  $ F: num -1

        

なので、64を乗じれば、上述の、

        

となります。

この楕円を30°反時計回りに回転し、x軸方向に √3 、y軸方向に 2 平行移動します。

  1. plot(0,0,pch=20,xlim=c(-5,6),ylim=c(-3,5),xlab="x",ylab="y")
  2. abline(v=0,h=0)
  3. a <- 4; b <- 2 # 楕円の半径
  4. t <- seq(0,2*pi,length.out=361) # 媒介変数
  5. x <- a*cos(t); y <- b*sin(t) # 1°刻みの座標値
  6. lines(x,y) # 基本の楕円の描画
  7. # 媒介変数0,90,180,270°の4点と、60°の5点
  8. I <- c(0,90,180,270,60)+1
  9. points(x[I],y[I],pch=16,col="red")
  10. # 反時計回りに 30° 回転
  11. cs <- cos(pi/6); sn <- sin(pi/6)
  12. xy <- rbind(c(cs,-sn),c(sn,cs)) %*% rbind(x,y)
  13. lines(xy[1,],xy[2,],col="cyan") # 30° 回転した楕円の描画
  14. points(xy[1,I],xy[2,I],pch=16,col="green") # その5点
  15. # 平行移動
  16. x2 <- xy[1,]+sqrt(3); y2 <- xy[2,]+2
  17. lines(x2,y2,lwd=2) # 回転、平行移動した楕円の描画
  18. points(x2[I],y2[I],pch=16,col="blue") #  その5点

5点の座標値は、以下のような値です。

  1. r$> round(x2[I],3);round(y2[I],3)
  2. [1]  5.196  0.732 -1.732  2.732  2.598
  3. [1] 4.000 3.732 0.000 0.268 4.500

元の楕円の周上の点を(x, y)、回転、平行移動した楕円の周上の点を (x’, y’) とすると、

        

なので、

        

        

x

y

=>

x’

y’

4

0

3√3

4

0

2

√3-1

√3+2

-4

0

-√3

0

0

-2

√3+1

2-√3

2

√3

3√3/2

9/2

  1. r$> u <- EllipseCoeff(x2[I],y2[I])
  2.     str(u)
  3. List of 6
  4.  $ A: num 0.259
  5.  $ B: num -0.385
  6.  $ C: num 0.481
  7.  $ D: num -0.128
  8.  $ E: num -1.26
  9.  $ F: num -1

mxima で連立方程式を作って解くと以下のようになります。

5点を通る楕円は、

となります。あるいは、27を乗じた、

と表せます。


題目一覧へmikeo_410@hotmail.com(updated: 2022/09/08)