# Generalized Solids of Revolution

## 4. Properties of Generalized Solids of Revolution

Solids of revolution have some nice properties. In process of generalization several of them change (become optional or lost), others are left unchanged. In this chapter, we will take a closer look to those more interesting of them.

### 4.1 Generalized Solids of Revolution as 2.5D Object

2.5D object is three-dimensional object with one nice property: every point of surface has own two-dimensional coordinates (usually referred as u and v). This property is also present in generalized solids of revolution. The u coordinate is determined by position of point on generalized conic. Zero u coordinate has intersection point, the rest is marked in counterclockwise order. The v coordinate is common for all points of one generalized conic and differs for different ones.

Determining u coordinates for points of multifocal curve is not an easy task. Correct computation should ensure u coordinate values to be proportional to distances along curve. Many generalized conics are similar to circle, so first approach is to estimate u coordinate values from polar coordinates. This works perfectly for a circle, but is not so suitable for more complex (especially non-symmetrical) shapes. It is also dependent on choice of start of coordinate system. The aim is to choose geometrical center of curve interior. In neighboring slices, centers' positions should be correlated to avoid jerky changes in u coordinates.

To approximate distances on generalized conic with polygon, many samples are needed. To decrease computational costs, we need to approximate curve between two samples better than by straight line. Curvature of curve segment between samples can be approximated using gradients at sample points. Length of circular arc with radius equal to curvature radius is used to approximate length of segment. Testing has shown, that this approach gives 0.3% to 0.5% error for eight samples. For 50 samples (typical final mesh density) was less than one thousandth of percent.

The situation with v coordinates can be worse. With general form of generalized solids of revolution, it is not possible to just take parameter from input curve and use it as v coordinate. When leading curve parameter is chosen, several different generalized conics would have assigned the same value. Taking only rotated curve parameter, several slices can intersect with the same point of curve. Therefore, a combination of both is needed to produce correct v coordinate values. The solution is to use distance function (chapter 5.1) or slice-choosing curve (chapter 5.3) instead of rotated curve. Then a parameter of distance function (or slice-choosing curve) is a suitable value for v coordinate of generalized curve.

### 4.2 Gaps

Solids of revolution have only one reason of having gaps - rotated curve was discontinuous. Generalized solids of revolution have several more reasons why to contain gaps (gaps can also be forced manually by proper set-up of slices).

#### 4.2.1 Discontinuity of leading curve

Discontinuous leading curve causes discontinuous object. Each segment of leading curve generates standalone segment of generalized solid of revolution. However, in some special cases, usually with straight leading curve, jumping of leading curve does not cause discontinuities.

#### 4.2.2 Tangent of leading curve does not exist

Due missing tangent of leading curve, orientation of slice cannot be determined. This causes one slice thick local discontinuity. If necessary, object can be interpolated over this gap. Blend of tangents in neighboring slices can be used to produce usable normal.

#### 4.2.3 No foci in slice

When slicing plane misses all axes, there are no foci and therefore no generalized conic in the slice.

#### 4.2.4 Infinite number of intersection points in slice

Intersections of slicing plane and rotated curve can be a point or whole part of a curve. Taking all point of intersection leads into infinite summation. There is wide range of possible solutions. One point of curve can be chosen to act as foci, or distance is measured as minimum distance from curve. Probably the simplest solution is to declare such slice illegal (in other words, to generate local discontinuity).

#### 4.2.5 No intersection of rotated curve and slice

Where is no intersection, no generalized conic can be. Unlike previous discontinuities, this case usually does not create local discontinuity.

#### 4.2.6 Value of distance function is too small

When value of distance function is smaller than minimum value in the slice, no generalized conic is created. When value is equal to minimum, a degenerated generalized conic occurs (see chapter 3.2).

#### 4.2.7 Change in number of foci

Whenever change in number of foci with nonzero weights occurs, shapes of generalized conics in neighboring slices becomes non-matching. Such slice creates border between two discontinuous segments.

#### 4.2.8 Discontinuous change in weights of foci

Similar to previous case, also step change in weights of generalized conics causes discontinuity. The exception is case, when two foci share position and change in one weight is compensated in weight change of second focus.