ich habe gerade ein kleines Problem bei der Programmierung von Matlab.
Unsere Aufgabe besteht darin, ein GUI zu erstellen, sodass verschiedene 3D-Körper in einem extra Fenster angezeigt werden und man mit Hilfe dieses GUI´s die Körper in jede Richtung verschieben kann, die Skalierung ändern kann und die Körper um jede Achse drehen kann.
Die Darstellung der Körper, die Verschiebung und der allgemeine Aufbau des GUI´s sind kein Problem und klappen auch....
Leider habe ich nur Probleme mit der Skalierung und der Rotation....
Vielleicht kann mir ja einer ein paar Tipps geben....
Vielen, vielen Dank für Eure Hilfen.
Im Folgenden werde ich mal die einzelnen Funktionen und das GUI angeben:
Das Bedieninterface:
Code:
functionvarargout = bedieninterface_do(varargin) % BEDIENINTERFACE_DO M-file for bedieninterface_do.fig % BEDIENINTERFACE_DO, by itself, creates a new BEDIENINTERFACE_DO or raises the existing % singleton*.
%
% H = BEDIENINTERFACE_DO returns the handle to a new BEDIENINTERFACE_DO or the handle to % the existing singleton*.
%
% BEDIENINTERFACE_DO('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in BEDIENINTERFACE_DO.M with the given input arguments.
%
% BEDIENINTERFACE_DO('Property','Value',...) creates a new BEDIENINTERFACE_DO or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before bedieninterface_do_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to bedieninterface_do_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help bedieninterface_do
% Last Modified by GUIDE v2.5 11-Jul-2011 14:11:45
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @bedieninterface_do_OpeningFcn, ...
'gui_OutputFcn', @bedieninterface_do_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before bedieninterface_do is made visible. function bedieninterface_do_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to bedieninterface_do (see VARARGIN) global h
h = handles;
% Choose default command line output for bedieninterface_do
handles.output = hObject;
% UIWAIT makes bedieninterface_do wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = bedieninterface_do_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes during object creation, after setting all properties. function panel1_CreateFcn(hObject, eventdata, handles) % hObject handle to panel1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called set(hObject, 'SelectionChangeFcn', @sel_body);
function sel_body(source, eventdata) global b
rb_Koerper = get(eventdata.NewValue,'Tag')
switch rb_Koerper
case 'rb_q'
b = Quader(5,5,8);
case 'rb_p'
b = Pyramide(5,5,8);
case 'rb_d'
b = Dreieck(5,5,8);
case 'rb_t'
b = Tetraeder(5,5,8);
case 'rb_o'
b = Octaeder(5,5,8);
case 'rb_i'
b = Initiale(5,5,8);
otherwise disp('Fehler bei Körperauswahl');
end
Zeichnen(b)
% --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider
% --- Executes during object creation, after setting all properties. function slider1_CreateFcn(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background. ifisequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]);
end
addlistener(hObject,'Action', @Schieberegler)
function Schieberegler(hObject, eventdata) global rb_transfer b R Q
Wert = get(hObject, 'Value');
Wert = Wert - 0.5;
Wert = (Wert)*10;
switch rb_transfer
case 'rb_tx'
R = Translation (b, Wert,0,0);
%Zeichnen (bb, Xo);
case 'rb_ty'
R = Translation (b, 0,Wert,0);
%Zeichnen (bb, Yo);
case 'rb_tz'
R = Translation (b, 0,0,Wert);
%Zeichnen (bb, Zo);
end
Zeichnen(R)
%addlistener(hObject,'Action', @Schieberegler)
% --- Executes during object creation, after setting all properties. function panel2_CreateFcn(hObject, eventdata, handles) % hObject handle to panel2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called set(hObject, 'SelectionChangeFcn', @sel_transformation);
function sel_transformation(source, eventdata) global rb_transfer
rb_transfer = get(eventdata.NewValue,'Tag')
% --- Executes on button press in checkbox1. function checkbox1_Callback(hObject, eventdata, handles) % hObject handle to checkbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of checkbox1 if(get(h.checkbox1,'Value') == get(h.checkbox1,'Max')) global R Q
Q = R;
Q = Translation (Q, Wert,Wert,Wert);
Q = b;
Zeichnen(R) % Checkbox is not checked-take approriate action end
% --- Executes during object creation, after setting all properties. function rb_q_CreateFcn(hObject, eventdata, handles) % hObject handle to rb_q (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties. function rb_t_CreateFcn(hObject, eventdata, handles) % hObject handle to rb_t (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties. function rb_tx_CreateFcn(hObject, eventdata, handles) % hObject handle to rb_tx (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
function Zeichnen(body) figure(1) clf for Linie = 1: size(body.l,2) plot3([body.p(1,body.l(1,Linie)), body.p(1,body.l(2,Linie))],... [body.p(2,body.l(1,Linie)), body.p(2,body.l(2,Linie))],... [body.p(3,body.l(1,Linie)), body.p(3,body.l(2,Linie))]);
Verfasst am: 27.01.2015, 03:14
Titel: Lösung von mir
Hey, das sieht mir ganz nach meiner UNI aus wenn ich in die komme, kann ich dir mein Programm zu kommen lassen. Das wäre Donnerstag... Damit bin ich komplett durch meine Prüfung gekommen.
Wenn du magst kannste mal ne Mail-Adresse nennen.
Verfasst am: 27.01.2015, 16:13
Titel: Re: Lösung von mir
Hallo Studento,
Es ist nicht klar, wen Du meinst und um welches Programm es sich handelt.
Gruß, Jan
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.