Permukaan air bumi.

Siapa, ombak, yang menghentikanmu,

Siapa yang mengikat larimu yang perkasa,

Siapa yang berada di kolam yang sunyi dan padat

Apakah aliran pemberontakan telah berubah?
A.S.Pushkin

Pertanyaan yang diajukan dalam judul mungkin menimbulkan kejutan: bukankah itu sebabnya permukaan air disebut datar karena cenderung menempati permukaan yang sempit? posisi horisontal; ketika berbicara tentang ketinggian, yang mereka maksud adalah semacam bidang, dan apa yang lebih datar dari permukaan air? Tidak heran mereka berkata begitu!

Kami tidak akan menentang gagasan tradisional, tetapi mari kita perjelas: ungkapan “permukaan air” berlaku jika air tidak bergerak. Namun hal ini praktis tidak pernah terjadi. Air memiliki karakter yang berbeda...

Beralih ke perairan alami

proyek, kami jarang menemukan konfirmasi

gagasan yang berlaku tentang cita-cita

ketinggian air horizontal, tapi berikut adalah contohnya

non-horizontalnya ada di mana-mana - dari

tetesan air ke laut. Non-horizontal

terlihat bahkan pada tingkat mikro. Misalnya,

ratakan dalam gelas kimia atau tabung tipis

air selalu berbentuk cekung bening,

sesuai dengan koefisien tertinggi

kepada pelayan tegangan permukaan di antara

cairan (kecuali merkuri). Dengan ini

alasan yang sama setetes air tidak menyebar

di atas kertas lilin, dan dalam gravitasi nol secara umum

tetap berbentuk bola.

Pelanggaran ketinggian air horizontal

permukaan juga terlihat pada tingkat makro. Di kejauhan

dari samudra dan lautan, permukaannya

bagi kita tampak sangat horizontal. Tapi jika

hamparan laut di depan matamu,

arahkan pandanganmu ke cakrawala - kamu

Anda tidak akan melihat garis lurus, tetapi busur... Dan dalam rencana-

wadah skala samudera dan lautan airnya

permukaannya benar-benar bulat, itu

mengulangi garis besarnya bola dunia, dan tangisannya-

nilainya ditentukan oleh hukum fisika.

Tentu saja, kelengkungan planet juga demikian

bukan “permukaan” air laut, melainkan secara berkala

terganggu oleh lewatnya gelombang panjang

pasang surut yang berhubungan dengan posisi

Bulan dan Matahari. Saat air pasang, kemiringannya adalah

diarahkan ke darat, saat air surut - ke arah

sisi sebaliknya.

Ketinggian gelombang pasang bervariasi

tempat-tempat di Bumi dan bergantung pada bentuk pantainya.

Pasang surut tertinggi di Bumi (15,6–18 m)

tercatat di Teluk Fundy (Atlantik

pantai Kanada). Di konferensi Eropa

pasang tertinggi tinente (hingga 13,5 m)

diamati pada Bank Barat Perancis, di

Brittany. Di Rusia, gelombang pasang seperti itu terjadi

ditemukan di Teluk Penzhinskaya di Laut Okhotsk - hingga

12,9 m Ini adalah tempat air pasang tertinggi

di seluruh Samudera Pasifik.

Selain ketidakseimbangan pasang surut di level tersebut

nya lautan, horizontalitasnya konstan

terdistorsi oleh gelombang angin

arus, gelombang badai, dan dekat pantai

gov - semburan ombak. Yang paling kuat

Bumi arus hangat Aliran Teluk terlihat

sungai "cembung", naik ke atas permukaan

ness Samudera Atlantik sebesar 1-2 m.

Jadi “permukaan lautan” hanyalah sebuah novel -

ekspresi kiasan, apa yang saya maksud

perhatian ahli geografi yang luar biasa

Penulis kelautan Jules Verne. Spanduknya

Kapten Nemo berulang kali membantah

idealisasi “permukaan laut”: “Mudah

riak mengalir melintasi permukaan air... Ringan

angin sepoi-sepoi sedikit mengacak-acak permukaan air... Tidak ada

gelombang yang muncul di permukaan air..." Dan ini dia

kesimpulan utama: “Permukaan air beku, hingga

yang mengejutkannya, bertentangan dengan ekspektasinya sama sekali

Ternyata tidak semulus cermin.”

Jadi “permukaan” air jarang terjadi.

Pushkin bahkan melihat Laut Hitam yang “lembut”.

rusa dalam suasana hati yang berbeda:

Bersuara, bersuara, layar patuh.

Kekhawatiran di bawahku, lautan suram.

Dan emosi apa yang menguasai kita saat kita melihatnya

permukaan laut yang mengancam dalam lukisan

I.K.Aivazovsky! Lautan dekat dengan kita

Pelukis kelautan tidak pernah tenang.

Tapi mungkin untuk mencari “cermin”

air ada baiknya beralih ke area yang lebih kecil

badan air? Tidak bisakah kita menemukan contoh ide di sana?

Apakah itu benar-benar pesawat air yang datar?

Tidak, bertentangan dengan kepercayaan populer,

ketinggian air di permukaan danau besar

juga tidak bisa sepenuhnya horizontal. Dia

memiliki “distorsi” berupa panjang yang eye-catching

gelombang yang tidak terlalu mencolok - yang disebut seiches.

Mereka muncul di bawah pengaruh eksternal

kekuatan: perubahan tekanan atmosfer,

arah dan kecepatan angin, seismik

gempa, bank ambruk.

Seiches dicirikan oleh periode yang besar

di rumah (dari beberapa menit hingga puluhan jam)

dan amplitudo yang nyata (dari milimeter hingga

beberapa meter). Ya, di Danau Jenewa

(Swiss) amplitudo seiche mencapai 2 m s

untuk jangka waktu lebih dari satu jam. Dan cukup

Azov yang terisolasi dan dangkal

laut, seiches diamati dengan periode hingga 23

jam dan amplitudo 10-25 cm.

Hal serupa terjadi di Finlandia

teluk, tempat terjadinya topan yang dalam dan kuat

mi angin barat menciptakan “kemiringan”

tingkat dan gelombang panjang, menyebar,

berguling ke mulut Neva, menyebabkan yang terkenal

banjir di St.Petersburg. Pushkin, tidak

tidak memiliki pengamatan yang sistematis,

menjelaskan secara singkat dan akurat alasan sebaliknya

aliran Neva, yaitu perubahan kemiringannya:

Namun kekuatan angin dari teluk

Memblokir Neva

Dia berjalan kembali, marah, mendidih,

Dan membanjiri pulau-pulau...

Model seiche yang paling sederhana mudah dibuat

amati dalam semangkuk air. Mengayunnya sendirian

kali, Anda bisa melihat bagaimana ombak muncul,

berulang kali dipantulkan dari samping, berpindah

gosokkan pada permukaan. Mereka mendorong-

xya, saling tumpang tindih secara kacau,

menciptakan sistem gelombang yang kompleks.

Namun distorsi yang paling signifikan adalah horizontal

zonasi ketinggian air terjadi pada

yang paling mobile badan air- ulang-

Jelas sekali, aliran air apa pun tidak bisa

menjadi sangat horizontal justru karena

mengalir, artinya mempunyai kemiringan, karena,

Seperti kata pepatah, tanpa kemiringan, air tidak akan mengalir. DAN,

melihat profil memanjang sungai, kami

kita selalu melihat arah kemiringan sebagai dasar

sungai dan permukaannya.

Namun jika dasar sungai cukup stabil,

ketinggian air di dalamnya berubah terus-menerus.

Bukan suatu kebetulan jika diukur dengan meter air

posting dibuat setidaknya dua kali per

hari, saat air tinggi dan banjir - setiap

Sudah waktunya. Selama periode inilah sungai khususnya mengalir

agresif, terutama ketika mereka mengancam

“melompat tinggi” (sekali lagi, hanya sebuah gambar)

ekspresi menyiratkan yang tertinggi

Kenaikan dan keluar level yang lebih besar air sungai di belakang

batas salurannya sendiri).

Jelas bahwa perlu untuk mengetahui caranya

sungai bisa naik tinggi. Mayoritas

kota-kota muncul pada saat tidak ada

tidak ada informasi tentang kemungkinan fluktuasi

ketinggian air di sungai, dan sekarang jumlahnya banyak

sangat menderita karena berulang secara berkala

bencana banjir yang sedang berlangsung. Umum

banjir yang diketahui di sungai Cina, India,

Amerika, beberapa negara-negara Eropa. Banjir

pertemuan berlangsung di St. Petersburg, Arkhangelsk,

Krasnoyarsk, Blagoveshchensk, Krymsk dan

kota lain dan daerah berpenduduk Rusia.

Mengingat pengalaman menyedihkan banjir tua

kota, desain dan konstruksi

yang baru dilakukan dengan pertimbangan wajib

kadar air tertinggi. Tapi bagaimana cara menentukannya

besarnya kenaikan tersebut? Untuk ini, Anda perlu

mengetahui pola rezim air sungai dan

danau, memiliki serangkaian pengamatan yang panjang

mereka. Sesuai kronologis jadwal harian

perubahan signifikan pada ketinggian air (disebut

hidrograf) seseorang dapat menilai sifat air

nutrisi, waktu dan ukuran

situasi ekstrim.

Ketinggian kenaikan muka air sungai di

waktu air tinggi atau banjir tergantung

banyak alasan: di beberapa sungai ini bagus

pada cadangan salju dan intensitas pencairannya,

di sisi lain - jumlah curah hujan dan durasinya

terjadinya hujan, pada kondisi ketiga

kedinginan dan pecahnya es, persahabatan

aliran es, yang keempat - arah angin-

selokan dan gelombang pasang surut air. Tapi lebih kuat

dipengaruhi oleh luas daerah tangkapan air dan

sifat dasar sungai. Jelas, semakin kuat

salurannya terkendala tepian sungai, maka semakin besar pula sungainya

Saya ingin melampaui batasnya dan bahkan lebih tinggi lagi

dia harus bangun. Dan sebaliknya: di

dataran banjir berawa yang luas di mana tidak ada apa-apa

mencegah sungai menyebar lebih luas, air naik

minor. Sangat menenangkan

mempengaruhi sungai... danau dan rawa. Daripada mereka

lebih banyak di daerah aliran sungai, semakin sedikit co-

fluktuasi ketinggian air.

Berapa sebenarnya kenaikan permukaan air?

di sungai dan danau? Dan bukankah itu buahnya

cerita imajinasi artistik tentang

lompatan multimeter di permukaan sungai, di atas air

ny poros, tentang desa-desa yang tersembunyi di bawah air,

tentang banjir di ruang yang luas, sepadan

pelek dengan luas beberapa negara bagian?

Seperti yang ditunjukkan oleh ahli hidrologi jangka panjang,

observasi observasional, peristiwa seperti itu tidak hanya

terjadi dan sedang berlangsung, namun hal tersebut dapat menjadi op-

klasifikasi terbatas.

Kenaikan permukaan air tertinggi tercatat

diperkirakan terjadi di sungai-sungai dataran rendah yang mengalir jernih

tepian yang menonjol karena tidak adanya dataran banjir. DI DALAM

dalam kondisi ini, bahkan di sungai kecil, terjadi fluktuasi

levelnya mencapai 2-4 m, dan pada tingkat sedang dan besar

tinggi - air bisa naik ke ketinggian

bangunan bertingkat. Tentang "biru yang indah"

Danube" telah didengar oleh semua orang, namun tidak semua orang mengetahui apa itu

dua ribu kilometer dari mulutnya, di Austria,

amplitudo fluktuasi permukaan air Danube

mencapai hampir 15 m, tercatat di Budapest

tingkat lompatan lebih dari 10 m. Namun, di Eropa

Rekor lompat tinggi dipegang oleh... Oka.

Di wilayah Kaluga, amplitudo fluktuasi level

air selama periode lebih dari 120 tahun telah diamati

deniya mencapai 19 m! Dengan latar belakang ini, ia bangkit

perairan di Don akan tampak moderat - “semuanya

"pergi" 12-14 m, dan di sepanjang Volga atas (sebelum penciptaan

mengatur waduk) air di atas 10 m

tidak bangun.

Batasan yang cukup tinggi telah diatasi -

sungai utara kita mengalir. Air yang kuat

