3D angle Measurement

2 views (last 30 days)
Emre Erdogan
Emre Erdogan on 20 Aug 2018
Commented: ADragon on 20 Aug 2018
Hello, I have an one 3D dataset of a metal object that i want to measure some data from it. I am able to measure the length etc but calculating the angles giving me hard time since it can be positioned in different angles itself. I was wondering what would be the best and simple thing to calculate the angles. How can i move the data to the certain xyz plane ? or is it possible to create another xyz plane with the reference points in the object thanks
  3 Comments
Emre Erdogan
Emre Erdogan on 20 Aug 2018
Edited: Emre Erdogan on 20 Aug 2018
It is just a one part metal object. It is like "r" slightly bended to right and slightly to backward. I managed to make a centerline so that it becomes easier to calculate. So the data is skeleton of the object now. I would use the coordinates of end points and turning points for making the calculation but since it is diffetently positioned in every scan i couldnt use it.
ADragon
ADragon on 20 Aug 2018
Hi Emre, you could use vector math. Using the equation cos(theta) = (u dot v)/(mag u * mag v)
p1 = rand(1,3); % Point 1
p2 = rand(1,3); % Point 2
p3 = rand(1,3); % Point 3
% Vector u from p2 to p1
% Vector v from p2 to p3
u = p1 - p2;
v = p3 - p2;
o = zeros(1,3);
udotv = sum(u.*v); % dot product of u and v
umag = norm(u); % vector magnitude of u
vmag = norm(v); % vector magnitude of v
theta = acos(udotv/(umag*vmag))*180/pi;
figure
p = [u; o; v];
plot3(p(:,1),p(:,2),p(:,3))
title(['Vector Angle = ' num2str(theta,4) ' deg'])
axis equal
grid on

Sign in to comment.

Answers (0)

Categories

Find more on Operating Points in Help Center and File Exchange

Products


Release

R2013b

Community Treasure Hunt

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

Start Hunting!