MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Asked by João Viveiros on 13 Oct 2012

Hi. I have defined a 3D polygon creating a vertice and a face matrix to use the function Patch. Now i would like to know: how do i transform my 3D polygon in an homogeneous matrix.

Any clues ?

Thanks for the help.

*No products are associated with this question.*

Answer by Walter Roberson on 13 Oct 2012

Accepted answer

The matrix "vert" in your code *is* your homogenous matrix for your purposes described in your comment.

João Viveiros on 13 Oct 2012

Thanks. I homegenised my "vert" then, did a transformation to that matrix then i just re-patched.

Answer by Matt J on 13 Oct 2012

Couldn't you just transform all of the vertices and recreate the patch? E.g.,

vert_translated=bsxfun(@plus, vert, [3,0,0]);

P=patch('Faces',faces,'Vertices',vert_translated,'FaceColor','r');

Note that invertible linear/affine transformations don't change the faces.

Answer by Matt J on 13 Oct 2012

Instead of using PATCH, you could also consider using these 2 FEX files,

http://www.mathworks.com/matlabcentral/fileexchange/9261-plot-2d3d-region

So first, this willl let you obtain your polyhedron as a set of inequalities A*x<=b

[A,b]=lcon2vert(vert);

Now you can transform the polyhedron as you like by appropriately transforming A and b. In the case of your translation, this would be

Anew=A; bnew=b-A*[3;0;0];

Finally, you can plot using the plotregion() tool

plotregion(-Anew,-bnew);

## 2 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/50705#comment_104912

What would the homogenous matrix consist of? For example are you looking to render it into a matrix? If so what value do you want at each location, taking into account that the polygon would in general be colored ?

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/50705#comment_104913

I need it homogeneous in order to aply geométric transformatrions to my polygon. I have this at the moment:

'I need that P to be the homogeneous matrix so i can apply the geométric transformation to it by doing B=translation(3,0,0)*P (For example)

B is the new polygon transformed.

thanks