aliran sungai dibatasi oleh curam dan kuat

pantai, mampu naik ke ketinggian

10-12 m Amplitudo osilasinya sangat besar

tingkat sauna di Pechora. Hampir dalam segala hal

sepanjang perbedaan antara minimum

dan level maksimum mencapai 12 m.

Anak sungai Pechora yang sama “gelisahnya” adalah sungai

Amerika Serikat. Raksasa utara lainnya - Severnaya

Dvina hampir sama baiknya dengan tetangganya. DI DALAM

di wilayah Ust-Pinega, fluktuasi jangka panjang

level melebihi 12 m. Cukup “melenting”

dan Sungai Sukhona, terutama di bagian hilirnya.

Tidak ada kenaikan permukaan air setinggi sepuluh meter

mengalami Veliky Ustyug sekali.

Namun, meskipun terkenal dengan bahasa Rusia-

"banjir sungai-sungainya seperti lautan"

juara dalam “melompat” harus dicari

di Asia. Kenaikan permukaan air terbesar terjadi di

di negara kita - hingga 32 m - diamati di sungai

Tunguska. Untungnya, tidak ada ekonomi

Tidak ada objek di area ini. Dan di antara dunia

sungai-sungai raksasa yang menjadi “lompatan” tertinggi

mengalir Sungai Yangtze di Cina. Di tempat sempit dekat kota

Ichan itu mencapai 50 m. Kekuatan apa yang dibutuhkan?

tapi harus mengambil ketinggian seperti itu!

Sungai dengan dataran banjir pun tidak bisa

mendekati hasil yang serupa. Biasanya

amplitudo fluktuasi ketinggian air di dalamnya

tidak melebihi 1,5–2 m di hulu, in

rata-rata - 15-20 m. Karena alasan ini, Volga

di bagian hilir, dan Ural sepanjang keseluruhannya tidak di bawah-

lebih tinggi dari 10 m.

Dampaknya bahkan lebih rendah lagi pada sungai yang mengalir masuk

di dalam lahan basah biasa

riy - masuk Siberia Barat, di Polesie. Di sini

sungai besar - Ob, Pripyat - amplitudo

fluktuasi level hampir mencapai 8-10 m, di

sungai kecil - 1-1,5 m.

Hasil terendah menunjukkan

danau dan sungai pegunungan. Fluktuasi jangka panjang

menurunkan permukaan air bahkan di sungai yang dalam

tidak melebihi 4-6 m. Ini termasuk

Angara, Volkhov, Neva. Ya, sepanjang sejarah

pengamatan di dekat Novaya Ladoga, amplitudo getaran

Ketinggian air di Volkhov adalah 3,3 m.

Bahkan lebih sedikit lagi untuk Neva, yang alirannya hampir sama

sepenuhnya diatur oleh Ladoga.

Dalam hal ini, timbul pertanyaan: bagaimana-

Apakah kita perlu meninggikan danau? Berbeda dengan sungai,

kapasitas danau yang besar tidak memungkinkan mereka melakukan hal tersebut

dengan cepat dan mudah menyerah pada perubahan cuaca

ya - pencairan salju yang bersahabat, intens

hujan, angin kencang, dll. Oleh karena itu, am-

amplitudo levelnya jauh lebih kecil, khususnya

dekat danau padat. tingkat Danau Ladoga,

misalnya, selama periode pengamatan lebih dari

140 tahun berfluktuasi dalam kisaran 1,5-2,5 m, di

Baikal, fluktuasi tingkat sekuler tidak mendahului

tinggi 2,2 m.

Di wilayah Rusia, yang paling “bangkit-

tapi" Danau Ilmen, amplitudo levelnya

selama seluruh periode pengamatan melebihi 7 m.

(Bagaimana mungkin seseorang tidak mengingat legenda tentang kota Kitezh,

masuk ke dalam air?) Hal ini dijelaskan oleh fakta bahwa

berapa luas permukaan air Ilmen

sekitar 90 kali luasnya lebih sedikit memelihara-

dari kolam renangnya. Itu sebabnya danau ini sangat berangin

bereaksi terhadap sedikit perubahan kadar air

tanah miliknya yang sangat besar. Hampir sama

tetangga utaranya di Vologda berperilaku

peringkat - Danau Kubenskoe, pendakian tertinggi

level di sana mencapai 5-6 m

danau di utara dan barat laut Rusia di bawah-

berkisar dalam 2-3 m.

Namun ada yang unik di dunia ini

contoh horizontal yang hampir mutlak

kualitas air - ini adalah Besar yang tidak memiliki saluran pembuangan

Danau garam di Amerika Serikat bagian barat laut. Anda-

lapisan garam yang telah mengering hingga menjadi kerak mengulangi level tersebut

air dan memastikan permukaan rata

permukaan yang sedang diuji

dan balap mobil super cepat.

Tetapi jika “distorsi” level adalah hal yang biasa

bahkan untuk danau, maka di sungai jumlahnya lebih banyak lagi

nyata. Tidak ada keraguan tentang kemiringan memanjang

aliran air. Tapi apakah sudah jelas bahwa ada

merica? Kewajaran petunjuknya:

jika ada, air akan menyeberang

sungai - antar tepian. Asumsi ini

mungkin tampak tidak masuk akal - lagi pula, ini tidak benar

harus terjadi!

Namun kemiringan airnya melintang

dasar sungai itu ada. Ini mudah untuk diverifikasi,

menyaksikan kehidupan sungai besar dataran rendah.

Perhatikan perilaku hewan air

mengalir pada musim yang berbeda dalam setahun. Prismo-

pergi ke sungai di musim semi, saat air tinggi, selama

Saya seorang hanyut es. Es mengambang bebas terapung

mendekat, bahkan terkadang berpelukan

ke pantai, dan sering terjadi kemacetan es

"merangkak" pada mereka. Hal ini menunjukkan bahwa

ada kemiringan yang diarahkan dari tengah

sungai ke tepian. Jika Anda mengikuti sungai

di akhir banjir, saat air surut, mudah dilakukan

tapi akan menyadari bahwa semua orang mengambang bebas

benda (batang kayu, cabang, berbagai puing)

menempel di tengah sungai, mengidentifikasi dengan jelas

