Translate rotate and scale STL surfaces
96 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I imported three STL files (3d) as patch data. I merged nodes. These objects can be plotted with faces and vertices. My next step is to rotate, translate and scale one surface to two surfaces based on vertices. Vizually, I know where should be insertion points of fitted surface to two surfaces.
What would be steps to perform these operations?
1 commentaire
Brice Kabore
le 11 Mai 2020
Modifié(e) : Brice Kabore
le 11 Mai 2020
For translation
[V, F]=stlread("isopoison.stl"); %although the new stlread version gives a different structure
P=(8,0,0)% translate in x by 8
V = V+ P
For scaling
scale=2.0
V=V*scale% or V(:,1)=V(:,1)*scale
For rotatation you can use this function basically creating a rotation matrix that will be multiplied by V which contain your vertices indice is the axis, 1 for x axis 2 for y ...
function vertex = rotation(V, indice, angle)
% [V, F]=stlread("isopoison.stl");
% angle=-pi/2;
Rz = [ cos(angle), -sin(angle), 0 ;
sin(angle), cos(angle), 0 ;
0, 0, 1 ];
Ry = [ cos(angle), 0, sin(angle) ;
0, 1, 0 ;
-sin(angle), 0, cos(angle) ];
Rx = [ 1, 0, 0 ;
0, cos(angle), -sin(angle);
0, sin(angle), cos(angle) ];
if(indice==1)
vertex = V*Rx;
end
if(indice==2)
vertex = V*Ry;
end
if(indice==3)
vertex = V*Rz;
end
end
Réponses (1)
KSSV
le 30 Jan 2019
You need to know about geometric transformations...read here https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/geometry/geo-tran.html
2 commentaires
Voir également
Catégories
En savoir plus sur Point Cloud Processing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!