@@ -72,8 +72,7 @@ BBoxDataHandler::BBoxDataHandler(const Point& center, const std::vector<Vector>&
7272 SCALE_AXIS_COLOR_(ColorRGB(0.469 , 0.859 , 0.906 ).toString())
7373{
7474 scaledEigvecs_ = scaledEigvecs;
75- scale_ = std::min (std::min (scaledEigvecs_[0 ].length (), scaledEigvecs_[1 ].length ()),
76- scaledEigvecs_[2 ].length ());
75+ scale_ = (scaledEigvecs_[0 ] + scaledEigvecs_[1 ] + scaledEigvecs_[2 ]).length ();
7776
7877 corners_.resize (CORNER_COUNT_);
7978 edges_.resize (EDGE_COUNT_);
@@ -334,13 +333,12 @@ void BBoxDataHandler::makeCylinders(const GeneralWidgetParameters& gen,
334333 edge->addTransformParameters <AxisTranslation>(getDirectionOfFace (4 ));
335334}
336335
337- void BBoxDataHandler::makeCornerSpheres (const GeneralWidgetParameters& gen,
338- const CommonWidgetParameters& params,
339- WidgetBase& widget)
336+ void BBoxDataHandler::makeCornerSuperquadrics (const GeneralWidgetParameters& gen,
337+ const CommonWidgetParameters& params,
338+ WidgetBase& widget)
340339{
341340 const static double cornerSphereRadius = 1.5 ;
342- const static double A = 1.5 ;
343- const static double B = 1.5 ;
341+ const static double cornerEmphasis = 0.4 ;
344342
345343 auto builder = SuperquadricWidgetBuilder (gen.base .idGenerator )
346344 .transformMapping ({{WidgetInteraction::CLICK, singleMovementWidget (WidgetMovement::SCALE)}})
@@ -350,20 +348,11 @@ void BBoxDataHandler::makeCornerSpheres(const GeneralWidgetParameters& gen,
350348 .boundingBox (params.bbox )
351349 .resolution (params.resolution );
352350
353-
354- // auto builder = SphereWidgetBuilder(gen.base.idGenerator)
355- // .transformMapping({{WidgetInteraction::CLICK, singleMovementWidget(WidgetMovement::SCALE)}})
356- // .scale(cornerSphereRadius * params.scale * scale_)
357- // .origin(params.origin)
358- // .defaultColor(SCALE_COLOR_)
359- // .boundingBox(params.bbox)
360- // .resolution(params.resolution);
361-
351+ Tensor t = Tensor (scaledEigvecs_[0 ].normal (), scaledEigvecs_[1 ].normal (), scaledEigvecs_[2 ].normal ());
362352 for (int c = 0 ; c < CORNER_COUNT_; ++c)
363353 {
364- Tensor t = Tensor (scaledEigvecs_[0 ], scaledEigvecs_[1 ], scaledEigvecs_[2 ]);
365354 corners_[c] = builder.tag (" Corner" + std::to_string (c)).centerPoint (cornerPoints_[c])
366- .tensor (t).A (A ).B (B ).build ();
355+ .tensor (t).A (cornerEmphasis ).B (cornerEmphasis ).build ();
367356 auto flipVec = cornerPoints_[c] - params.origin ;
368357 corners_[c]->addTransformParameters <Scaling>(params.origin , flipVec);
369358 }
@@ -408,10 +397,10 @@ void BBoxDataHandler::makeFaceDisks(const GeneralWidgetParameters& gen,
408397
409398 for (int f = 0 ; f < FACE_COUNT_; ++f)
410399 {
411- auto axis = getDirectionOfFace (f);
400+ auto axis = getDirectionOfFace (f). normal () ;
412401 // auto scaleAxisIndex = getIndexOfDirectionOfFace(f);
413402 faceDisks_[f] = builder.tag (" FaceDisk" + std::to_string (f))
414- .diameterPoints (facePoints_[f], facePoints_[f] + axis * params.scale * diskLengthScale)
403+ .diameterPoints (facePoints_[f], facePoints_[f] + axis * scale_ * params.scale * diskLengthScale)
415404 .build ();
416405 // faceDisks_[f]->addTransformParameters<AxisScaling>(params.origin, axis, scaleAxisIndex);
417406 // faceDisks_[f]->addTransformParameters<AxisTranslation>(axis);
@@ -423,7 +412,7 @@ BoundingBoxWidget::BoundingBoxWidget(const GeneralWidgetParameters& gen,
423412{
424413 BBoxDataHandler boxData (params.pos .center_ , params.pos .scaledEigvecs_ );
425414 boxData.makeCylinders (gen, params.common , *this );
426- boxData.makeCornerSpheres (gen, params.common , *this );
415+ boxData.makeCornerSuperquadrics (gen, params.common , *this );
427416 boxData.makeFaceSpheres (gen, params.common , *this );
428417 boxData.makeFaceDisks (gen, params.common , *this );
429418
0 commit comments