Нужна помощь с использованием par3dinterp и playwidget для поворота сюжета с помощью rgl в R

Я работаю над относительно новым документом - "Взаимодействие с пользователем в WebGL" (8 марта 2017 г.) по адресу https://cran.r-project.org/web/packages/rgl/vignettes/WebGL.html

Примерно на 2/3 пути вниз по странице находится следующий пример кода, который выполняет "сложную" анимацию вращения графика:

M <- r3dDefaults$userMatrix fn <- par3dinterp(time = (0:2)*0.75, userMatrix = list(M, rotate3d(M, pi/2, 1, 0, 0), rotate3d(M, pi/2, 0, 1, 0)) ) rglwidget() %>% playwidget(par3dinterpControl(fn, 0, 3, steps=15), step = 0.01, loop = TRUE, rate = 0.5)

Я хочу сделать что-то гораздо более простое - вращать график вокруг оси z с постоянной скоростью, но в моем noggin, по-видимому, отсутствует что-то фундаментальное в спецификации времени, и функция значений оценивается в.... Я могу заставить ее вращать часть обратный путь на 360 градусов, затем поверните назад, но не продолжайте движение... Пожалуйста, помогите.

Заранее спасибо Алекс

[Я пытаюсь перестановки на что-то вроде следующего...

M <- r3dDefaults$userMatrix fn <- par3dinterp(time = 0:3, userMatrix = list(M, rotate3d(M, pi/2, 0, 0, 1), rotate3d(M, pi, 0, 0, 1), M) ) rglwidget() %>% playwidget(par3dinterpControl(fn, 0, 2, steps=15), step = 0.01, loop = TRUE) ]

1 ответ

Для простого прядения используйте spin3d() скорее, чем par3dinterp(), (Вы должны быть в состоянии использовать последнее, но, как вы видели, трудно сделать это правильно; на самом деле, я думаю, что в интерполяции есть ошибка).

Например, вращаться со скоростью 5 об / мин (spin3d() по умолчанию), полный оборот занимает 12 секунд. Вы хотели бы что-то вроде этого:

fn <- spin3d()
rglwidget() %>%
playwidget(par3dinterpControl(fn, 0, 12, steps = 40),
           step = 0.01)

Выбор из 40 шагов является произвольным, но вы не хотите, чтобы это число было слишком маленьким, потому что вы получите искажения сцены, так как они интерполируются между этими шагами. С другой стороны, объем данных, которые он помещает на веб-страницу, пропорционален значению, поэтому вы не хотите, чтобы он был чрезмерно большим.

Другие вопросы по тегам