i tym razem postanowiłem przedstawić wam niepozorny programik kreślący dwie krzywe Beziera, a następnie
połączymy wierzchołki punktów kontrolnych krzywych uzyskując tym samym interferencję nakładających się siatek
co spowoduje powstanie efektu Moiré'a .
- import numpy as np
- import matplotlib.pyplot as plt
- # punkty kontrolne pierwszej krzywej
- P0_1 = np.array([0, 0])
- P1_1 = np.array([1, 3])
- P2_1 = np.array([3, 1])
- # punkty kontrolne drugiej krzywej
- P0_2 = np.array([0, 3])
- P1_2 = np.array([2, 0])
- P2_2 = np.array([4, 3])
- # liczba punktów na krzywej
- n_points = 250
- # wektor punktów na pierwszej krzywej
- t = np.linspace(0, 1, n_points)
- B_1 = np.zeros((n_points, 2))
- # obliczanie punktów pierwszej krzywej Beziera
- for i in range(n_points):
- B_1[i] = (1-t[i])**2 * P0_1 + 2*(1-t[i])*t[i] * P1_1 + t[i]**2 * P2_1
- # wektor punktów na drugiej krzywej
- t = np.linspace(0, 1, n_points)
- B_2 = np.zeros((n_points, 2))
- # obliczanie punktów drugiej krzywej Beziera
- for i in range(n_points):
- B_2[i] = (1-t[i])**2 * P0_2 + 2*(1-t[i])*t[i] * P1_2 + t[i]**2 * P2_2
- # rysowanie krzywych
- plt.plot(B_1[:,0], B_1[:,1], '-r')
- plt.plot(B_2[:,0], B_2[:,1], '-b')
- # rysowanie punktów przecięcia krzywych
- for i in range(n_points):
- plt.plot([B_1[i,0], B_2[i,0]], [B_1[i,1], B_2[i,1]], '-k', linewidth=0.5)
- plt.axis('equal')
- plt.title('Efekt moiré na krzywych Beziera')
- plt.show()
i pokazania ich efektu moiré poprzez rysowanie punktów przecięcia obu krzywych.
Na początku definiowane są punkty kontrolne dla dwóch krzywych, a następnie określana jest liczba punktów,
które zostaną wygenerowane na każdej z krzywych. Następnie dla każdej krzywej Beziera zostaje utworzony
wektor punktów (B_1 i B_2) za pomocą obliczenia współrzędnych kolejnych punktów na krzywej dla wartości
parametru t (równomiernie rozłożonego między 0 a 1).
W końcowej części kodu krzywe Beziera oraz punkty przecięcia obu krzywych zostają narysowane na wykresie.
Rysowanie punktów przecięcia jest realizowane w pętli, która iteruje przez każdy punkt na krzywej i łączy go
z odpowiadającym mu punktem na drugiej krzywej.

A tak się prezentuje efekt działania ...
Zachęcam do eksperymentów z krzywymi Beziera ...