mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-05 04:20:38 +08:00
add transform function with another output stl
This commit is contained in:
parent
18a85e93f6
commit
32b3435e06
@ -202,6 +202,7 @@ extern void stl_mirror_xy(stl_file *stl);
|
||||
extern void stl_mirror_yz(stl_file *stl);
|
||||
extern void stl_mirror_xz(stl_file *stl);
|
||||
extern void stl_transform(stl_file *stl, float *trafo3x4);
|
||||
extern void stl_transform(stl_file const *stl_src, stl_file *stl_dst, float const *trafo3x4);
|
||||
extern void stl_open_merge(stl_file *stl, ADMESH_CHAR *file);
|
||||
extern void stl_invalidate_shared_vertices(stl_file *stl);
|
||||
extern void stl_generate_shared_vertices(stl_file *stl);
|
||||
|
@ -203,6 +203,27 @@ void stl_transform(stl_file *stl, float *trafo3x4) {
|
||||
calculate_normals(stl);
|
||||
}
|
||||
|
||||
void stl_transform(stl_file const *stl_src, stl_file *stl_dst, float const *trafo3x4) {
|
||||
int i_face, i_vertex, i, j;
|
||||
if (stl_src->error || stl_dst->error)
|
||||
return;
|
||||
stl_dst->stats.number_of_facets = stl_src->stats.number_of_facets;
|
||||
stl_allocate(stl_dst);
|
||||
for (i_face = 0; i_face < stl_src->stats.number_of_facets; ++ i_face) {
|
||||
stl_vertex const *vertices_src = stl_src->facet_start[i_face].vertex;
|
||||
stl_vertex *vertices_dst = stl_dst->facet_start[i_face].vertex;
|
||||
for (i_vertex = 0; i_vertex < 3; ++ i_vertex) {
|
||||
stl_vertex* v_dst = &vertices_dst[i_vertex];
|
||||
stl_vertex const * v_src = &vertices_src[i_vertex];
|
||||
v_dst->x = trafo3x4[0] * v_src->x + trafo3x4[1] * v_src->y + trafo3x4[2] * v_src->z + trafo3x4[3];
|
||||
v_dst->y = trafo3x4[4] * v_src->x + trafo3x4[5] * v_src->y + trafo3x4[6] * v_src->z + trafo3x4[7];
|
||||
v_dst->z = trafo3x4[8] * v_src->x + trafo3x4[9] * v_src->y + trafo3x4[10] * v_src->z + trafo3x4[11];
|
||||
}
|
||||
}
|
||||
stl_get_size(stl_dst);
|
||||
calculate_normals(stl_dst);
|
||||
}
|
||||
|
||||
void
|
||||
stl_rotate_x(stl_file *stl, float angle) {
|
||||
int i;
|
||||
|
Loading…
x
Reference in New Issue
Block a user