6

この投稿に従うことで、指定された形状行列 (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)

この楕円のメジャー/マイナー (メジャー/マイナー軸と楕円の交点のペア) 頂点を取得する方法は?

4

3 に答える 3

2

これが本当に質問に答えるかどうかはまだ非常に不明ですが、ここに私の試みがあります:

最初に、後で使用するために楕円の中心をベクトルとして定義します。

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 つのポイントになります。

視覚的な結果では、これは最後にはそれほど正確ではないように聞こえます。

上記のコードからプロット

于 2016-10-28T08:37:19.983 に答える