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

.. image:: https://github.com/nortikin/sverchok/assets/14288520/5a8f14b8-0153-4e0f-82f1-695a260fbda8
  :target: https://github.com/nortikin/sverchok/assets/14288520/5a8f14b8-0153-4e0f-82f1-695a260fbda8

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.

.. image:: https://github.com/nortikin/sverchok/assets/14288520/73e940f8-905e-4895-8381-ee68c8cadf21
  :target: https://github.com/nortikin/sverchok/assets/14288520/73e940f8-905e-4895-8381-ee68c8cadf21

* Surfaces-> :doc:`Evaluate Surface </nodes/surface/evaluate_surface>`
* Viz-> :doc:`Viewer Draw </nodes/viz/viewer_draw_mk4>`
* Scene-> :doc:`Bezier Input </nodes/exchange/bezier_in>`

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.

  .. image:: https://github.com/nortikin/sverchok/assets/14288520/15cf3458-dab7-40ab-922d-55d2f073a6dc
    :target: https://github.com/nortikin/sverchok/assets/14288520/15cf3458-dab7-40ab-922d-55d2f073a6dc

* **Taper**. The taper curve. This input is mandatory.

  .. image:: https://github.com/nortikin/sverchok/assets/14288520/553c9b30-be0a-4502-afba-d8c85e5703cb
    :target: https://github.com/nortikin/sverchok/assets/14288520/553c9b30-be0a-4502-afba-d8c85e5703cb

* **Point**. The point on the taper axis line. The default value is `(0, 0, 0)`.

.. image:: https://github.com/nortikin/sverchok/assets/14288520/30f336a7-a713-4565-9239-e240869cb302
  :target: https://github.com/nortikin/sverchok/assets/14288520/30f336a7-a713-4565-9239-e240869cb302

* **Direction**. The directing vector of the taper axis line. The default value is `(0, 0, 1)` (Z axis).

  .. image:: https://github.com/nortikin/sverchok/assets/14288520/432bb030-5e6e-4dad-adc8-d72de150423d
    :target: https://github.com/nortikin/sverchok/assets/14288520/432bb030-5e6e-4dad-adc8-d72de150423d

  * Vector-> :doc:`Vector Polar Input </nodes/vector/vector_polar_in>`
  * Generator-> :doc:`Line </nodes/generator/line_mk4>`

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.

      .. image:: https://github.com/nortikin/sverchok/assets/14288520/81d460d6-8f67-4f9b-b5bb-ddc569625c79
        :target: https://github.com/nortikin/sverchok/assets/14288520/81d460d6-8f67-4f9b-b5bb-ddc569625c79

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
  :target: https://user-images.githubusercontent.com/284644/79348542-8ee88080-7f4e-11ea-972b-50b9d6909734.png

* Generator-> :doc:`NGon </nodes/generator/ngon>`
* Curves->Curve Primitives-> :doc:`Fillet Polyline </nodes/curve/fillet_polyline>`
* Surfaces-> :doc:`Evaluate Surface </nodes/surface/evaluate_surface>`
* Vector-> :doc:`Vector sort </nodes/vector/vertices_sort>`
* Viz-> :doc:`Viewer Draw </nodes/viz/viewer_draw_mk4>`
* Scene-> :doc:`Objects In Lite </nodes/scene/objects_in_lite>`

Example of NURBS mode:

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

* Surfaces->Surface NURBS-> :doc:`Remove Excessive Knots (NURBS Surface)</nodes/surface/surface_remove_excessive_knots>`
* Surfaces->Surface NURBS-> :doc:`Deconstruct Surface </nodes/surface/deconstruct_surface>`
* Surfaces-> :doc:`Evaluate Surface </nodes/surface/evaluate_surface>`
* Viz-> :doc:`Viewer Draw </nodes/viz/viewer_draw_mk4>`
* Scene-> :doc:`Bezier Input </nodes/exchange/bezier_in>`