Borrar filtros
Borrar filtros

Need help validating curvature of an arc which has XYZ points

6 visualizaciones (últimos 30 días)
Sanam Pun
Sanam Pun el 22 de Feb. de 2024
Respondida: Abhishek Chakram el 24 de Abr. de 2024
Hi,
I have a composite plate that has curved due to thermal stress. This was modelled in Abaqus, and I have created an ouput of nodal displacement in xyz coordinates. I have managed to find the radius/curvature but it seems way too high (for ref I'm using this for calculation).
Of course my model itself could be wrong, but I just wanted to validate if someone here could use xyz points from my script and calculate their own radius?

Respuestas (1)

Abhishek Chakram
Abhishek Chakram el 24 de Abr. de 2024
Hi Sanam Pun,
It appears to me that you want to validate the radius of curvature that you found. Based on your method, the mean of radius of curvature comes out to be 632.3387.
I followed a different approach to calculate the radius and found the mean to be 648.4765. Since the difference is less, I believe that the instructions you were referring is also correct. Here is the code for my approach:
% Given data
x = [13.7882, 30.9447, 48.5305, 66.4905, 84.7921, 103.41, 122.317, 141.485, 160.882, 180.471, 200.216, 220.079, 240.02, 260, 279.98, 299.921, 319.784, 339.529, 359.118, 378.515, 397.683, 416.59, 435.208, 453.509, 471.469, 489.055, 506.212];
y = [0.00333052, 0.0117478, 0.0117075, 0.0102405, 0.00887592, 0.00792976, 0.0074076, 0.00721893, 0.00724844, 0.00739001, 0.00756238, 0.00771254, 0.00781127, 0.00784552, 0.0078118, 0.0077136, 0.00756396, 0.0073921, 0.00725103, 0.00722202, 0.00741118, 0.0079338, 0.00888042, 0.0102455, 0.0117129, 0.0117535, 0.00333664];
z = [32.5773, 25.6187, 19.125, 13.0944, 7.54374, 2.49851, -2.01452, -5.97057, -9.34853, -12.1315, -14.3071, -15.8664, -16.8039, -17.1168, -16.804, -15.8664, -14.3071, -12.1316, -9.34863, -5.97069, -2.01466, 2.49835, 7.54356, 13.0942, 19.1248, 25.6185, 32.5771];
% Calculate the derivatives using finite differences
dx = gradient(x);
dy = gradient(y);
dz = gradient(z);
ddx = gradient(dx);
ddy = gradient(dy);
ddz = gradient(dz);
% Calculate the curvature
numerator = sqrt((dy .* ddz - ddy .* dz).^2 + (dz .* ddx - ddz .* dx).^2 + (dx .* ddy - ddx .* dy).^2);
denominator = (dx.^2 + dy.^2 + dz.^2).^(3/2);
kappa = numerator ./ denominator;
% Calculate the radius of curvature
radius_of_curvature = 1 ./ kappa;
% Removed 1st and last value to compare
% both the means as your approach returned NaN
% values in 1st and last position
radius_of_curvature = radius_of_curvature(:,2:end-1);
mean_radius_of_curvature = mean(radius_of_curvature);
disp(['Mean Radius of Curvature: ', num2str(mean_radius_of_curvature)]);
Mean Radius of Curvature: 648.4765
This code calculates the derivatives using finite differences and then applies the curvature formula for a 3D curve. It calculates the curvature at each point along the curve defined by the x, y, and z data points. It then computes the radius of curvature as the inverse of the curvature. The mean radius of curvature is also calculated and displayed.
Best Regards,
Abhishek Chakram

Categorías

Más información sobre Programming en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by