void SpindleTorus::Compute_BBox() { DBL r1, r2; if (mSpindleMode & NonSpindleVisible) { r1 = MinorRadius; r2 = MajorRadius + MinorRadius; Make_BBox(BBox, -r2, -r1, -r2, 2.0 * r2, 2.0 * r1, 2.0 * r2); Recompute_BBox(&BBox, Trans); } else { Precompute(); // make sure mSpindleTipYSqr is properly set if (mSpindleTipYSqr >= 0) { r1 = sqrt(mSpindleTipYSqr); r2 = MinorRadius - MajorRadius; Make_BBox(BBox, -r2, -r1, -r2, 2.0 * r2, 2.0 * r1, 2.0 * r2); Recompute_BBox(&BBox, Trans); } else { Make_BBox(BBox, -BOUND_HUGE/2.0, -BOUND_HUGE/2.0, -BOUND_HUGE/2.0, BOUND_HUGE, BOUND_HUGE, BOUND_HUGE); } } }
void Compute_IsoSurface_BBox(ISOSURFACE* IsoSurface) { if(IsoSurface->container_shape != 0) { Make_BBox(IsoSurface->BBox, IsoSurface->container.sphere.center[X] - IsoSurface->container.sphere.radius, IsoSurface->container.sphere.center[Y] - IsoSurface->container.sphere.radius, IsoSurface->container.sphere.center[Z] - IsoSurface->container.sphere.radius, IsoSurface->container.sphere.radius * 2, IsoSurface->container.sphere.radius * 2, IsoSurface->container.sphere.radius * 2); } else { // [ABX 20.01.2004] Low_Left introduced to hide BCC 5.5 bug BBOX_VECT& Low_Left = IsoSurface->BBox.Lower_Left; Assign_BBox_Vect(Low_Left, IsoSurface->container.box.corner1); VSub(IsoSurface->BBox.Lengths, IsoSurface->container.box.corner2, IsoSurface->container.box.corner1); } if(IsoSurface->Trans != NULL) { Recompute_BBox(&IsoSurface->BBox, IsoSurface->Trans); } }
void Lathe::Compute_BBox() { Make_BBox(BBox, -Radius2, Height1, -Radius2, 2.0 * Radius2, Height2 - Height1, 2.0 * Radius2); Recompute_BBox(&BBox, Trans); }
void Parametric::Compute_BBox() { if(container_shape != 0) { Make_BBox(BBox, container.sphere.center[X] - container.sphere.radius, container.sphere.center[Y] - container.sphere.radius, container.sphere.center[Z] - container.sphere.radius, container.sphere.radius * 2, container.sphere.radius * 2, container.sphere.radius * 2); } else { // [ABX 20.01.2004] Low_Left introduced to hide BCC 5.5 bug BBOX_VECT& Low_Left = BBox.Lower_Left; Assign_BBox_Vect(Low_Left, container.box.corner1); VSub(BBox.Lengths, container.box.corner2, container.box.corner1); } if(Trans != NULL) { Recompute_BBox(&BBox, Trans); } }
void Compute_Parametric_BBox(PARAMETRIC* Param) { if(Param->container_shape != 0) { Make_BBox(Param->BBox, Param->container.sphere.center[X] - Param->container.sphere.radius, Param->container.sphere.center[Y] - Param->container.sphere.radius, Param->container.sphere.center[Z] - Param->container.sphere.radius, Param->container.sphere.radius * 2, Param->container.sphere.radius * 2, Param->container.sphere.radius * 2); } else { // [ABX 20.01.2004] Low_Left introduced to hide BCC 5.5 bug BBOX_VECT& Low_Left = Param->BBox.Lower_Left; Assign_BBox_Vect(Low_Left, Param->container.box.corner1); VSub(Param->BBox.Lengths, Param->container.box.corner2, Param->container.box.corner1); } if(Param->Trans != NULL) { Recompute_BBox(&Param->BBox, Param->Trans); } }
void IsoSurface::Compute_BBox() { container->ComputeBBox(BBox); if(Trans != NULL) { Recompute_BBox(&BBox, Trans); } }
void Sphere::Compute_BBox() { Make_BBox(BBox, Center[X] - Radius, Center[Y] - Radius, Center[Z] - Radius, 2.0 * Radius, 2.0 * Radius, 2.0 * Radius); if(Trans != NULL) { Recompute_BBox(&BBox, Trans); } }
void Disc::Compute_BBox() { DBL rad; rad = sqrt(oradius2); Make_BBox(BBox, -rad, -rad, -SMALL_TOLERANCE, 2.0*rad, 2.0*rad, 2.0*SMALL_TOLERANCE); Recompute_BBox(&BBox, Trans); }
static void Compute_Disc_BBox(DISC *Disc) { DBL rad; rad = sqrt(Disc->oradius2); Make_BBox(Disc->BBox, -rad, -rad, -Small_Tolerance, 2.0*rad, 2.0*rad, 2.0*Small_Tolerance); Recompute_BBox(&Disc->BBox, Disc->Trans); }
void Torus::Compute_BBox() { DBL r1, r2; r1 = MinorRadius; r2 = MajorRadius + MinorRadius; Make_BBox(BBox, -r2, -r1, -r2, 2.0 * r2, 2.0 * r1, 2.0 * r2); Recompute_BBox(&BBox, Trans); }
void Compute_Box_BBox(BOX *Box) { // [ABX 20.01.2004] Low_Left introduced to hide BCC 5.5 bug BBOX_VECT& Low_Left = Box->BBox.Lower_Left; Assign_BBox_Vect(Low_Left, Box->bounds[0]); VSub(Box->BBox.Lengths, Box->bounds[1], Box->bounds[0]); if (Box->Trans != NULL) { Recompute_BBox(&Box->BBox, Box->Trans); } }
static void Transform_Quadric(OBJECT *Object, TRANSFORM *Trans) { QUADRIC *Quadric=(QUADRIC *)Object; MATRIX Quadric_Matrix, Transform_Transposed; Quadric_To_Matrix (Quadric, Quadric_Matrix); MTimesB (Trans->inverse, Quadric_Matrix); MTranspose (Transform_Transposed, Trans->inverse); MTimesA (Quadric_Matrix, Transform_Transposed); Matrix_To_Quadric (Quadric_Matrix, Quadric); Recompute_BBox(&Object->BBox, Trans); }
void Lemon::Compute_BBox() { DBL m = inner_radius+HorizontalPosition; //HorizontalPosition is negative if ( VerticalPosition < 0) { m = base_radius; } if ( VerticalPosition > 1) { m = apex_radius; } Make_BBox(BBox, -m, -m, 0.0, 2.0*m, 2.0*m, 1.0); Recompute_BBox(&BBox, Trans); }
void Ovus::Compute_BBox() { // Compute the biggest vertical cylinder radius DBL biggest; biggest = ConnectingRadius - HorizontalPosition; if (biggest < BottomRadius) { biggest = BottomRadius; } if (biggest < TopRadius) { biggest = TopRadius; } Make_BBox(BBox, -biggest, -BottomRadius, -biggest, 2.0 * biggest, 2.0 * BottomRadius + TopRadius, 2.0 * biggest); Recompute_BBox(&BBox, Trans); }
void Fractal::Compute_BBox() { DBL R; switch (Algebra) { case QUATERNION_TYPE: R = 1.0 + sqrt(Sqr(Julia_Parm[X]) + Sqr(Julia_Parm[Y]) + Sqr(Julia_Parm[Z]) + Sqr(Julia_Parm[T])); R += Fractal_Tolerance; /* fix bug when Julia_Parameter exactly 0 */ if (R > 2.0) { R = 2.0; } Exit_Value = Sqr(R) + Fractal_Tolerance; break; case HYPERCOMPLEX_TYPE: default: R = 4.0; Exit_Value = 16.0; break; } Radius_Squared = Sqr(R); Make_BBox(BBox, -R, -R, -R, 2.0 * R, 2.0 * R, 2.0 * R); Recompute_BBox(&BBox, Trans); }
void Compute_Cone_BBox(CONE *Cone) { Make_BBox(Cone->BBox, -1.0, -1.0, Cone->dist, 2.0, 2.0, 1.0-Cone->dist); Recompute_BBox(&Cone->BBox, Cone->Trans); }
void Cone::Compute_BBox() { Make_BBox(BBox, -1.0, -1.0, dist, 2.0, 2.0, 1.0-dist); Recompute_BBox(&BBox, Trans); }
void Superellipsoid::Compute_BBox() { Make_BBox(BBox, -1.0001, -1.0001, -1.0001, 2.0002, 2.0002, 2.0002); Recompute_BBox(&BBox, Trans); }