﻿ curve – Algosim documentation
Algosim documentation: curve

# curve

Plots a one-dimensional curve in ℝ² or ℝ³.

## Syntax

• `curve(data)`

• `data` is a sequence of (X, Y) points

• `curve(data)`

• `data` is a sequence of (X, Y, Z) points

• `curve(data)`

• `data` is a sequence of (X, Y, Z, colour) points

## Description

### 2D points

If `data` is a sequence of (X, Y) points, then `curve(data)` plots the curve obtained by connecting these points with straight lines.

Technically, `data` can be a plain sequence of points as function arguments, a list of points, or an n×2 real matrix in which each row represents a single point.

The curve is shown in the current diagram and a reference to the curve is returned.

The `AdjustVisual` function can be used to adjust the appearance of the curve. See Visual settings for a list of applicable settings.

### 3D points

Similarly, if `data` is a sequence of (X, Y, Z) points, then `curve(data)` plots the curve obtained by connecting these points with straight lines.

Technically, `data` can be a plain sequence of points as function arguments, a list of points, or an n×3 real matrix in which each row represents a single point.

The curve is shown in the current scene and a reference to the curve is returned.

The `AdjustVisual` function can be used to adjust the appearance of the curve. See Visual settings for a list of applicable settings.

Additionally, you can plot a curve in which each vertex has its own colour. To do this, let `data` be a sequence of `(X, Y, Z, colour)` points.

## Examples

`curve([0, 32⋅π] @ (t ↦ t⋅❨cos(t), sin(t)❩))`

```f ≔ t ↦ (e^sin(t) − 2⋅cos(4⋅t) + sin((2⋅t − π)/24)^5) ⋅ ❨cos(t), sin(t)❩;
B ≔ curve([0, 100, 0.01] @ f);
AdjustVisual(B, "line color": "salmon", "line width": 3)
```

```f ≔ t ↦ (e^sin(t) − 2⋅cos(4⋅t) + sin((2⋅t − π)/24)^5) ⋅ ❨cos(t), sin(t)❩;
g ≔ (u, v) ↦ ❨u, v, u^2 / 10❩;
scene("butterflies");
L ≔ compute(❨RandomReal(−25, 25), RandomReal(−100, 40), RandomReal(−10, 10),
integer(RandomColor())❩, k, 1, 20);
ForEach(L, v, curve([0, 100, 0.01] @ (t ↦ g(f(t))) @ ((x, y, z) ↦ ❨x, y, z, 0❩ + v)));
scene("butterflies")
```