Skip to content

Commit 81bdf1a

Browse files
author
RubioJr9
committed
Widget scale based on diagonal. Superquadric corner is set to fixed size
1 parent 39c954a commit 81bdf1a

File tree

2 files changed

+11
-22
lines changed

2 files changed

+11
-22
lines changed

src/Graphics/Widgets/BoundingBoxWidget.cc

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/Graphics/Widgets/BoundingBoxWidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ namespace SCIRun {
5151
const std::vector<Core::Geometry::Vector>& scaledEigvecs);
5252
void makeCylinders(const GeneralWidgetParameters& gen, const CommonWidgetParameters& params,
5353
WidgetBase& widget);
54-
void makeCornerSpheres(const GeneralWidgetParameters& gen, const CommonWidgetParameters& params,
54+
void makeCornerSuperquadrics(const GeneralWidgetParameters& gen, const CommonWidgetParameters& params,
5555
WidgetBase& widget);
5656
void makeFaceSpheres(const GeneralWidgetParameters& gen, const CommonWidgetParameters& params,
5757
WidgetBase& widget);

0 commit comments

Comments
 (0)