How do I create an image of a 3d polygon that is always orthogonal to the polygon?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
Richard Brown
2013 年 6 月 24 日
Are you wanting a way of transforming the polygon coordinates, or a way of setting the camera viewpoint?
回答 (1 件)
Roger Stafford
2013 年 6 月 24 日
編集済み: Roger Stafford
2013 年 6 月 24 日
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)
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!