menggonggong inti aliran air. Yang sama

yang “melukiskan perenang berdada lancip

kano." Oleh karena itu, ada bias

diarahkan dari tepian ke tengah sungai.

Wisatawan air berpengalaman bisa mengonfirmasinya

kehadirannya tidak hanya memanjang, tetapi juga melintang

ny arus di dasar sungai, terutama di mana

arah batang berubah.

Apa yang menjelaskan munculnya

sudut melintang berarah musiman

rahim? Ahli hidrologi percaya itulah penyebabnya

adalah perubahan signifikan dalam laju aliran

air di dasar sungai. Untuk sebagian besar sungai, volumenya

air saat banjir atau saat banjir mungkin

meleleh sepuluh kali lipat. Sebab, saat dasar sungai

meluap dengan air, aliran terbesar-

kemampuan pengetahuan berada di tengah

bagian sungai yang terkena pengaruh gesekan pada tepian dan

bagian bawahnya relatif kecil dan tidak signifikan

mempengaruhi laju aliran. Sebagai akibat

tekanan yang lebih besar, ketinggian air di sini menjadi

melayang lebih tinggi daripada di lepas pantai. Dan kemudian mereka berkata:

“Sungainya meluap.” Kadang-kadang hal ini bahkan terlihat

mata; di sungai besar dan dalam melebihi-

distribusi tingkat median di pesisir

mencapai 1 m dalam hal ini, dengan lebar sungai

1,5-2 km, kemiringan melintang melebihi 0,001,

yang banyak bahkan untuk kemiringan memanjang UE-

aliran air alami. Karena perbedaan ini

tingkat di sungai ada pergerakan air dari

tengah saluran ke tepian, yang terbawa arus

es mengapung di belakang Anda.

Pada akhir banjir, kandungan air dan kedalaman sungai

menurun dan pengaruh penghambatannya meningkat

tenggelamnya dasar dan pantai. Hal ini mengarah ke

permukaan air di dekat pantai lebih tinggi,

daripada di tengah sungai, muncul gerakan di saluran

aliran air searah dari pantai ke tengah.

Terlihat jelas benda-benda yang mengapung di sungai

akan cenderung ke tengah-tengahnya, begitu menurut mereka

lokasi di aliran dapat ditentukan

dan fase rezim air - naik atau turun.

Tentu saja definisinya dangkal,

karena kita tidak melihat apa yang terjadi di kedalaman

tempat tidur. Sungai dengan terampil menyembunyikan ujungnya di dalam air,

dan orang hanya bisa menebaknya sebagai tambahan

kecepatan memanjang di sungai ada

arus sirkulasi lada.

Menyebabkan fenomena ini dibuka

hanya di pertengahan abad terakhir. Eksperimental

Kisah M.A.Velikanov (1958),

N.I. Makkaveev dan lainnya (1961) menetapkan hal itu

bahwa permukaan sungai dapat berubah

bentuk, bentuk lereng yang bermacam-macam

dipengaruhi oleh kenaikan atau penurunan

konsumsinya, adanya gaya sentrifugal

putaran, gaya rotasi bumi, angin dan

Paling kasus yang kompleks pergerakan udara

menghilang di kelokan dasar sungai, di mana, seiring dengan gaya

gravitasi, kecepatan aliran dipengaruhi oleh pusat

kekuatan mengalir yang “menekan” aliran menuju air

bank bengkok (rusak) dan beberapa

menaikkan permukaan air. Sebagai akibat

kelebihan tekanan hidrostatis di dalam

lapisan bawah, air “diperas” dan diarahkan

bergerak menuju pantai cembung.

Jadi, dua melintang

arus: satu - "permukaan", berdampak

ke pantai cekung, yang lain - "bawah", di-

dikoreksi dalam sisi yang berlawanan. DI DALAM

masing-masing membengkokkan arah sirkulasi

milikmu. Di belokan kanan ada semburan air

bergerak searah jarum jam, ke kiri - ke arah

ke arah militer. Beginilah cara sebuah lingkaran dibuat

sirkulasi di sungai.

Pencampuran dengan longitudinal utama

mengalir, arus yang diarahkan berbeda

permukaan dan di bagian bawah membuat spiral

(“heliks”) pergerakan air. Beberapa sungai

begitulah cara mereka mengalir – “dalam bentuk spiral” dari tikungan ke

membungkuk ke arah hilir.

Lagi gerakan yang lebih sulit aliran sungai masuk

periode musiman yang "kritis". Dengan berat

banjir musim gugur bentuk air cembung

permukaan menciptakan dua divergen ke arah

tepian lereng dan te-

bacaan. Pada saat yang sama, mencapai dasar, mereka berubah

arah dan, bertabrakan di tengah,

bergegas ke permukaan. Di bulan-bulan musim panas

pergerakan air terjadi secara berbeda:

aliran permukaan diarahkan ke tengah

sungai bertabrakan dan menuju ke kedalaman, di mana

menyimpang ke arah pantai. Dengan demikian,

pada periode tersebut aliran sungai terdiri dari dua

bergerak sejajar namun berlawanan

aliran spiral yang memutar.

Pengamatan menunjukkan hal yang paling banyak

tingkat stabil di sungai dan danau di musim panas dan

air rendah musim dingin. Ini adalah periode ketika arus masuk

air terbatas bahkan mungkin berhenti,

dan levelnya sendiri sangat minim. Dan sering

permukaan air kehilangan keterbukaan alaminya

yaitu, di musim panas ditutupi dengan air yang menyukai panas-

vegetasi (duckweed, alga),

dan di musim dingin - es. Keduanya menahan diri

fluktuasi gelombang permukaan air.

Perairan seperti itu sangat puitis dan dicintai.

seniman. Ingat kolam yang ditumbuhi tanaman

dalam lukisan karya V. M. Vasnetsov “Alyonushka” atau

kolam ditutupi dengan bunga lili air di lanskap

Claude Monet...

Mengenai pengaruh pemerataan

lapisan es, bahkan di sini pun hal itu hanya mungkin

kagumi kekuatan observasi Pushkin,

yang menemukan perbandingan yang akurat dan elegan:

Lebih rapi dari parket yang modis

Sungai bersinar, tertutup es.

