private static Vector3 CalcAdvancedCenterPrim(this ObjectPart.PrimitiveShape.Decoded shape, double twistBegin, double twistEnd, double cut)
        {
            double twist;
            double angle = 0.0.Lerp(shape.Revolutions * 2 * Math.PI, cut);
            var    taper = new Vector3();
            double radiusOffset;

            twist = twistBegin.Lerp(twistEnd, cut);

            #region taper
            taper.X = shape.Taper.X < 0f ?
                      1.0.Lerp(1 + shape.Taper.X, 1f - cut) :
                      1.0.Lerp(1 - shape.Taper.X, cut);

            taper.Y = shape.Taper.Y < 0f ?
                      1.0.Lerp(1 + shape.Taper.Y, 1f - cut) :
                      1.0.Lerp(1 - shape.Taper.Y, cut);
            #endregion

            #region radius offset
            radiusOffset = shape.RadiusOffset > 0f ?
                           1.0.Lerp(1 - shape.RadiusOffset, 1f - cut) :
                           1.0.Lerp(1 + shape.RadiusOffset, cut);
            #endregion

            /* generate extrusions */
            return(shape.CalcAdvVertex(Vector3.Zero, angle, twist, cut, taper, radiusOffset));
        }
        private static List <Vector3> ExtrudeAdvanced(this ProfileDetails path, ObjectPart.PrimitiveShape.Decoded shape, double twistBegin, double twistEnd, double cut)
        {
            var    extrusionPath = new List <Vector3>();
            double twist;
            double angle = 0.0.Lerp(shape.Revolutions * 2 * Math.PI, cut);
            var    taper = new Vector3();
            double radiusOffset;

            twist = twistBegin.Lerp(twistEnd, cut);

            #region taper
            taper.X = shape.Taper.X < 0f ?
                      1.0.Lerp(1 + shape.Taper.X, 1f - cut) :
                      1.0.Lerp(1 - shape.Taper.X, cut);

            taper.Y = shape.Taper.Y < 0f ?
                      1.0.Lerp(1 + shape.Taper.Y, 1f - cut) :
                      1.0.Lerp(1 - shape.Taper.Y, cut);
            #endregion

            #region radius offset
            radiusOffset = shape.RadiusOffset > 0f ?
                           1.0.Lerp(1 - shape.RadiusOffset, 1f - cut) :
                           1.0.Lerp(1 + shape.RadiusOffset, cut);
            #endregion

            /* generate extrusions */
            foreach (var vertex in path.Vertices)
            {
                extrusionPath.Add(shape.CalcAdvVertex(vertex, angle, twist, cut, taper, radiusOffset));
            }
            return(extrusionPath);
        }