Exemplo n.º 1
0
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);
        }
    }
}
Exemplo n.º 2
0
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);
	}
}
Exemplo n.º 3
0
void Lathe::Compute_BBox()
{
    Make_BBox(BBox, -Radius2, Height1, -Radius2,
              2.0 * Radius2, Height2 - Height1, 2.0 * Radius2);

    Recompute_BBox(&BBox, Trans);
}
Exemplo n.º 4
0
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);
	}
}
Exemplo n.º 5
0
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);
	}
}
Exemplo n.º 6
0
void IsoSurface::Compute_BBox()
{
    container->ComputeBBox(BBox);
    if(Trans != NULL)
    {
        Recompute_BBox(&BBox, Trans);
    }
}
Exemplo n.º 7
0
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);
    }
}
Exemplo n.º 8
0
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);
}
Exemplo n.º 9
0
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);
}
Exemplo n.º 10
0
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);
}
Exemplo n.º 11
0
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);
  }
}
Exemplo n.º 12
0
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);
}
Exemplo n.º 13
0
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);
}
Exemplo n.º 14
0
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);
}
Exemplo n.º 15
0
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);
}
Exemplo n.º 16
0
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);
}
Exemplo n.º 17
0
void Cone::Compute_BBox()
{
    Make_BBox(BBox, -1.0, -1.0, dist, 2.0, 2.0, 1.0-dist);

    Recompute_BBox(&BBox, Trans);
}
Exemplo n.º 18
0
void Superellipsoid::Compute_BBox()
{
    Make_BBox(BBox, -1.0001, -1.0001, -1.0001, 2.0002, 2.0002, 2.0002);

    Recompute_BBox(&BBox, Trans);
}