Tidak diragukan lagi, sungai dan kolam “membeku”.

Terkadang mereka memberi kesan seperti cermin air.

Dan, memang, horizontalitas yang nyata

ada, tetapi hanya di sedikit perairan

benda, paling sering kecil, tertutup-

ty, terisolasi dari pengaruh eksternal,

itupun untuk jangka waktu yang singkat dan tertentu

sepotong panjang. Jadi, untuk pertanyaan itu,

cantumkan di judul, itu lebih sering terjadi

jawabannya negatif. Dan jika itu setengah-

hidup, lalu dengan reservasi besar...

Seringkali dalam aplikasi tiga dimensi, lebih tepatnya di game, terdapat ruang air. Jika dulu dimungkinkan untuk bertahan dengan persegi panjang biru yang menunjukkan cairan, sekarang gambar air seperti itu tampak konyol dan sama sekali tidak memenuhi persyaratan tak terucapkan untuk grafik realistis. Para pengembang dihadapkan pada pertanyaan: bagaimana cara menggambarkan permukaan air?

Apa saja yang termasuk di dalamnya? Mari kita cari tahu.
1. Refleksi – tampilan pada permukaan air dari ruang yang terletak di atasnya. Poin ini mungkin yang paling penting ketika menggambarkan air yang kurang lebih realistis.
2. Pembiasan – tampilan ruang yang terletak di bawah permukaan air.
3. Nebula/kepadatan air - perubahan warna refraksi tergantung pada kedalaman (semakin dalam letak ruang dibandingkan dengan permukaan air, semakin gelap/berawan tampilannya).
4. Pencahayaan.
5. Ombak juga merupakan poin penting untuk menciptakan permukaan air yang realistis.

Sekarang mari kita cari tahu apa dan bagaimana diimplementasikan dari sudut pandang aplikasi.

1. Pertama, mari kita definisikan apa itu air. Ada beberapa kasus:
- segi empat
- model poli rendah
- model multipoligonal.

Tergantung pada tugas yang ada, salah satu metode implementasi dipilih. Yang paling sederhana adalah permukaan air berbentuk persegi (dua poligon). Gerakan fisik absen. Memengaruhi permukaan gelombang hanya dapat dicapai dengan bantuan kartu khusus perpindahan.
Model poligon rendah - tidak berbeda dengan model sebelumnya, hanya saja permukaannya terdiri dari beberapa poligon yang berosilasi menurut hukum tertentu (dalam kasus paling sederhana, sinusoidal). Hal ini menciptakan tampilan pergerakan gelombang yang “lebih dinamis”.
Model multi-poligon adalah cara yang sangat berbeda. Gelombang adalah susunan primitif yang berubah secara dinamis. Gambaran ombak paling jujur, tetapi juga opsi paling boros sumber daya. Sebaiknya hanya digunakan saat dibutuhkan level tertinggi kualitas.
Opsi pertama atau kedua paling sering digunakan.

2. Refleksi. Pantulan di permukaan air tidak lain hanyalah tekstur. Satu-satunya kesulitan adalah teksturnya terus berubah dan satu tekstur konstan saja tidak cukup (dengan pengecualian refleksi palsu - tekstur langit; metode ini tidak realistis dan sebaiknya digunakan hanya untuk mempercepat rendering, jika diperlukan). Mari kita cari tahu dari mana mendapatkan gambar ini. Pemantulan di permukaan air merupakan gambaran ruang di atas air, namun dipantulkan secara horizontal.

Untuk mendapatkannya Anda hanya perlu “memantulkan” kamera secara relatif terhadap permukaan air.

3. Refraksi. Semuanya serupa, hanya saja gambar pembiasannya adalah gambar yang persis seperti yang dilihat kamera, tidak memperhitungkan air itu sendiri.

4. Pencahayaan. Tidak ada yang aneh, pencahayaannya sederhana, sama seperti pada objek lainnya (agar airnya tidak berwarna monokromatik).

5. Gelombang. Seperti yang telah kami katakan, gelombang dapat digambarkan dengan dua cara (gelombang palsu menggunakan tekstur dan gelombang benar menggunakan geometri).
Jika semuanya jelas dengan geometri (posisi setiap titik berubah tergantung pada hukum fisika atau peta kebisingan), maka yang palsu menjadi sedikit lebih membingungkan, namun pada saat yang sama lebih sederhana.
Gelombang palsu dapat dicitrakan menggunakan dua hal: cahaya dan distorsi refleksi/refraksi. Paling hasil yang berkualitas dicapai melalui membagikan dua cara ini.


Dengan menggunakan peta normal, kami menyalakan air seolah-olah
Memang ada gelombang bantuan.


Dengan bantuan distorsi, kita “mengolesi” refleksi/refraksi di sepanjang struktur gelombang.

Seperti yang telah disebutkan, kami akan menerangi menurut struktur gelombang menggunakan peta normal.


Peta Biasa

Peta normal adalah file grafik yang saluran r/g/bnya berisi koordinat vektor normal, bukan warnanya. Biasanya terlihat seperti ini (peta yang mudah untuk melihat struktur objek, diterangi dengan warna biru-ungu).

Kami akan mendistorsi gambar di permukaan air (baik itu refraksi atau refleksi, atau kombinasi keduanya) menggunakan peta perpindahan koordinat tekstur.


Peta perpindahan koordinat tekstur (peta du/dv)

Peta perpindahan koordinat tekstur (atau peta du/dv) juga merupakan peta dengan struktur suatu objek, tetapi warnanya bisa sangat berbeda (dari abu-abu kecoklatan hingga kuning-merah). Peta seperti itu dalam saluran warna menyimpan jarak dimana koordinat tekstur berubah. Berdasarkan hal ini, formatnya dapat berbeda, baik saluran tunggal (peta dengan gradien hitam-putih) dan multisaluran (misalnya, dua saluran, untuk menyimpan offset sepanjang sumbu x dan sepanjang sumbu y. -sumbu secara terpisah).

Jadi, mari kita gunakan pengetahuan yang kita peroleh untuk membuat rencana kecil untuk menimba air di aplikasi kita. Kita butuh:
1. segi empat;
2. dua tekstur tambahan (peta normal dan peta du/dv);
3. beberapa metode untuk rendering refleksi normal;
4. shader yang akan merender semuanya.

