RADj375 / fuzzy-octo-meme

String

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

fuzzy-octo-meme

String String Theory import numpy as np import matplotlib.pyplot as plt import math class String: def init(self, length, tension, damping_coefficient): self.length = length self.tension = tension self.damping_coefficient = damping_coefficient self.points = [] self.wave_speed = math.sqrt(self.tension / self.length) def calculate_displacement(self, x): return math.sin(self.wave_speed * x) * math.exp(-x**2) # Introduce damping factor def update_points(self, dt): for i in range(1, len(self.points) - 1): y_prev = self.points[i - 1] y_curr = self.points[i] y_next = self.points[i + 1] acceleration = self.tension / self.length * (y_prev - 2 * y_curr + y_next) velocity = self.points[i].velocity * (1 - self.damping_coefficient * dt) velocity += acceleration * dt self.points[i].velocity = velocity self.points[i].position += velocity * dt def main(): # Create a string. length = 1.0 tension = 1.0 damping_coefficient = 0.01 # Adjust damping coefficient as needed string = String(length, tension, damping_coefficient) # Initialize the points on the string. num_points = 100 step_size = length / (num_points - 1) for x in range(num_points): position = np.array([x * step_size, 0.0]) velocity = np.array([0.0, 0.0]) string.

About

String

License:Mozilla Public License 2.0