WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Normalenvektor auf Funktion

 

Kim
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2022, 10:50     Titel: Normalenvektor auf Funktion
  Antworten mit Zitat      
Hallo,

Ich brauche für die Erstellung einer Geometrie eine Innen- und eine Außenseite , die ich rotieren lassen kann. Die Grundform ist eienr cos-Funktion sehr änhlich, weshalb ich sie vorerst verwende.
Die Außenseite kann ich durch die cos-Funktion somit erzeugen. Die Innenseite möchte ich erzeugen, indem ich mit einem Normalenvektor der Länge d die Außenseite zur x-Achse hin abbilde. Damit erzeuge ich eine konstante Dicke.
Leider kommt bei meinem Versuch nichst gescheites heraus:
Code:
XY=[x;y];
d=1;

grad=gradient(XY);
nv=-1./grad; %Normalenvektor
nn=nv./abs(grad); %Normierter Normalenvektor
XY_new=XY+nn*d;
x_new=XY_new(1,:);
y_new=XY_new(2,:);

figure(1);
plot(x,y);
hold on
plot(x_new,y_new);
 


Mit einer anderen Methode, die ich in diesem Forum gefunden habe (Normale zu einer Sinusfunktion), strecke ich meine Kurve nur in x-Richtung:
Code:
XY=[x;y];
d=10;
nn=[XY./norm(XY)];
XY_new=XY+nn*d;
x_new=XY_new(1,:);
y_new=XY_new(2,:);

figure(1);
plot(x,y);
hold on
plot(x_new,y_new);


Ich würde mich freuen, wenn mir jemand helfen könnte, meinen Fehler zu finden.
Vielen Dank im Vorraus!

Variante2.jpg
 Beschreibung:

Download
 Dateiname:  Variante2.jpg
 Dateigröße:  21.08 KB
 Heruntergeladen:  128 mal
Variante1.jpg
 Beschreibung:

Download
 Dateiname:  Variante1.jpg
 Dateigröße:  14.01 KB
 Heruntergeladen:  122 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.10.2022, 17:43     Titel:
  Antworten mit Zitat      
Hallo,

ich kann weder dem einen noch dem anderen Ansatz folgen. Ich würde es so angehen:

Code:
x = linspace(0, 2*pi);
y = cos(x);

XY=[x;y];
%d=1;

slope=gradient(y)./gradient(x);
slope_normal=-1./slope;
vec = [ones(size(slope_normal)); slope_normal];
normvec = vec ./ sqrt(sum(vec.^2));
XY2 = XY + normvec;

figure(1);
plot(x,y);
hold on
plot([x; XY2(1,:)], [y; XY2(2,:)], "r");
hold off


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2022, 09:44     Titel:
  Antworten mit Zitat      
Vielen Dank, das hat mir sehr geholfen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.