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
Easy Math Editor
This discussion board is a place to discuss our Daily Challenges and the math and science related to those challenges. Explanations are more than just a solution — they should explain the steps and thinking strategies that you used to obtain the solution. Comments should further the discussion of math and science.
When posting on Brilliant:
*italics*
or_italics_
**bold**
or__bold__
paragraph 1
paragraph 2
[example link](https://brilliant.org)
> This is a quote
\(
...\)
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
This 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
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