Here is a general process for making random smooth curves using physics principles:

**1)** Initialize a particle at the origin with some random velocity.

**2)** Apply a constant force which is orthogonal to the velocity.

**3)** Numerically integrate to calculate and plot the trajectory

**4)** Change the magnitude / sign of the force periodically, while maintaining the orthogonality

This ensures that the particle maintains a constant speed while continuously and smoothly changing its direction.

**Plots and source code are below:**

```
import math
import random
x = 0.0
y = 0.0
m = 1.0
vx = -10.0 + 20.0 * random.random()
vy = -10.0 + 20.0 * random.random()
ax = 0.0
ay = 0.0
t = 0.0
dt = 10.0**(-2.0)
count = 0
Fbase = 50.0
Fmag = -Fbase + 2.0 * Fbase * random.random()
while t <= 100.0:
x = x + vx * dt
y = y + vy * dt
vx = vx + ax * dt
vy = vy + ay * dt
if (count % 100) == 0:
Fmag = -Fbase + 2.0 * Fbase * random.random()
Nx = -vy
Ny = vx
Nmag = math.hypot(vx,vy)
Nx = Nx / Nmag
Ny = Ny / Nmag
Fx = Fmag * Nx
Fy = Fmag * Ny
ax = Fx / m
ay = Fy / m
print t,x,y
t = t + dt
count = count + 1
```

No vote yet

1 vote

×

Problem Loading...

Note Loading...

Set Loading...

Easy Math Editor

`*italics*`

or`_italics_`

italics`**bold**`

or`__bold__`

boldNote: you must add a full line of space before and after lists for them to show up correctlyparagraph 1

paragraph 2

`[example link](https://brilliant.org)`

`> This is a quote`

Remember to wrap math in \( ... \) or \[ ... \] to ensure proper formatting.`2 \times 3`

`2^{34}`

`a_{i-1}`

`\frac{2}{3}`

`\sqrt{2}`

`\sum_{i=1}^3`

`\sin \theta`

`\boxed{123}`

## Comments

Sort by:

TopNewestThis must have taken you forever

Log in to reply

About an hour

Log in to reply

Wow. You must like coding a lot

Log in to reply

what visualization software is that ?

Log in to reply

I'm very primitive. I use Python to print out (x,y) coordinate pairs. And then I paste into Excel and make a scatter plot.

Log in to reply

quite impressive just for that :o

Log in to reply

have you tried what happens with increasing the range ?

Log in to reply

Log in to reply

Log in to reply

Log in to reply

Log in to reply

Log in to reply