How do I create an image of a 3d polygon that is always orthogonal to the polygon?

2 visualizzazioni (ultimi 30 giorni)
I need to create a series of bitmap images to be analyzed by an external program. Each of these images has a 3d polygon at some random orientation. I want an automatic way to create the image in matlab so that the point of view of the image is orthogonal to the polygon.
Is there a way to do this is matlab?
I have the vertices of the polygon and the normal to it.

Risposte (1)

Roger Stafford
Roger Stafford il 24 Giu 2013
Modificato: Roger Stafford il 24 Giu 2013
Let P be a 3 by n matrix containing the coordinates of n vertices as three-element columns. Assume they are in counterclockwise order as viewed from the direction of the desired image.
vx = P(:,2)-P(:,1);
vy = cross(cross(vx,P(:,end)-P(:,1)),vx);
vx = vx/norm(vx); vy = vy/norm(vy);
P2 = [vx,vy]'*P;
Then translate P2 in the x and y directions as desired for the proper image.
P2 will be a 2 by n matrix of x-y coordinates as viewed from an orthogonal direction. The P(:,1) to P(:,2) edge will be along the x-axis. It is assumed here that P is a planar polygon.
Note: If two successive edges do not give a reliable normal direction, you may want to take the mean of all the cross products of successive edges.
Note 2: It was assumed above that vertices P(:,1) and P(:,end) were distinct vertices.
(Corrected)

Community Treasure Hunt

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

Start Hunting!

Translated by