답변
우리의 parametric
식으로 시작할 수 ellipse
(다음 하나는 위키 피 디아에서이다), 우리는 5 개 매개 변수가 필요합니다 다른 표기법 중심 (xc, yc)
또는 (h,k)
을 축 길이는 a, b
이고 x 축과 장축 간의 각도는 phi
또는 tau
입니다.
xc <- 1 # center x_c or h
yc <- 2 # y_c or k
a <- 5 # major axis length
b <- 2 # minor axis length
phi <- pi/3 # angle of major axis with x axis phi or tau
t <- seq(0, 2*pi, 0.01)
x <- xc + a*cos(t)*cos(phi) - b*sin(t)*sin(phi)
y <- yc + a*cos(t)*cos(phi) + b*sin(t)*cos(phi)
plot(x,y,pch=19, col='blue')
지금 우리가
cartesian conic
식으로 시작하려는 경우, 그것은 2 단계 프로세스입니다.
가
polar
(parametric
) 형태의 우리는 먼저 아래도에서 5 개 방정식을 사용하여 5 개 파라미터를 획득하기 위해 다음 식을 사용하여 행cartesian
식 변환 (http://www.cs.cornell.edu/cv/OtherPdf/Ellipse.pdf 찍은 상세한 수학가 발견 될 수).위와 같이 얻은 매개 변수를 사용하여 타원을 그립니다.
단계 (1) 우리는 (우리가 A,B,C,D,E,F
을 알고) 다음 코드를 사용할 수있는 경우 :
M0 <- matrix(c(F,D/2,E/2, D/2, A, B/2, E/2, B/2, C), nrow=3, byrow=TRUE)
M <- matrix(c(A,B/2,B/2,C), nrow=2)
lambda <- eigen(M)$values
abs(lambda - A)
abs(lambda - C)
# assuming abs(lambda[1] - A) < abs(lambda[1] - C), if not, swap lambda[1] and lambda[2] in the following equations:
a <- sqrt(-det(M0)/(det(M)*lambda[1]))
b <- sqrt(-det(M0)/(det(M)*lambda[2]))
xc <- (B*E-C*D)/(4*A*C-B^2)
yc <- (B*D-2*A*E)/(4*A*C-B^2)
phi <- pi/2 - atan((A-C)/B)/2
을
t <- seq(0, 2*pi, 0.01)
x <- xc + a*cos(t)*cos(phi) - b*sin(t)*sin(phi)
y <- yc + a*cos(t)*cos(phi) + b*sin(t)*cos(phi)
plot(x,y,pch=19, col='blue')
다른 답변은 타원을 그리는 방법을 보여줍니다. 타원을 그 중심 및 주요 도끼 es. 그러나 그들은 일반적인 타원 방정식으로부터는 분명하지 않습니다. 그래서 여기에서, 나는 처음부터 시작할 것입니다.
(죄송합니다 : 수학 유도를 생략
, 당신은 다음 식에 중심을 위해 해결해야 할 수 없습니다 "u
을 생성" "v
생성"한다 원래 LaTeX가 없어져 다시 입력 할 필요가 없으므로 해결할 수 없습니다 ...
plot.ellipse <- function (a, b, c, d, e, f, n.points = 1000) {
## solve for centre
A <- matrix(c(a, c/2, c/2, b), 2L)
B <- c(-d/2, -e/2)
mu <- solve(A, B)
## generate points on circle
r <- sqrt(a * mu[1]^2 + b * mu[2]^2 + c * mu[1] * mu[2] - f)
theta <- seq(0, 2 * pi, length = n.points)
v <- rbind(r * cos(theta), r * sin(theta))
## transform for points on ellipse
z <- backsolve(chol(A), v) + mu
## plot points
plot(t(z), type = "l")
}
몇 가지 발언 :) 여기
이 작업을 수행 할 수있는 R의 함수 방정식은 타원 뭔가보다는 있는지 확인하기 위해 매개 변수 a, b, ..., f
조건이 있습니다
- 그렇지 않으면 (포물선이라고). 따라서 테스트 할 임의의 매개 변수 값을 전달하지 마십시오. 사실, 방정식에서 대략 요구 사항을 볼 수 있습니다. 예를 들어 행렬
A
은 양수 여야합니다. 따라서a > 0
및det(A) > 0
; 또한,r^2 > 0
. - 내가 제일 좋아하는 Cholesky 인수 분해를 사용했습니다. 그러나, 가장 아름다운 결과는 Eigen 분해로부터옵니다. 이 부분에 대해서는 더 이상 추구하지 않을 것입니다. 당신이 그것에 흥미가 있다면, 나의 또 다른 대답 Obtain vertices of the ellipse on an ellipse covariance plot (created by
car::ellipse
)을 읽으십시오. 콜레 스키 (Cholesky) 분해 및 고유 분해 (Eigen decomposition)의 기하학을 묘사하는 아름다운 그림이 있습니다.
큰 답변! 질문 : 어떻게 원래 질문에 'f'매개 변수가 있었지만 솔루션은 그렇지 않은 것입니까? 떨어 졌습니까? –
제 잘못입니다. 저는 첫 번째 행렬 방정식을 보았습니다. –
그렇다면 확실한 정의에 대한 점검을 추가하면 사용자가 입력 한 임의의 매개 변수가 타원이면 괜찮은지 확인할 수 있습니다. –
- 1. C로 타원을 그리는 방법?
- 2. 타원을 올바르게 그리는 방법 [KineticJs]
- 3. R에 초라한 다이어그램을 그리는 방법?
- 4. R에 가계도를 그리는 방법 R
- 5. R에 막대 그래프를 그리는 방법?
- 6. Irrlicht의 FlyCircleAnimator와 일치하도록 3D에서 타원을 그리는 방법
- 7. 일부 포인터 가장자리로 타원을 그리는 방법
- 8. 전경 개체 주위에 타원을 그리는 방법
- 9. WPF에서 StreamGeometry에 전체 타원을 그리는 방법은 무엇입니까?
- 10. R에 회전 된 축을 그리는 방법?
- 11. R에 2 차 회귀를 그리는 방법?
- 12. 막대 그래프 R에 지수 함수를 그리는 방법?
- 13. 주어진 좌표에서 다각형을 그리는 방법
- 14. 특정 색상으로 채워진 타원을 그리는 방법은 무엇입니까?
- 15. 타원을 그리는 경우 색상 속성을 변경 하시겠습니까?
- 16. 얼굴 주위에 타원을 그리는 Java 코드
- 17. 그리드에서 타원을 그리는 것이 왜 차단됩니까?
- 18. 가장 최근의 마우스 위치로 단일 타원을 다시 그리는 방법
- 19. 매트릭스 형태로 주어진 MATLAB에서 타원을 그려야합니다.
- 20. div의 주어진 픽셀에 세로선을 그리는 방법
- 21. 지도에 선을 그리는 방법 주어진 좌표를 봅니까?
- 22. R에
- 23. 점을 계산하여 타원을 그리는 곡선 또는 스플라인을 만듭니다.
- 24. R에 누적 열 그래프를 그리는 방법은 무엇입니까?
- 25. R에 학습 곡선을 그리는 방법은 무엇입니까?
- 26. R에 정규 격자를 그리는 방법은 무엇입니까?
- 27. 미술 (ReactNative)으로 일반 텍스트를 그리는 방법?
- 28. wpf에서 타원을 이동하는 방법
- 29. 캔버스에서 타원을 이동하는 방법
- 30. 타원을 움직이는 방법?
타원을 그릴 때 R에서 사용할 수있는 기능은 무엇입니까? 나는 그들의 주장에 관심이있다. – MBo
R의 패키지 ** ellipse **가 도움이 될 수 있습니다. 이 링크를 통해 가보십시오 - https://cran.r-project.org/web/packages/ellipse/ellipse.pdf –