Baiklah, mari kita lanjutkan ke implementasi.

2. Implementasi

#define FVF_XYZ_TEX1 (D3DFVF_XYZ|D3DFVF_TEX1) struktur VERTEX_XYZ_TEX1 ( VERTEX_XYZ_TEX1() ( ); VERTEX_XYZ_TEX1(D3DXVECTOR3 _pos, D3DXVECTOR2 _tex) ( pos = _pos; tex = _tex; ); 3 pos;

Buat struktur dan definisi untuk format vertex. Kita hanya akan menyimpan koordinat titik dan koordinat tekstur, tidak memerlukan apa-apa lagi.

kelas CWATER ( pribadi : LPDIRECT3DSURFACE9 psBackBuffer; LPDIRECT3DSURFACE9 psTextureReflect; D3DXMATRIX oldMatView; LPDIRECT3DVERTEXBUFFER9 vb_Water; LPDIRECT3DSURFACE9 pSurfaceZBuffer; LPDIRECT3DSURFACE9 pLastSurfaceZBuffer; // Resolusi tekstur refleksi dan buffer kedalaman tambahan int iTeksturResolusi; mengapung fLebarAir; mengapung fKedalaman Air; // Panjang dan lebar permukaan air publik : LPDIRECT3DTEXTURE9 tex_Reflect; // Tekstur refleksi void PreRenderForReflection(Kamera *Kamera);

void PostRenderForReflection(Kamera *Kamera);

CAIR();

~CAIR(); kekosongan Init(float _fWidthWater, float _fDepthWater, float fTexScale); // Inisialisasi batal Draw(); ); Inilah kelas utama untuk air. Di sini kita melihat beberapa variabel yang bahkan tidak disebutkan sebelumnya. Mari kita cari tahu mengapa itu terjadi?

Kita akan menggambar refleksi (dan refraksi jika diinginkan) ke dalam tekstur. Ini berarti pertama-tama kita perlu membuat permukaan untuk tekstur ini. Kami akan menyimpannya di psTextureReflect. Sebelum menambahkan ruang ke dalamnya, Anda perlu menunjukkan ke perangkat bahwa rendering sedang dilakukan pada tekstur dan bukan pada buffer belakang. Tetapi untuk menggambar dengan benar ke buffer belakang nanti, Anda perlu mengingatnya dan mengembalikannya. Kami akan mengingatnya di psBackBuffer.
Ini adalah bagaimana kita mengubah Target Render yang aktif, tetapi untuk menghindari masalah saat menggambar ke dalam tekstur (digambar seolah-olah buffer kedalaman dinonaktifkan atau kliping tidak diatur dengan benar), kita perlu melakukan sesuatu yang lain. Faktanya adalah ukuran buffer belakang sama dengan nilai tertentu (biasanya 1024x768), dan ketika kita menggambar suatu tekstur, kemungkinan besar resolusinya berbeda, yang berarti buffer kedalaman ini tidak cocok untuk itu. Anda hanya dapat menggunakannya jika ukuran buffer lebih besar atau

sama dengan ukuran

tekstur tempat kita menggambar.

Ternyata kita harus membuat dua permukaan lagi (untuk mengingat masa lalu dan menyimpan buffer saat ini). Ini adalah pSurfaceZBuffer dan pLastSurfaceZBuffer.

iTextureResolution – resolusi tekstur untuk refleksi (semakin tinggi, semakin baik refleksinya, tetapi juga metode yang lebih intensif sumber daya).

void CWATER::Init(float _fWidthWater=10.0f, float _fDepthWater=10.0f, float fTexScale=1.0f) ( fWidthWater=_fWidthWater; fDepthWater=_fDepthWater; D3DXCreateTexture(D3DDevice, iTextureResolution, tureResolution, 1, RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &tex_Reflect ); = D3DXVECTOR3(0.0f, 0.0f, 0.0f); p[k].tex = D3DXVECTOR2(0.0f,0.0f); (0.0f, 0, 0.0f); ,0.0f); p[k].pos = D3DXVECTOR3(0.0f, 0, fDepthWater); , fKedalamanAir); p[k].tex = D3DXVECTOR2(fTexScale, fTexScale);

++k;

batal *pBuf;

vb_Water->Kunci(0, 6 * ukuran(VERTEX_XYZ_TEX1), &pBuf, 0); memcpy(pBuf, p, 6 * ukuran(VERTEX_XYZ_TEX1)); vb_Air->Buka Kunci();

void CWATER::PreRenderForReflection(Kamera *Cam) ( D3DXVECTOR3 CamPos = Cam->GetCamPos(); D3DXVECTOR3 ViewPos = Cam->GetViewPos(); Cam->GetViewMat(&oldMatView); D3DXVECTOR3 h = CamPos; float tmp = CamPos.y -ObjPos.y; h.y = CamPos.y - 2*tmp; float tmpv = ViewPos.y-ObjPos.y; &h,&hv,&D3DXVECTOR3(0.0f, 1.0f, 0.0f)); &MatrixView); SetRenderTarget(0, psTextureReflect); D3DDevice->GetDepthStencilSurface(&pLastSurfaceZBuffer);

Namun fungsi ini melakukan sekitar setengah dari seluruh pekerjaan rendering refleksi. Di sini kita mengambil posisi kamera dan posisi yang dilihatnya (posisi pandangan, bukan arah), ingat matriks tampilan saat ini. Selanjutnya ada intrik kecil untuk menggerakkan kamera ke tempat yang tepat (agar pantulan benar, kita gerakkan kamera relatif terhadap permukaan air, bisa dilakukan dengan cara lain, misalnya melalui pantulan. fungsi dari bidang air (dari perpustakaan D3DX), dll, tetapi intinya tetap satu). Kami membentuk dan menginstal matriks baru baik. Selanjutnya, simpan dan atur nilai rendering baru untuk perangkat (permukaan). Dan tentunya kita membersihkan teksturnya.

void CWATER::PostRenderForReflection(Kamera *Cam) ( Cam->SetViewMat(&oldMatView); D3DDevice->SetRenderTarget(0, psBackBuffer); D3DDevice->SetDepthStencilSurface(pLastSurfaceZBuffer); )

