Правя малка симулация на matlab simulink и трябва да напиша текст върху графиката, независимо от координатите. За да обясня повече, в моята симулация позицията на камерата в свойствата на осите винаги се променя (3D диаграма), така че координатите, които се показват на графиката, също се променят. Това, което искам, е да добавя текст към графиката (да кажем долу вляво), без да се налага да посочвам координати за текстовото поле. Благодаря..
Добавяне на текст към 3d графика на simulink, независимо от координатите
Отговори (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
Работата е там, че ако го направя, текстът ще изобрази това, което рисувам върху графиката. Имам само малко място в ъглите, където мога да поставя текстово поле.
- person Wfarah; 09.06.2014
А, добре, тогава се опитвате да поставите текстовото поле извън самия график, но вътре в прозореца на фигурата? Ако е така, тогава може би нещо като: 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
Но фактът, че позицията на камерата се променя вътре в симулацията, прави този метод безполезен. Само си представете, че моят сюжет е 3D обект, че трябва - в един момент - да завъртя камерата около него, докато показвам текст, който казва, че времето е замръзнало. Извеждането на текст при xmin и ymin би го накарало да изчезне, когато камерата се върти.
- person Wfarah; 11.06.2014
Съжалявам, възможно е тогава да съм разбрал погрешно въпроса ви. Бихте ли разяснили малко? Първо, каква команда използвате за чертане? Използвате ли plot, drawnow...? Второ, къде се прави чертежът? Извършва ли се в блок Simulink като Matlab Function или Interpreted Matlab Function? И трето, когато казвате, че показването на текст при xmin и ymin ще накара „това“ да изчезне, какво е „то“? Камерата, 3d обектът или самото текстово поле? Благодаря
- person PatchJob; 11.06.2014
Използвам функцията plot3, за да начертая моята графика, и text drawnow, за да покажа текстовото поле. Изчертаването се извършва в нормален блок Simulink. И трето, сгреших, като казах, че изчезва. Това, което имах предвид с него, е текстовото поле само по себе си и изчезването се дължи на факта, че камерата се върти около фиксирана точка. Така че текстовото поле буквално ще бъде скрито в една точка от това завъртане. Надявам се, че съм достатъчно ясен, липсват ми технически думи на езика на matlab. Благодаря
- person Wfarah; 11.06.2014
Страхотен! Благодаря за уточнението! Хм... така че, ако разбирам правилно, бихте искали текстовото поле за замразяване на времето да остане на същото място спрямо прозореца за чертане (а не постоянно променящата се ос за чертане) по време на симулацията. Опитах горните команди и те изглежда работят за мен, така че мисля, че вероятно проблемът е къде се поставят командите. Бихте ли могли да предоставите някакъв код или псевдокод за това как чертаете, когато текстовото поле продължава да изчезва, за да мога да опитам да възпроизведа проблема?
- person PatchJob; 11.06.2014
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
Ако приемем, че изпълнявате командата „text“ след „set“ и преди да промените стойността на o, аз съм объркан и не съм сигурен защо няма да работи за вас. Съжалявам, че не можах да бъда по-полезен :(
- person PatchJob; 12.06.2014