Добавяне на текст към 3d графика на simulink, независимо от координатите

Правя малка симулация на matlab simulink и трябва да напиша текст върху графиката, независимо от координатите. За да обясня повече, в моята симулация позицията на камерата в свойствата на осите винаги се променя (3D диаграма), така че координатите, които се показват на графиката, също се променят. Това, което искам, е да добавя текст към графиката (да кажем долу вляво), без да се налага да посочвам координати за текстовото поле. Благодаря..


person Wfarah    schedule 09.06.2014    source източник


Отговори (1)


Опитахте ли да използвате опциите в 'текста функция?

Бихте могли да направите нещо като:

xmin = min(get(gca,'xlim'));
ymin = min(get(gca,'ylim'));
zmin = min(get(gca,'ylim'));
text(xmin,ymin,zmin,'text')

Може също да се наложи да си поиграете с опциите за подравняване в „текст“

person PatchJob    schedule 09.06.2014
comment
Работата е там, че ако го направя, текстът ще изобрази това, което рисувам върху графиката. Имам само малко място в ъглите, където мога да поставя текстово поле. - person Wfarah; 09.06.2014
comment
А, добре, тогава се опитвате да поставите текстовото поле извън самия график, но вътре в прозореца на фигурата? Ако е така, тогава може би нещо като: xpos = min(xmin+xmin/10, xmin-xmin/10); ypos = min(ymin+ymin/10, ymin-ymin/10); текст (xpos,ypos, 'test', 'HorizontalAlignment','right','VerticalAlignment','cap' ) Това трябва да постави текста в последователна позиция спрямо долния ляв ъгъл - person PatchJob; 10.06.2014
comment
Но фактът, че позицията на камерата се променя вътре в симулацията, прави този метод безполезен. Само си представете, че моят сюжет е 3D обект, че трябва - в един момент - да завъртя камерата около него, докато показвам текст, който казва, че времето е замръзнало. Извеждането на текст при xmin и ymin би го накарало да изчезне, когато камерата се върти. - person Wfarah; 11.06.2014
comment
Съжалявам, възможно е тогава да съм разбрал погрешно въпроса ви. Бихте ли разяснили малко? Първо, каква команда използвате за чертане? Използвате ли plot, drawnow...? Второ, къде се прави чертежът? Извършва ли се в блок Simulink като Matlab Function или Interpreted Matlab Function? И трето, когато казвате, че показването на текст при xmin и ymin ще накара „това“ да изчезне, какво е „то“? Камерата, 3d обектът или самото текстово поле? Благодаря - person PatchJob; 11.06.2014
comment
Използвам функцията plot3, за да начертая моята графика, и text drawnow, за да покажа текстовото поле. Изчертаването се извършва в нормален блок Simulink. И трето, сгреших, като казах, че изчезва. Това, което имах предвид с него, е текстовото поле само по себе си и изчезването се дължи на факта, че камерата се върти около фиксирана точка. Така че текстовото поле буквално ще бъде скрито в една точка от това завъртане. Надявам се, че съм достатъчно ясен, липсват ми технически думи на езика на matlab. Благодаря - person Wfarah; 11.06.2014
comment
Страхотен! Благодаря за уточнението! Хм... така че, ако разбирам правилно, бихте искали текстовото поле за замразяване на времето да остане на същото място спрямо прозореца за чертане (а не постоянно променящата се ос за чертане) по време на симулацията. Опитах горните команди и те изглежда работят за мен, така че мисля, че вероятно проблемът е къде се поставят командите. Бихте ли могли да предоставите някакъв код или псевдокод за това как чертаете, когато текстовото поле продължава да изчезва, за да мога да опитам да възпроизведа проблема? - person PatchJob; 11.06.2014
comment
set(fig_axes, 'CameraPosition', [a+b*cos(o),a+b(1+cos(o)),a+b*sin(-o)]); o=o-2*pi/1500 По принцип това е въртенето на камерата вътре в кода. Добавих текстовото поле тук. Така че при всяка итерация стойността на o ще се променя, променяйки позицията на камерата. Обърнете внимание, че вече съм задал своите x,y и z граници. - person Wfarah; 11.06.2014
comment
Ако приемем, че изпълнявате командата „text“ след „set“ и преди да промените стойността на o, аз съм объркан и не съм сигурен защо няма да работи за вас. Съжалявам, че не можах да бъда по-полезен :( - person PatchJob; 12.06.2014