mirror of https://github.com/CGAL/cgal
Merge pull request #4194 from sgiraudot/Demo-Improve_affine_transform_point_set-GF
Demo: Improve affine transform on point sets
This commit is contained in:
commit
f35900fc4f
|
|
@ -591,24 +591,20 @@ void Polyhedron_demo_affine_transform_plugin::end(){
|
||||||
}
|
}
|
||||||
else if(transform_points_item)
|
else if(transform_points_item)
|
||||||
{
|
{
|
||||||
const Point_set *base_ps = transform_points_item->getBase()->point_set();
|
Scene_points_with_normal_item* new_item
|
||||||
Point_set* new_ps = new Point_set();
|
= new Scene_points_with_normal_item (*(transform_points_item->getBase()));
|
||||||
new_ps->reserve(base_ps->size());
|
Point_set* new_ps = new_item->point_set();
|
||||||
CGAL::qglviewer::Vec c = transform_points_item->center();
|
CGAL::qglviewer::Vec c = transform_points_item->center();
|
||||||
for(Point_set::const_iterator it = base_ps->begin(); it != base_ps->end(); ++ it)
|
|
||||||
|
for(Point_set::Index idx : *new_ps)
|
||||||
{
|
{
|
||||||
QVector3D vec = transform_matrix * QVector3D(base_ps->point(*it).x() - c.x,
|
QVector3D vec = transform_matrix * QVector3D(new_ps->point(idx).x() - c.x,
|
||||||
base_ps->point(*it).y() - c.y,
|
new_ps->point(idx).y() - c.y,
|
||||||
base_ps->point(*it).z() - c.z);
|
new_ps->point(idx).z() - c.z);
|
||||||
new_ps->insert(Kernel::Point_3 (vec.x(), vec.y(), vec.z()));
|
new_ps->point(idx) = Kernel::Point_3 (vec.x(), vec.y(), vec.z());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Scene_points_with_normal_item* new_item=new Scene_points_with_normal_item();
|
|
||||||
for(Point_set::const_iterator it = new_ps->begin(); it != new_ps->end(); ++ it)
|
|
||||||
new_item->point_set()->insert(new_ps->point(*it));
|
|
||||||
new_item->setName(tr("%1_transformed").arg(transform_points_item->getBase()->name()));
|
new_item->setName(tr("%1_transformed").arg(transform_points_item->getBase()->name()));
|
||||||
|
|
||||||
scene->replaceItem(tr_item_index,new_item);
|
scene->replaceItem(tr_item_index,new_item);
|
||||||
delete transform_points_item;
|
delete transform_points_item;
|
||||||
transform_points_item = NULL;
|
transform_points_item = NULL;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue