Перемещение указателя на объект (MATLAB)

У меня есть объект на трехмерной оси с известными координатами x, y, z. Я хотел бы переместить указатель на объект. Я знаю, что есть недокументированная функция moveptr, но, к сожалению, она не поддерживает трехмерные оси. Я попытался спроецировать 3-мерные координаты на 2-мерные координаты оси, но это было неправильно, и это оказалось неправильным, а именно, он перемещает указатель в неправильное место.

mvpt= view * [x y z 1]'
mvpt=mvpt(1:2)
moveptr(handle(gca),'init')
moveptr(handle(gca),'move',mvpt(1),mvpt(2))

Любые другие предложения?


person bop    schedule 05.11.2012    source источник


Ответы (1)


Я думаю, вам следует наложить 2D-ось на ту же фигуру, на которую у вас есть проекция вашего 3D-объекта. Это не совсем то, что вы здесь делаете, и я не знаю, что такое единственный вывод вида (я всегда использую азимут и высоту в своей 3D-работе...)

Как спроецировать трехмерную структуру в двухмерную, объяснялось в другом месте: http://www.mathworks.com/matlabcentral/newsreader/view_thread/169417

Затем вы можете использовать moveptr на своей новой оси, а затем стереть 2D-график и оси. Это немного грязно, но это должно сделать.

person Wli    schedule 09.11.2012
comment
Это хорошая идея! Однако действительно сложно определить правильные пределы осей и позиционирование фиктивных осей, которые вы предлагаете. Любые идеи по этому поводу? - person bop; 12.11.2012
comment
Если бы я был на вашем месте, я бы действовал методом проб и ошибок... Если только вы не обладаете большими навыками математической абстракции и не можете рассчитать площадь проекции и расположить ее на бумаге. Это уже не матлаб, а чисто математика. Но, по крайней мере, я дал вам путь :). Удачи! - person Wli; 13.11.2012
comment
Не могли бы вы проголосовать за него и отметить его как ответ, если в конце концов это сработало для вас? И если да, дайте краткое изложение того, что вы сделали (и отметьте свой пост как ответ, а не мой). Спасибо! - person Wli; 14.11.2012
comment
Ну, это еще не сработало для меня, но это было полезно как идея, поэтому я уже проголосовал за нее. Я приму это как ответ, когда заставлю его работать. Я поработаю над этим позже, и если у меня все получится, я обязательно поделюсь решением. Спасибо. - person bop; 19.11.2012