Setelah pantulan digambar ke dalam tekstur, semuanya harus dikembalikan ke tempatnya, seperti sebelum transformasi kamera.

Sekarang mari kita lihat paruh kedua dari keseluruhan rendering permukaan air - gambar shader.

float statis4x4 Mr= ( 0,5, 0, 0, 0, 0, 0,5, 0, 0, 0, 0, 0,5, 0, 0,5, 0,5, 0,5, 1 );

Inilah yang memungkinkan kita menggambar refleksi dengan benar – “matriks refleksi”. Dia adalah dirinya yang sebenarnya dan tidak perlu mengubah apa pun di sini. Konstan, boleh dikatakan.

float f_height_wave; //tinggi gelombang float4x4 WVP; //dunia * tampilan * matriks proyeksi waktu mengapung seragam; //waktu delta - waktu yang berlalu per frame tekstur tex_tex; //tekstur refleksi tekstur tex_bumpMap; //tekstur dengan benjolan tekstur tex_bumpdudv1; //tekstur dengan koefisien pergeseran koordinat float3 vec_light_dir; //vektor arah cahaya float4Posisi Mata; //posisi kamera float4 Warna Terang; //warna terang float4 MatColor; //warna air mengapung4x4 Dunia; //matriks dunia melayang Ambient; //cahaya latar belakang

Semuanya jelas di sini, kecuali f_height_wave. Ini adalah koefisien perpindahan koordinat tekstur.


Gelombang "tinggi" = 12


Gelombang "tinggi" = 2

sampler tex = sampler_state (Tekstur = (tex_tex); ADDRESSU=CLAMP; ADDRESSV=CLAMP;); sampler bumpMap = sampler_state(Tekstur = (tex_bumpMap);MIPFILTER = LINEAR;MAGFILTER = LINEAR;MINFILTER = LINEAR;); sampler bumpdudv1 = sampler_state(Tekstur = (tex_bumpdudv1);MIPFILTER = LINEAR;MAGFILTER = LINEAR;MINFILTER = LINEAR;); struct VS_INPUT ( float4 pos: POSISI; float2 texc:TEXCOORD0; ); struct VS_OUTPUT ( float4 pos: POSISI; //posisi float2 tex2:TEXCOORD0; //koordinat tekstur untuk peta bump float2 tex3:TEXCOORD1; //koordinat tekstur untuk peta du/dv float4 pspos:TEXCOORD2; //posisi (untuk menghitung koordinat pantulan) float3 ViewDir:TEXCOORD3; //arah dari kamera ke atas };

Tidak ada yang aneh juga di sini, prosedur standar.

VS_OUTPUT vs_main(VS_INPUT MASUK) ( VS_OUTPUT KELUAR; //menghitung posisi air pada sistem koordinat layar KELUAR.pos = mul(IN.pos,WVP); //lihat arah OUT.ViewDir = EyePosition - mul(IN.pos,Dunia); KELUAR.pspos = KELUAR.pos;//hitung koordinat tekstur baru OUT.tex2.x = IN.texc.x + sin (waktu)*0.4;//itu. menggeser koordinat tekstur ini OUT.tex2.y = IN.texc.y - cos (waktu)*0,3;//untuk kedua kartu atas dan bawah OUT.tex3.x = IN.texc.x - sin (waktu)*0.4;//searah jarum jam mengelilingi lingkaran

OUT.tex3.y = IN.texc.y + cos (waktu)*0.3;

float4 ps_main(float2 texCoord2: TEXCOORD0, float2 texCoord3: TEXCOORD1, float4 pspos: TEXCOORD2, float3 ViewDir:TEXCOORD3): WARNA ( hasil float4; float3 colorOne = 2.0f * tex2D (bumpMap, texCoord2.xy) - 1. 0f; float3 colorTwo = 2.0f * tex2D (bumpMap, texCoord3.xy*0.5) - 1.0f; float3 normal = normalisasi (colorOne+colorTwo + float3 (0.0,0.5,0.0)); float3 WorldNormal = normalisasi (mul (normal,(float3x3 )World ) ); float3 teksturcoordoffset = 2.0f * tex2D (bumpdudv1,texCoord2.xy) - 1.0f; = normaloffset; diTexProj = mul(pspos,Mr); hasil = tex2Dproj(tex, diTexProj); // float3 Reflect = mencerminkan(-LightDir, WorldNormal); float3 Reflect = mencerminkan (-LightDir, 1.14*I *WorldNormal);

float4 Specular = pow (0,5*(1,0+(titik (Reflect, ViewDir))) ,256); hasil = LightColor * MatColor * hasil * I + Specular*LightColor; hasil.a = 1,0; hasil pengembalian; ) Di fragment shader, kami menghitung rata-rata normal (dan Anda dapat melakukannya sesuka Anda, ada banyak opsi). Sebelum normalisasi (ini masih normal), kita sesuaikan normalnya dengan sedikit mencondongkannya ke arah vektor (0,1,0), karena permukaan airnya horizontal. Anda tidak perlu melakukan ini, tetapi hasilnya terlihat lebih baik dengan cara ini (tentu saja, Anda dapat mengedit peta normal, tetapi

metode ini

jauh lebih mudah). Kemudian kita menerjemahkan normal kita ke dalam koordinat dunia (hanya untuk tujuan penerangan). Kita melakukan hal yang sama seperti yang kita lakukan pada normal untuk mengimbangi koordinat tekstur (texturecoordoffset(2)). Selanjutnya, kalikan dengan koefisien “tinggi gelombang”. Dan kemudian sampai pada bagian yang paling menarik: kita menambahkan offset pada posisi permukaan air

koordinat layar

Sekarang mari kita lihat penggunaan kelas kita. Tambahkan file dengan kelas air:

Catatan. Kelas kecil (EffectClass.h) telah ditambahkan ke kode sumber untuk memuat efeknya.
Kelas tidak dibahas dalam artikel, karena hanya berhubungan secara tidak langsung dengannya.

#include "water.h" #include "EffectClass.h" CWATER Air; CEFFECT pActiveEffect; mengambang tt=0,0f; IDirect3DTekstur9* tex1; IDirect3DTekstur9* tex2;

Buat air dan dua tekstur (peta normal dan peta perpindahan koordinat tekstur).

Fungsi pengambilan air:

void DrawWater() ( tt +=DeltaTime*0.3f; dunia D3DXMATRIX,matView,matProj; D3DXMatrixTranslation (&world, Water.ObjPos.x, Water.ObjPos.y, Water.ObjPos.z); ActiveCamera->GetViewMat(&matView) ; D3DDevice->GetTransform(D3DTS_PROJECTION,&matProj); pActiveEffect.AddToConstMatWVP("WVP",&dunia); pActiveEffect.AddToConstTexture("tex_tex",Water.tex_Reflect); f)); pActiveEffect.AddToConstVec3("MatColor",&D3DXVECTOR3(0.7f,0.7f,0.7f)); -1.0Fffect.AddtoCstVec3 ("VEC_LIGHT_DIR", & DIR); TT); ,2.0f); pActiveEffect.AddToConstTexture("tex_bumpMap",tex1);

