| |
|
|
ByteAttack | allô! peut-être gibt es den une ou bien anderen qui Fit dans Mathe ist. il me faut la fois une Formelsammlung et zwar um XYZ-données dans YBC (sprich LRA) umzuwandeln. Habe zwar pour MatLab un PlugIn trouvé, werde je mais malheureusement pas malain draus. voudrais cela volontiers sous XProfan berechnen.
Salut Marc-Gordon
Plugin: KompilierenMarqueSéparation%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à class=s2>)^2);
|
|
|
| |
|
|
|
ByteAttack | aucun qui peut-être Matlab hat? |
|
|
| |
|
|
|
| alors mich überforderts,
intelleleluell et zeitlich sodass je mich là plan pas fix rein et penser peux.
Vlt. peux Du la fois écrivons quoi Du faire vouloir, ensuite ists vlt. einfacher. |
|
|
| |
|
|
|
ByteAttack |
OK! j'ai une technische dessin, cela mir alle Biegekoordinaten dans XYZ angibt. et zwar den Rohranfang (Meißt X=0,Y=0,Z=0) et ensuite toujours oui c'est ca qui Mittelpunkt qui Biegung, sowie cela Rohrende! (rotes + siehe Bild) cela quoi je sais sommes arrêt qui Koordinaten, sowie qui Biegeradius. cet devoir maintenant umgerechnet volonté dans Longueur, Drehung, Biegewinkel.
Habe là un Beispiel trouvé: (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 (Longueur, Drehung, Biegung) 89,477 0° 38,66° 13,197 -36,20° 106,69° |
|
|
| |
|
|
|
| Hm et si Du simple un gerades Rohr kaufst? |
|
|
| |
|
|
|
ByteAttack | Gerades Rohr habe je oui - veux es arrêt Krum faire |
|
|
| |
|
|
|
| Hm alors normal ist cela pas.
je versuch mich grad intelleuel dans cela Rohr hinein trop versetzen, Stein hat glaube déjà la fois geklappt.
si je cela richtig verstehe ensuite la hâte Du alors 3 XYZ Koordinaten et vouloir de XYZ[1..3] pour XYZ[1..2] & LRA[1] le calcul, wobei naturellement seulement LRA auszurechnen wäre weil XYZ[1..2] comme 3D-Vektor bereits bekannt ist?
alors erstmal qui Drehung le calcul qui notwendig ist um vom Vektor XYZ[1-2] sur qui Koordinate XYZ[3] trop venons et qui Longueur devrait ensuite peut-être de qui Biegung dépendre ou bien anders herum bzw. allez on dabei de einer linearen Biegeverbiegung aus?
je crois cela qui Formel là dessus encore einiges plus pouvoir quasi comme industrie- Formel et on vous pour exakte Ergebnisse oui c'est ca traduire devrait, quoi je mais pas peux, là je pas sais comment Je l' Code trop interpretieren habe. |
|
|
| |
|
|
|
ByteAttack | oui c'est ca c'est mon Problem. je perspective cela avec dem Matlab net... |
|
|
| |
|
|
|
| vois Du es aussi so, dass cela L(ength) "nur" qui 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 lieu je mir bisher so avant, dass on qui 3D-Koordinaten dans un 2D-Räpresentation umwandelt pourrait et avec cela simple qui Winkel entre beiden Punkten errechnet volonté devrait z.B. avec angleByLine ( [...] ) . |
|
|
| |
|
|