Deutsch
Forum

Jemand Fit in Mathe?

 

ByteAttack
Hallo!
Vielleicht gibt es den einen oder anderen der Fit in Mathe ist.
Ich brauche mal eine Formelsammlung und zwar um XYZ-Daten in YBC (sprich LRA) umzuwandeln. Habe zwar für MatLab ein PlugIn gefunden, werde ich aber leider nicht schlau draus. Möchte das gerne unter XProfan berechnen.

Gruß Marc-Gordon

Plugin:
KompilierenMarkierenSeparieren
%XYZ2YBC convert form XYZ coordinate to YBC format (LRA)
%   XYZ2YBC(X,Y,Z) convert the X,Y,Z values to Y,B,C values. assuming the bend
%   radius is zero. the size of X,Y and Z must be the same.
%
%   XYZ2YBC(X,Y,Z,R) where R is the bend radius. convert the X,Y,Z values to
%   Y,B,C values, taking in to account the bend radius R.
%
%   XYZ2YBC(X,Y,Z,R) where R is the bend radius matrix for each bend. convert
%   the X,Y,Z values to Y,B,C values, taking in to account the bend radius R
%   for each bend.  size of R must be less than the number of XYZ points by 2.
%
%   returns Y length between bends, B rotation between bends in radius,+ for
%   clockwise and - for anticlockwise, C angle of bend in radius.
%
% File: xyz2ybc
% Author: Ammar Mousali
% Date:   29/04/2004
% Griffith University
% V1.1
%
% changes from V1.0
%   changed the output from degrees to radius.
%
function [Y,B,C] = xyz2ybc(Xc,Yc,Zc,R)
if( (length(Xc) ~= length(Yc)) | (length(Xc) ~= length(Zc)) )
error('X,Y,Z are not the same size');
end
if(nargin == 3)
% set the bend radius to zero for all bends.
R = zeros(1,length(Xc)-2);
elseif(length(R) == 1)
% set the bend radius to R for all bends.
R = ones(1,length(Xc)-2).*R;
elseif(length(R) ~= length(Xc)-2)
error('R size doesnt match the number of bends');
end
% number of bends is less than the number of XYZ points by 2.
for i = 1:length(Xc)-2
% calculate the 2 vectors BA and BC, representing an angle ABC.
V1 = [Xc(i)-Xc(i+1) ; Yc(i)-Yc(i+1) ; Zc(i)-Zc(i+1)];
V2 = [Xc(i+2)-Xc(i+1) ; Yc(i+2)-Yc(i+1) ; Zc(i+2)-Zc(i+1)];
% calculate the length of vectors BA and BC.
V1l = Vlength(V1);
V2l = Vlength(V2);
% calculate the angle between the 2 vectors BA and BC.
C(i) = pi - acos(dot(V1,V2) / (V1l*V2l));
% calculate the vector perpendicular to the plan ABC.
planeV(i,:) = cross(V1,V2)';
if(i>1)
% calculate the length of the straight by subtracting the tangent of
% the bend angle.
Y(i) = Y(i) - R(i)*tan(C(i)/2);
Y(i+1) = V2l - R(i)*tan(C(i)/2);
% calculate the length of vectors perpendicular to the plan ABC and
% the plan of the bend before it.
PV1l = Vlength(planeV(i-1,:));
PV2l = Vlength(planeV(i,:));
% calculate the rotation direction.  negative if counter clockwise.
s=sign(V1 .* cross(planeV(i-1,:),planeV(i,:))');
% calculate the rotation angle and multiply by the rotation direction.
B(i) = acos(dot(planeV(i-1,:),planeV(i,:))/(PV1l*PV2l))*s(1);

else

% calculate the length of the straight by subtracting the tangent of
% the bend angle.
Y(i) = V1l - R(i)*tan(C(i)/2);
Y(i+1) = V2l - R(i)*tan(C(i)/2);
% rotation of the first bend is always zero.
B(i) = 0;
end
end
% calculate the length of a 3D vector.
function l=Vlength(V)
l = sqrt(V(1)^2 + V(2)^2 + V(3)^2);
 
17.02.2013  
 




ByteAttack
keiner der vielleicht Matlab hat?
 
21.02.2013  
 



Also mich überforderts,

intelleleluell und zeitlich sodass ich mich da eben nicht fix rein und denken kann.

Vlt. kannst Du mal schreiben was Du machen möchtest, dann ists vlt. einfacher.
 
21.02.2013  
 




ByteAttack


OK! Ich habe eine technische Zeichnung, das mir alle Biegekoordinaten in XYZ angibt. Und zwar den Rohranfang (Meißt X=0,Y=0,Z=0) und dann immer genau der Mittelpunkt der Biegung, sowie das Rohrende! (rotes + siehe Bild)
Das was ich weiß sind halt die Koordinaten, sowie der Biegeradius.
Diese sollen jetzt umgerechnet werden in Länge, Drehung, Biegewinkel.



Habe da ein Beispiel gefunden: (Biegeradius 30)

X Y Z
0 |0 |0 ' Anfang Rohr
100 | 0 |0 ' Erster Bogen
150 | 40 |0 ' Zweiter Bogen
50 | 100 | 80 'Ende Rohn

ergibt

L R A (Länge, Drehung, Biegung)
89,477 0° 38,66°
13,197 -36,20° 106,69°
 
22.02.2013  
 



Hm und wenn Du einfach ein gerades Rohr kaufst?
 
22.02.2013  
 




ByteAttack
Gerades Rohr habe ich ja - Will es halt Krum machen
 
22.02.2013  
 



Hm also normal ist das nicht.

Ich versuch mich grad intelleuel in das Rohr hinein zu versetzen,
Stein hat glaube schon mal geklappt.

Wenn ich das richtig verstehe dann hast Du also 3 XYZ Koordinaten und möchtest
von XYZ[1..3] nach XYZ[1..2] & LRA[1] rechnen, wobei natürlich nur LRA auszurechnen
wäre weil XYZ[1..2] als 3D-Vektor bereits bekannt ist?

Also erstmal die Drehung rechnen die notwendig ist um vom Vektor XYZ[1-2] auf
die Koordinate XYZ[3] zu kommen und die Länge müsste dann vielleicht von der
Biegung abhängen oder anders herum bzw. geht man dabei von einer linearen
Biegeverbiegung aus?

Ich glaube das die Formel da oben noch einiges mehr macht quasi als Industrie-
Formel und man sie für exakte Ergebnisse genau übersetzen müsste, was ich aber
nicht kann, da ich nicht weiß wie ich den Code zu interpretieren habe.
 
22.02.2013  
 




ByteAttack
Genau das ist mein Problem. Ich blick das mit dem Matlab net...
 
22.02.2013  
 



Siehst Du es auch so, dass das L(ength) "nur" die Distanz zweier XYZ-Koordinaten
ist wonach L = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1)) wäre?

A(ngle) herausbekommen stelle ich mir bisher so vor, dass man die 3D-Koordinaten
in eine 2D-Räpresentation umwandelt könnte und damit einfach der Winkel zwischen
beiden Punkten errechnet werden müsste z.B. mit angleByLine ( [...]  ) .
 
22.02.2013  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.869 Betrachtungen

Unbenanntvor 0 min.
Kutsche22.10.2024
ByteAttack09.08.2022
Member 145180318.11.2020
Michael W.23.12.2016
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

ByteAttack (5x)
iF (4x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie