Taper Sweep Surface
===================

Functionality
-------------

This node generates a surface by sweeping a curve (called "profile") along an
axis. While the curve is moved, it is scaled according to another curve (called
"taper curve").

This node is a generalization of "revolution surface" node: when the "profile"
curve is a circle, this node will generate a revolution surface from "taper"
curve.

Domain / parametrization specifics: Domain along U parameter is the same as
domain of the "profile" curve. Domain along V parameter is the same as the
domain of the "taper" curve.

Inputs
------

This node has the following inputs:

* **Profile**. The profile curve. This input is mandatory.
* **Taper**. The taper curve. This input is mandatory.
* **Point**. The point on the taper axis line. The default value is `(0, 0, 0)`.
* **Direction**. The directing vector of the taper axis line. The default value is `(0, 0, 1)` (Z axis).

Parameters
----------

This node has the following parameters:

* **NURBS**. If enabled, the node will expect NURBS (or NURBS-like) curves as
  input, and output a NURBS surface. Otherwise, the node can process arbitrary
  curves, and will output a generic Surface object. Unchecked by default.
* **Scale**. This defines the scale of resulting surface in the plane
  perpendicular to taper axis. The available options are:

   * **Unit**.
   * **Profile**. The surface will be scaled in order to match the profile curve.
   * **Taper**. The surface will be scaled in order to match the taper curve.

Outputs
-------

This node has the following output:

* **Surface**. The generated surface.

Example of usage
----------------

The taper curve is generated by "filleting" some line; the profile curve is filleted square:

.. image:: https://user-images.githubusercontent.com/284644/79348542-8ee88080-7f4e-11ea-972b-50b9d6909734.png

Example of NURBS mode:

.. image:: https://user-images.githubusercontent.com/284644/128603194-ae5b6c3f-a4f8-43ae-89f9-00bb0ac05953.png

