# Get the displacement component which is perpendicular to the triangle (finite element)

2 views (last 30 days)

Show older comments

Hey

I have a triangle in the space(x, y, z)

I know the displacements of three nodes in the vector form, namely

d1: 0.000131475 -0.000706995 0.000754736

d2: 6.02E-05 -0.000662299 0.000711364

d3: 0.000147876 -0.000661116 0.000729507

Is there any way to know the displacement of the trangle in the normal direction?

Do I need something called shape function and how to use it?

##### 7 Comments

Torsten
on 27 Sep 2022

Edited: Torsten
on 27 Sep 2022

Chunru answered the displacement in normal direction for the extreme points of the triangle.

I think you should be able to transfer this to a general point within the triangle:

A general point within the (convex) triangle can always be represented as a convex combination of its extreme points:

P = lambda_1*A + lambda2 *B + lambda3*C

where A, B and C are the extreme points and

sum_i lambda_i = 1

My guess is that the displacement vector in P is

dP = lambda1*dA + lambda2*dB + lambda3*dC

and dot(dP,vnorm) should give the displacement of P in normal direction.

### Accepted Answer

Benjamin Thompson
on 26 Sep 2022

d1 = [0.000131475 -0.000706995 0.000754736]

You can make one of the vectors the origin by subtracting it from the other two, then use null to identify the orthogonal vector to those two.

d1 = [0.000131475 -0.000706995 0.000754736]

d2 = [ 6.02E-05 -0.000662299 0.000711364]

d3 = [0.000147876 -0.000661116 0.000729507]

A = [d3' - d1', d2' - d1', d1' - d1']

A =

1.0e-04 *

0.164010000000000 -0.712750000000000 0

0.458790000000000 0.446960000000000 0

-0.252290000000000 -0.433720000000000 0

» null(A)

ans =

0

0

1

##### 2 Comments

Benjamin Thompson
on 27 Sep 2022

### More Answers (2)

Chunru
on 27 Sep 2022

% In order to know the normal of triangle, you need the coordinated of

% triangle

postri = randn(3, 3) % x y z

v = diff(postri) % p2-p2, p3-p2 as vector

vnorm = cross(v(1,:), v(2,:)) % norm to the triangle

vnorm = vnorm/norm(vnorm) % normalized

d1 = [0.000131475 -0.000706995 0.000754736];

d2 = [ 6.02E-05 -0.000662299 0.000711364];

d3 = [0.000147876 -0.000661116 0.000729507];

% movement of node along the normal direction of the triangle

m1 = d1*vnorm' % dot product

m2 = d2*vnorm'

m3 = d3*vnorm'

##### 0 Comments

John D'Errico
on 27 Sep 2022

A highly confusing question. You talk about a triangle, but you do not tell us the coordinates of the triangle, only the displacements. Or, perhaps what you call displacements ARE the coordinates of the triangle.

So I will assume that you KNOW the coordinates of the triangle. What then can you say about the displacement of the triangle itself? First, what is the normal to the triangle. Since you have not told us the triangle coordinates, we cannot know. SIGH.

The normal vector to triangle is simple. You can get it form a vector cross product. That is, if the vertices of the trianlge lie at coordinates in space of A, B, and C, then the normal vector is given by

nrmlVec = cross(B-A,C-A);

nrmlVec= nrmlVec/norm(nrmlVec); % normalize to unit length

But this has NOTHING to do with the displacement of the entire triangle, or in what direction the displacement happened.

As well, the normal vector to the tiangle may point in one of two completely distinct directions. Think of them as up or down, in or out, whatever. But the normal vector is NOT unique in that respect. The direction is arbitrary.

And, really, you cannot say anything about the displaceent of the entire triangle. For example, two nodes might go in one direction, and the other node in a completely different direction.

At best, you might decide to look at the centroid of the triangle, and think about where it is going.

The centroid of the triangle is easy to work with. We can get that centroid displacement as simply the average of the three nodal displacements, thus

dCent = (d1 + d2 + d3)/3;

Now, we can consider how much of that displacement lies in the normal direction. This is easy, since nrmlVec has been unit normalized.

dCentNrml = nrmlVec*dot(dCent,nrmlVec); % normal displacement

dCentInPlane = dCent - dCentNrml; % the in-plane component at the movement of the triangle centroid

However, there is still another issue. The entire triangle may have grown larger or smaller, while not effectively moving at all. Again, this can be quantified, but you never asked about it at all. And since I don't even know for sure what is your real question, sigh.

##### 3 Comments

Chunru
on 28 Sep 2022

### See Also

### Categories

### Products

### Community Treasure Hunt

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

Start Hunting!