<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import numpy as np

# Scene to go with mass_and_spring.py

k_s = 10000
k_d = 0.1
stepsize = 1/6000

vel_noise = 0

N = 10
# Rope starts out horizontal
particle_posns = np.array([
    0.5 + 0.5 * np.arange(N) / N,
    0.75 * np.ones(N)
], dtype=np.float32).T

# left end is pinned in place
pins = [0]

spring_indices = np.concatenate([

    # structural springs
    np.array([
        np.arange(N-1),
        1 + np.arange(N-1)
    ], dtype=np.int32).T,

    # bending springs
    np.array([
        np.arange(N-2),
        2 + np.arange(N-2)
    ], dtype=np.int32).T,
])
nSprings = len(spring_indices)

spring_params = np.array([
    k_s * np.ones(nSprings),
    k_d * np.ones(nSprings),
    np.zeros(nSprings)
], dtype=np.float32).T

particle_masses = 5 * np.ones(N, dtype=np.float32) / N
# heavy mass on the end
particle_masses[-1] = 1.0
</pre></body></html>