Масштабування фігур
Свайпніть щоб показати меню
Масштабування — це фундаментальне геометричне перетворення, яке змінює розмір фігури, зберігаючи її загальну структуру. Під час застосування масштабування до геометричної фігури кожна точка фігури переміщується ближче або далі від фіксованої точки, зазвичай початку координат, на певний коефіцієнт. Цей процес може бути однорідним, коли всі виміри масштабуються на один і той самий коефіцієнт, або неоднорідним, коли різні виміри масштабуються на різні коефіцієнти.
При однорідному масштабуванні кожна координата кожної точки множиться на одне й те саме значення. Це зберігає пропорції фігури, тому квадрат залишається квадратом, а коло — колом, лише більшими або меншими. При неоднорідному масштабуванні кожна координатна вісь може мати свій власний коефіцієнт масштабування. Наприклад, можна розтягнути прямокутник по горизонталі, залишивши його висоту незмінною, перетворивши його на ширший прямокутник.
Масштабування часто використовується в комп'ютерній графіці, моделюванні та дизайні для зміни розмірів об'єктів або коригування їх пропорцій. Під час масштабування фігури її площа та периметр змінюються передбачуваним чином: при однорідному масштабуванні з коефіцієнтом k периметр множиться на k, а площа — на k^2. Однак неоднорідне масштабування може спотворювати фігуру, змінюючи кути та відносні довжини сторін.
12345678910111213141516171819202122232425262728import numpy as np import matplotlib.pyplot as plt def scale_polygon(vertices, scale_x, scale_y): scale_matrix = np.array([[scale_x, 0], [0, scale_y]]) return vertices @ scale_matrix.T # Define a triangle triangle = np.array([[1, 1], [3, 1], [2, 3], [1, 1]]) # Uniform scaling by factor 2 scaled_uniform = scale_polygon(triangle, 2, 2) # Non-uniform scaling: x by 2, y by 0.5 scaled_nonuniform = scale_polygon(triangle, 2, 0.5) # Plot original and scaled triangles plt.figure(figsize=(6, 6)) plt.plot(triangle[:,0], triangle[:,1], 'o-', label='Original') plt.plot(scaled_uniform[:,0], scaled_uniform[:,1], 'o-', label='Uniform scale (2x)') plt.plot(scaled_nonuniform[:,0], scaled_nonuniform[:,1], 'o-', label='Non-uniform scale (2x, 0.5y)') plt.legend() plt.axis('equal') plt.title('Scaling Transformations of a Triangle') plt.xlabel('X') plt.ylabel('Y') plt.show()
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат