# Glm perpendicular vector

I need to build a 3d tube primitive from a set of point. For each point I’ve the position and the direction.
In order to set the normal correctly, i need the vector perpendicular to the direction. Using `Vec3f` there was `getPerpendicular` method https://github.com/openframeworks/openFrameworks/blob/master/libs/openFrameworks/math/ofVec3f.h#L1787

What is its equivalent in `glm` ? I had a look at this documentation https://glm.g-truc.net/0.9.0/api/a00181.html#_details
but it looks not the same thing as it takes 2 vectors as parameters.

My bad, the syntax is the same as the other glm operation `glm::perp(v1,v2)`

Trying to get used to `glm` When I do this in 2d I used to just call `ofVec2.getPerpendicular()` with glm I am doing this.

``````glm::vec2 a = points[i];
glm::vec2 b = points[i-1];
glm::vec2 v = a - b;
glm::vec2 perp = glm::perp(glm::vec2(0, 1), v);

``````

and it looks like this?

what am I doing wrong?

I don’t know, and the answer is indeed hard to find on the web. Weird. But I know you can do it like that:

``````glm::vec2 perp( -v.y, v.x );
``````

most probably glm doesn’t include such a function cause it can have multiple solutions (2 in 2d). what @lilive proposes is usually how you calculate the perpendicular and it’s what ofVec2f does (but normalized). the second solution would be `glm::vec2 perp( v.y, -v.x );`

Yes - I ended up just doing `(-y, x)` What do you think of some type of glm utils class?