Introduction
In the previous lesson, you created implicit geometry using mathematical functions and primitives, where each shape was defined by a function evaluated throughout space. Curves are represented differently. A curve defines a path through space using exact, explicit coordinates, similar to how traditional CAD systems represent curves. The Curves section in nTop includes many blocks for creating and modifying curves. Rather than covering every available block, this lesson focuses on several foundational curve-creation methods and demonstrates how to establish parametric relationships between them. These concepts will give you a framework to apply when working with other curve blocks. In this lesson, you will learn why curves are represented explicitly within an implicit modeling environment and how to create fully parametric curves.Explicit Yet Parametric: How nTop Represents Curves
A curve also has a field. As introduced in Course 1: Modeling with Signed Distance Fields, every curve includes a Scalar Field property that represents the distance from any point in space to the nearest point on the curve. This field is useful and will be applied later in this lesson. However, the field describes only the distance to the curve. It does not define the curve’s path, including where it begins, where it ends, or how it bends. A field is evaluated at a point in space; it does not store the path itself. To define this path, nTop uses explicit coordinates, similar to a boundary representation (B-rep) CAD system. For this reason, nTop provides several curve-creation blocks, including Line, Line by Direction, Polyline, Polycurve from Curves, Spline by Control Points, Spline through Points, and Spline by Tangents. Each block provides a different way to define a curve from explicit geometric information.
Building a Curve from Two Points: Line
The Line block creates the simplest curve in nTop. Search for the block in the Ribbon and add it to your Notebook. The block has two inputs, Point 1 and Point 2, with default coordinates. Modify either point to update the line.
Parameterizing a Curve: Line by Direction
The Line block is useful when you know the exact coordinates of both endpoints. However, controlling the line’s length or orientation through two independent points can make parameterization unnecessarily complex. For greater control, use the Line by Direction block.
- Point — Defines the line’s origin.
- Direction — Controls the line’s orientation.
- Length — Sets the total length of the line.
- Centered — Determines whether the line extends from the origin in one direction or is centered about it.
Encoding Design Intent with Trigonometry
You don’t need to define explicit geometry with manually entered coordinates. A curve remains explicit when its points are calculated from formulas; its coordinates simply update as the formula inputs change. Trigonometry provides a direct way to encode this behavior by converting an angle and a known length into precise dimensions.Creating a Right Triangle from One Angle and One Length
Now we will create a right triangle controlled by two variables: the length of its hypotenuse and the angle between the hypotenuse and the X axis. If you parameterize it correctly, the adjacent and opposite leg lengths will update automatically.- Add a Line by Direction block.
- Set Point to the Origin variable at (0, 0, 0).
- Set Direction to (1, 0, 0) to align the line with the X axis.
- Create a variable named Hypotenuse Length and set its value to 120 mm. Assign this variable to the line’s Length input.

- Add a Rotate Object block, drag your created Line by Direction block to its Object input, and make the block a variable named Hypotenuse.
- Set Rotation Center to the Origin variable.
- Set Axis to (0, 0, 1) to rotate the line about the Z axis.
- Create a variable named Hypotenuse Angle and set its value to 35 deg. Assign this variable to the Angle input.

- Adjacent leg length = hypotenuse length × Cos(hypotenuse angle)
- Opposite leg length = hypotenuse length × Sin(hypotenuse angle)

- Add a Line by Direction block and make it a variable named the Adjacent Leg.
- Set Point to the Start Point property of the Hypotenuse.
- Set Direction to (1, 0, 0).
- Set Length to the calculated Adjacent Leg Length.

- Add another Line by Direction block and make it a variable named the Opposite Leg.
- Set Point to the adjacent leg’s End Point property.
- Set Direction to (0, 1, 0).
- Set Length to the calculated Opposite Leg Length.

- Add a Polycurve from Curves block.
- Add the following curves to its list:
- Adjacent Leg
- Opposite Leg
- Hypotenuse


An Equivalent Approach: Polyline from Explicit Points
You can create the same triangle with a Polyline block. Instead of constructing three individual line segments, this approach calculates the triangle’s vertices and connects them in sequence. Using the same variables and trigonometric relationships, define the vertices as follows by creating three Point blocks using the coordinates below. Use math expressions to calculate the required X and Y components.- Point 1: (0, 0, 0)

- Point 2: (Hypotenuse Length × Cos(Hypotenuse Angle), 0, 0)

- Point 3: (Hypotenuse Length × Cos(Hypotenuse Angle), Hypotenuse Length × Sin(Hypotenuse Angle), 0)

- Add a Polyline block.
- Add the points to its list in the following order:
- Point 1
- Point 2
- Point 3
- Point 1
- Repeat Point 1 as the final entry to close the triangle.


What to Take Away
- Curves are represented by explicit coordinates that define their path through space, even though each curve also provides a Scalar Field representing distance to the curve.
- Explicit geometry can still be fully parametric when coordinates, dimensions, and orientations are controlled by variables, expressions, and referenced properties.
- Mathematical relationships, including trigonometric expressions, allow related curve dimensions to update automatically while preserving design intent.
- Referencing curve properties, such as Start Point and End Point, keeps connected geometry aligned as input parameters change.
- Use Polycurve from Curves to combine separate curve segments and Polyline to connect an ordered sequence of points.
- Closed curves can be converted into profiles with Profile from Curves, providing the foundation for 3D operations such as Extrude, Revolve, and Sweep.

