import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np from matplotlib.widgets import Slider # Gökdelen Parametreleri kat_sayisi = 20 # Başlangıçta 20 kat taban_boyutu = 10 # Başlangıçta 10 birim tepe_boyutu = 5 # Başlangıçta 5 birim # 3D Gökdelen Tasarımı def create_building(kat_sayisi, taban_boyutu, tepe_boyutu): fig = plt.figure(figsize=(10, 8)) ax = fig.add_subplot(111, projection='3d') # Gökdelenin her bir katını çizmek için döngü for kat in range(kat_sayisi): # Kat yüksekliği z_start = kat z_end = kat + 1 # Taban ve tepe boyutunu linearly interpolate ediyoruz current_taban_boyutu = taban_boyutu - (taban_boyutu - tepe_boyutu) * kat / (kat_sayisi - 1) next_taban_boyutu = taban_boyutu - (taban_boyutu - tepe_boyutu) * (kat + 1) / (kat_sayisi - 1) # Katın üst ve alt köşelerinin koordinatlarını hesapla x = np.array([current_taban_boyutu, -current_taban_boyutu, -current_taban_boyutu, current_taban_boyutu]) y = np.array([current_taban_boyutu, current_taban_boyutu, -current_taban_boyutu, -current_taban_boyutu]) # Bu koordinatları 3D'ye aktar x_next = np.array([next_taban_boyutu, -next_taban_boyutu, -next_taban_boyutu, next_taban_boyutu]) y_next = np.array([next_taban_boyutu, next_taban_boyutu, -next_taban_boyutu, -next_taban_boyutu]) ax.plot_trisurf(x, y, np.full_like(x, z_start), color='blue', alpha=0.7) ax.plot_trisurf(x_next, y_next, np.full_like(x, z_end), color='blue', alpha=0.7) ax.set_xlabel('X Koordinatı') ax.set_ylabel('Y Koordinatı') ax.set_zlabel('Z (Kat Yüksekliği)') ax.set_title('Dinamik Gökdelen Tasarımı') plt.show() # Slayder Fonksiyonları def update(val): global kat_sayisi, taban_boyutu, tepe_boyutu kat_sayisi = slider_kat.val taban_boyutu = slider_taban.val tepe_boyutu = slider_tepe.val create_building(int(kat_sayisi), taban_boyutu, tepe_boyutu) # Figür ve Slayderlar fig, ax = plt.subplots(figsize=(10, 5)) plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.3) # Kat Sayısı Slayderı ax_kat = plt.axes([0.1, 0.05, 0.65, 0.03], facecolor='lightgoldenrodyellow') slider_kat = Slider(ax_kat, 'Kat Sayısı', 1, 200, valinit=20, valstep=1) slider_kat.on_changed(update) # Taban Boyutu Slayderı ax_taban = plt.axes([0.1, 0.1, 0.65, 0.03], facecolor='lightgoldenrodyellow') slider_taban = Slider(ax_taban, 'Taban Boyutu', 1, 20, valinit=10, valstep=0.5) slider_taban.on_changed(update) # Tepe Boyutu Slayderı ax_tepe = plt.axes([0.1, 0.15, 0.65, 0.03], facecolor='lightgoldenrodyellow') slider_tepe = Slider(ax_tepe, 'Tepe Boyutu', 1, 20, valinit=5, valstep=0.5) slider_tepe.on_changed(update) # İlk tasarımı çiz create_building(int(slider_kat.val), slider_taban.val, slider_tepe.val) plt.show()