Эллипсоидная функция R - обнаружение, подходит ли точка - скрипт R - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть 3D-функция эллипсоида:

ellipsoid <- function(center=c(0, 0, 0), radius=1, shape=diag(3),
  segments=51) {
    angles <- (0:segments)*2*pi/segments
    ecoord2 <- function(p) {
      c(cos(p[1])*sin(p[2]), sin(p[1])*sin(p[2]), cos(p[2])) }
    unit.sphere <- t(apply(expand.grid(angles, angles), 1, ecoord2))
    t(center + radius * t(unit.sphere %*% chol(shape))) 
  }

, которая создает эллипсоид с заданным центром и радиусом.Затем я могу нарисовать его, используя:

q <- quads3d(ellips[,1], ellips[,2], ellips[,3], front="lines",
  back="lines", alpha=.5, 
                  lit=FALSE, col=surface.col[1])

Но как я могу определить, находится ли точка (x, y, z) внутри этого эллипсоида?В частности, как я могу выяснить полуоси эллипсоида?

например,

fitsInEllipsoid <- function(ellipsoid, x, y, z) {
#returns true if (x,y,z) fits inside the ellipsoid
}

1 Ответ

7 голосов
/ 22 ноября 2011

Точка (x,y,z) находится внутри, если

(x-x0)^2/a^2+ (y-y0)^2/b^2 + (z-z0)^2/c^2 < 1,

, где a и b - экваториальные радиусы (вдоль осей x и y) и cэто полярный радиус (вдоль оси z), то есть квадратный корень из диагонали параметра shape.Центр эллипсоида обозначается (x0, y0, z0) (переменная center в вашей функции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...