pActiveEffect.End(); )

tt adalah variabel global yang “tumbuh” dengan setiap frame. Kecepatan pergerakan kamera, kecepatan gelombang, dll bergantung padanya. (itu melambangkan waktu). Segala sesuatu yang terjadi sebelum pActiveEffect.Begin() hanyalah mengisi data untuk shader, jadi tidak perlu berhenti di sini.

PActiveEffect.Begin(); pActiveEffect.Mulai(0); pActiveEffect.Selesai();
pActiveEffect.End();

Kombinasi ini hanya menentukan

teknik aktif

dan bagian.

Water.Draw() menyebabkan air diambil.

Tex1->Rilis();

tex2->Rilis();

Nah, pada fungsi menggambarnya:

DRAW_ALL_SCENE_OBJECTS_EXCEPT_WATER_ Air.PreRenderForReflection(ActiveCamera);

_DRAW_ALL_SCENE_OBJECTS_EXCEPT_WATER_ Air.PostRenderForReflection(ActiveCamera);

DrawWater();

Selanjutnya kita menggambar semua objek, memanggil persiapan untuk menggambar refleksi, menggambar semua objek lagi (jika ada beberapa, jangan lupa mengubah matriks dunia), tetapi ke tekstur, dan mengembalikan nilai yang sebelum menggambar tekstur dengan memanggil PostRenderForReflection . Terakhir, kita menggambar air itu sendiri dengan pantulan di atasnya (panggil fungsi DrawWater).
Itu saja!

4. Kode sumber

Di sini Anda dapat mengunduh contoh artikel dengan kode sumber.

Saya harap semuanya berhasil untuk Anda! Di dalam kerak bumi, peran air sangatlah luar biasa. V.I.Vernadsky

Hal ini juga dicatat bahwa Belahan bumi utara Planet ini pada dasarnya merupakan “benua” (39,4 persen daratan), dan bagian selatan “samudera” (19 persen). Sebagian besar permukaan benua terlihat jika Anda berada di atas muara sungai. Loire: Di sekitar "kutub benua" daratan mencakup 47 persen wilayah yang terlihat. “Kutub samudera” akan berada di dekat Selandia Baru (air menutupi 89 persen permukaannya). Cakupan lega bumi signifikan: dari 8.848 meter - puncak Chomolungma hingga 11.020 meter - dasar Palung Mariana. Namun jika dibandingkan dengan radius geoid, nilai ini tidak signifikan: elevasi permukaan positif hanya 11/10.000, dan negatif 17/10.000. Kedalaman rata-rata lautan 6/10.000, tinggi rata-rata daratan adalah sekitar 1/10.000. Oleh karena itu, perbedaan relief bumi pada bola bumi dengan radius 10 meter akan berkisar antara 1 hingga 17 milimeter relatif terhadap permukaan laut. Oleh karena itu kesimpulannya: air di bumi sangat sedikit, meskipun menurut berbagai perkiraan volume air permukaan adalah 1380-1450 juta kilometer kubik. Mungkin jumlah air yang masuk sama perut bumi

. Menurut S.M. Grigoriev, dangkal dan Air tanah berada dalam keseimbangan dinamis sampai ke dasar permukaan Mohorovicic, dan air bertindak sebagai pendingin aktif, zat pengangkut pelarut. sedikit menonjol adalah kumpulan benua yang dibedah dengan lemah dengan rangkaian pegunungan yang sempit. Beberapa puluh ribu tahun yang lalu (pada masa Pleistosen), permukaan Laut Dunia lebih rendah 100 meter. Dan, meskipun hamparan laut yang luas merupakan daratan kering, bentuk benua tidak jauh berbeda dari sekarang. Kontur benua tidak akan banyak berubah meskipun permukaan Laut Dunia turun 2-3 ribu meter. M.V.Muratov (1975) menganggap ini sebagai ciri dasar cekungan samudera - permukaan bumi yang sebenarnya, tidak bergantung pada besarnya permukaan air. Perbedaan utamanya adalah struktur yang berbeda ruang benua dan samudera sebagai antipode geologis, yang dijelaskan oleh faktor planet yang telah beroperasi selama lebih dari 4 miliar tahun.

Ahli kelautan H. Wright menulis pada tahun 1961: “... hamparan luas air yang kita lihat saat ini telah bertambah setetes demi setetes sepanjang kehidupan planet kita karena air merembes dari perut bumi.” Kemungkinan besar, munculnya faktor eksternal cangkang air mengacu pada era yang jauh dari zaman kita selama 3 atau bahkan 3,5 miliar tahun. Dan, mungkin, garis besar benua tidak banyak berubah selama ini. Tentu saja, lautan dalam muncul relatif baru. Dan proses salinisasi Samudra Dunia merupakan faktor geologis yang kuat, karena air larut lebih intensif batu pemeran utama. E. A. Dolginov (1978) mencatat hal itu kebanyakan teluk laut terletak di zona dan wilayah yang terdiri dari paus hitam, gneis, dan batuan beku dengan komposisi dasar, dan tanjung serta semenanjung benua dibangun dari granitoid dan granit-gneis yang lebih stabil. Hal ini terutama terlihat jelas di zona fyord, yang biasanya terbentuk di lokasi tanggul dengan komposisi dasar.



Apakah Anda menyukai artikelnya? Bagikan dengan temanmu!