この投稿に従うことで、指定された形状行列 (A) で楕円を描くことができます。
library(car)
A <- matrix(c(20.43, -8.59,-8.59, 24.03), nrow = 2)
ellipse(c(-0.05, 0.09), shape=A, radius=1.44, col="red", lty=2, asp = 1)
この楕円のメジャー/マイナー (メジャー/マイナー軸と楕円の交点のペア) 頂点を取得する方法は?
これが本当に質問に答えるかどうかはまだ非常に不明ですが、ここに私の試みがあります:
最初に、後で使用するために楕円の中心をベクトルとして定義します。
center<-c(x=-0.05, y=0.09)
楕円を描き、十分な値を持つ「点」の行列を取得して、現実の点に十分近づけます。
tmp<-ellipse(c(-0.05, 0.09), shape=A, radius=1.44, segments=1e3, col="red", lty=2,add=FALSE)
それを使用して data.table を作成し、各ポイントの中心への距離を計算します (point_x - center_x)² + (point_y - center_y)²:
dt <- data.table(tmp)
dt[,dist:={dx=x-center[1];dy=y-center[2];dx*dx+dy*dy}]
頂点を距離順に並べる:
setorder(dt,dist)
最小ポイントと最大ポイントを取得します。
> tail(dt,2)
x y dist
1: 4.990415 -6.138039 64.29517
2: -5.110415 6.318039 64.29517
> head(dt,2)
x y dist
1: 4.045722 3.41267 27.89709
2: -4.165722 -3.23267 27.89709
セグメントを追加しすぎないでください。そうしないと、最初の 2 つの値が反対ではなく、互いに非常に近い 2 つのポイントになります。
視覚的な結果では、これは最後にはそれほど正確ではないように聞こえます。