Rounding corners: how to calculate filet radius?

How to find the maximum rounding that I can apply to any corner for any amount of rounding in another corner?

Answers to questions from comments:

1) The inner and outer large arcs (those that are 90 degrees wide) always have the same center

2) When asking for the maximum rounding you can do, what are the restrictions on another smaller circle? Do I need to be at least a radius? Otherwise, you make only one rounding end.

One of two radii of a circle is given. I can not find other restrictions, besides the maximum of another circle. If the “fixed” angle I am referring to has zero rounding, then I am looking for maximum mining that can only be applied with a different angle.

3) What is maximum rounding? Are you trying to choose between the two examples above? Or find any of these cases considered as a solution?

Any of the cases shown is the perfect solution. For instance. in the first image, the radius of the smaller circle can be specified. Then I look for the maximum radius of the larger. These images are just examples of ideal solutions.

4) are there any restrictions on two arcs? What happens if the arcs cannot fit the full circle? Would the answer be the biggest that fits?

, ?

- , . , . piHU7ph.png bEYhY1V.png

+3
2

, ...

, ,

x = R cos(t) / (1 + cos(t))
y = R sin(t) / (1 + cos(t))

R - , t - x .

, ,

x = R cos(t) / (1 - cos(t))
y = R sin(t) / (1 - cos(t))

R - , t - ...

x. t PI/2. PI/2 . y . , , , , . , , . , ( ). . , , , - / , .

- (CGFloat)computeAngleForOuterTangentGivenY:(CGFloat)Y
{
    CGFloat y;
    double high = M_PI_2;
    double low  = 0;
    double mid  = M_PI_4;

    while ( high - low > 1e-9 )
    {
        y = (self.outerRadius * sin( mid )) / (1.0 + cos( mid ));
        if ( y > Y )
            high = mid;
        else
            low = mid;
        mid = (low + high) / 2.0;
    }

    return( mid );
}

- (CGFloat)computeAngleForInnerTangentGivenY:(CGFloat)Y
{
    CGFloat y;
    double high = M_PI_2;
    double low  = 0;
    double mid  = M_PI_4;

    while ( high - low > 1e-9 )
    {
        y = (self.innerRadius * sin( mid )) / (1.0 - cos( mid ));
        if ( y > Y )
            low = mid;
        else
            high = mid;
        mid = (low + high) / 2.0;
    }

    return( mid );
}

, , 30 .

, , y, , . t y, / , x, .

0

, . , , , , , , . , . , B C, B ( ) A C ( ) D. BC 10, B C 4, 2 , 4 A, 4 D.

In addition, the maximum cap radius for C is limited not only by the radius of the ball BC and B, but also by the wing radius of CD and D.

0
source

All Articles