infinite-zoom-automatic1111.../iz_helpers/interpol_exp_plot.py

37 lines
1.2 KiB
Python

import matplotlib.pyplot as plt
import math
# Define the values for width, mask_width, and num_interpol_frames
width = 512
mask_width = round(width * 0.25)
num_interpol_frames = 30
def exponential_interpolation(b, t):
exponent_coeff = 1 # between 0 to 1
t = t / b
y = math.pow(b, math.pow(t, exponent_coeff))
return y
# Calculate the logarithmic scaling factor
log_scale_factor = math.log(width / mask_width) / (num_interpol_frames - 1)
# Create a list to store the values of interpol_width for each frame
interpol_width_values = []
# Calculate interpol_width for each frame and add it to the list
for j in range(num_interpol_frames):
# scale_factor = math.exp(-j*log_scale_factor)
# interpol_width = round(width*scale_factor/2)
interpol_width = exponential_interpolation(
mask_width, (num_interpol_frames - j) * mask_width / num_interpol_frames
)
interpol_width_values.append(interpol_width)
# Plot the values of interpol_width on a graph
plt.plot(range(1, num_interpol_frames + 1), interpol_width_values)
plt.xlabel("Frame Number")
plt.ylabel("Interpolation Width")
plt.title("Dolly-Out Animation Graph")
plt.show()