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

2 vues (au cours des 30 derniers jours)
Joshua
Joshua le 24 Juin 2013
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.
  1 commentaire
Richard Brown
Richard Brown le 24 Juin 2013
Are you wanting a way of transforming the polygon coordinates, or a way of setting the camera viewpoint?

Connectez-vous pour commenter.

Réponses (1)

Roger Stafford
Roger Stafford le 24 Juin 2013
Modifié(e) : Roger Stafford le 24 Juin 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