DIRECTX 10 ve SHADER PROGRAMLAMA
|
|
- Su Pamuk
- 8 yıl önce
- İzleme sayısı:
Transkript
1 KARADENİZ TEKNİK ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü Bilgisayar Grafikleri Laboratuarı DIRECTX 10 ve SHADER PROGRAMLAMA 1. Giriş Bilgisayar donanımının en önemli parçalarından biri olan ekran kartı ile ilgili teknolojik gelişmeler beraberinde bu donanımı programlayacak yazılımlarda da büyük yenilikler getirmiştir. Bu yazılımlardan biri olan DirectX, günümüzde ekran kartlarının programlanmasında yaygın olarak kullanılan bir API dır. DirectX 10 'un DirectX 9 'dan en büyük farkı ekran kartını programlamada bütün kontrolün programcıya devredilmesidir. Bu yüzden en basit bir DirectX 10 uygulaması için bile ekran kartının vertex işlemcisini programlamak için vertex shader, pixel işlemcisini programlamak için de pixel shader adı verilen programların yazıldığı HLSL (High Level Shading Language) diline ihtiyaç vardır. Dolayısıyla bu deneyde HLSL vertex/pixel shader programlarının yüklenip koşulduğu DirectX 10 uygulamaları yapılacaktır. 2. Visual C için DirectX 10 Setlemeleri Bu bölümde Visual C için gerekli DirectX 10 setlemeleri yapılıp uygulama penceresini mavi renge boyayacak DirectX 10 programı yazılacaktır. DirectX uygulamaları geliştirmek için şu an en güncel SDK olan June 2010 DirectX SDK ( kurulur. C:\Program Files\Microsoft DirectX SDK (June 2010) altındaki include ve lib\x86 klasörlerindeki dosyalar C:\Program Files\Microsoft Visual Studio 9.0\VC altındaki include ve lib klasörlerine kopyalanır. Visual C++ ta Win 32 Application türünden bir Empty Project açılır. Menüden Project-Properties penceresinde Linker-Input-Additional Dependencies kısmına d3d10.lib ve d3dx10d.lib yazılır. Projeye eklenen boş.cpp uzantılı dosyaya <d3d10.h>, <d3dx10.h> dosyaları include edilir ve ekranda boş bir pencere oluşturmak için gerekli kodlar yazılır. Bu C++ programına DirectX komutları yazılacağından deney boyunca DirectX Programı olarak bahsedilecektir. Aşağıdaki WinMain(...) fonksiyonundaki InitWindow(...) çağrısı ile pencere; InitDevice() çağrısı ile de DirectX 10 ile ilgili setlemeler yapılır. Mesaj döngüsündeki Render() çağrısı ile pencere DirectX komutlarıyla mavi renge boyanır: int WINAPI wwinmain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPWSTR lpcmdline, int ncmdshow ) InitWindow( hinstance, ncmdshow ); InitDevice(); MSG msg = 0; while( WM_QUIT!= msg.message ) if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) TranslateMessage( &msg ); DispatchMessage( &msg ); else Render(); return ( int )msg.wparam;
2 Şekil.1: DirectX 10 için lib ve header setlemeleri DirectX te ekranda çizilmek istenen 3D şekil aslında ekran kartının belleğinde tutulur. Bu belleğe Video RAM (VRAM) denir. VRAM içeriğinin değiştirilmesi ve ekranda görüntülenmesi işlemleri birbirine karışmaması için double buffering yöntemi kullanılır. Bu yönteme göre front ve back olmak üzere iki adet buffer kullanılır. Front buffer ekranda o anda görüntülenecek veriyi tutarken back buffer da bir sonraki görüntüye ait veriyi tutar. Ona sıra geldiğinde back buffer bu sefer front buffer olup onda tutulan veri ekranda görüntülenirken front buffer da back buffer olarak bir sonra ekranda görüntülenecek veriyi hazırlar. Böylece görüntüler arası geçişlerde karışıklık (flicker) olmaz. Programda bu bufferlara ait bilgiler InitDevice() fonksiyonundaki DXGI_SWAP_CHAIN_DESC adlı structure ile setlenir: DXGI_SWAP_CHAIN_DESC sd; ZeroMemory( &sd, sizeof( sd ) ); sd.buffercount = 1; sd.bufferdesc.width = width; sd.bufferdesc.height = height; sd.bufferdesc.format = DXGI_FORMAT_R8G8B8A8_UNORM; sd.bufferdesc.refreshrate.numerator = 60; sd.bufferdesc.refreshrate.denominator = 1; sd.bufferusage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.outputwindow = g_hwnd; sd.sampledesc.count = 1; sd.sampledesc.quality = 0; sd.windowed = TRUE; for( UINT drivertypeindex = 0; drivertypeindex < numdrivertypes; drivertypeindex++ ) g_drivertype = drivertypes[drivertypeindex]; D3D10CreateDeviceAndSwapChain( NULL, g_drivertype, NULL, createdeviceflags, D3D10_SDK_VERSION, &sd, &g_pswapchain, &g_pd3ddevice ); Burada sd.bufferusage = DXGI_USAGE_RENDER_TARGET_OUTPUT; ile ekranda görüntülenecek verinin back buffera yazıldığı söylenir. Son olarak D3D10CreateDeviceAndSwapChain(...) ile Device ve SwapChain oluşturulur. DirectX komutlarının çağrılmasında Device değişkeni kullanılır. Buradaki Device değişkeninin ismi g_pd3ddevice dır. 2
3 Ekranda görüntülenmek istenen veriyi back buffera yazmak için aşağıdaki şekilde CreateRenderTargetView oluşturulmalıdır: ID3D10Texture2D* pbackbuffer; g_pswapchain->getbuffer( 0, uuidof( ID3D10Texture2D ),(LPVOID*)&pBackBuffer ); g_pd3ddevice->createrendertargetview( pbackbuffer, NULL, &g_prendertargetview ); pbackbuffer->release(); g_pd3ddevice->omsetrendertargets( 1, &g_prendertargetview, NULL ); Son olarak çizim yapılacak pencere ile ilgili setlemeler yapılır : D3D10_VIEWPORT vp; vp.width = width; vp.height = height; vp.mindepth = 0.0f; vp.maxdepth = 1.0f; vp.topleftx = 0; vp.toplefty = 0; g_pd3ddevice->rssetviewports( 1, &vp ); Setlemeler tamamlandığından Render() fonksiyonu ile çizim yapılabilir: void Render() float ClearColor[4] = 0.0f, 0.0f, 1.0f, 1.0f ; //red, green, blue, alpha g_pd3ddevice->clearrendertargetview( g_prendertargetview, ClearColor ); g_pswapchain->present( 0, 0 ); Burada ClearColor değişkeni mavi renk için gerekli (R,G,B,A) değerlerini tutar. Ekranın tamamını mavi renge boyamak için g_pd3ddevice->clearrendertargetview(...) komutu kullanılır. Back buffer içeriğini ekranda görebilmek için de g_pswapchain->present(...) komutu gerekir. Şekil.2: DirectX 10 Mavi Pencere Uygulaması 3
4 3. DirectX 10 ile Üçgen Çizimi Bu bölümde ekrana kırmızı renge sahip bir üçgen çizdirilecektir. Çizdirilmek istenen üçgenin köşe noktalarının (vertex ler) koordinatları D3DXVECTOR3 türünden tanımlanır. Yalnız çoğu zaman köşe noktaları için koordinatlardan başka renk, doku koordinatları, normal gibi başka özelliklere ihtiyaç duyulur. Üçgenin köşe noktalarının bunlardan hangilerini kullandığını belirtmek için aşağıdaki gibi bir structure tanımlaması yapılmalıdır: struct SimpleVertex D3DXVECTOR3 Pos; ; İlerleyen örneklerde SimpleVertex yapısına D3DXVECTOR4 Color, D3DXVECTOR3 Normal ile renk ve yüzey normali gibi farklı özellikler eklenecektir. Üçgenin köşe noktalarını tutmak üzere vertex buffer üretilmelidir. Bunun için D3D10_BUFFER_DESC ve D3D10_SUBRESOURCE_DATA setlemelerinin ardıdan CreateBuffer(...) ile vertex buffer oluşturulur: SimpleVertex vertices[] = D3DXVECTOR3( 0.0f, 1.0f, 1.0f ), D3DXVECTOR3( 1.0f, -1.0f, 1.0f ), D3DXVECTOR3( -1.0f, -1.0f, 1.0f ) ; D3D10_BUFFER_DESC bd; bd.usage = D3D10_USAGE_DEFAULT; bd.bytewidth = sizeof( SimpleVertex ) * 3; bd.bindflags = D3D10_BIND_VERTEX_BUFFER; bd.cpuaccessflags = 0; bd.miscflags = 0; D3D10_SUBRESOURCE_DATA InitData; InitData.pSysMem = vertices; g_pd3ddevice->createbuffer( &bd, &InitData, &g_pvertexbuffer ); Üçgen çizmede bu noktaya kadar yapılan setlemeler InitDevice() fonksiyonuna yazıldı. Şimdi çizim aşamasına gelindi. Çizim işlemini yapan Render() fonksiyonunun yeni hali aşağıdaki gibidir: void Render() float ClearColor[4] = 0.0f, 0.0f, 1.0f, 1.0f ; // red,green,blue,alpha g_pd3ddevice->clearrendertargetview( g_prendertargetview, ClearColor ); D3D10_TECHNIQUE_DESC techdesc; g_ptechnique->getdesc( &techdesc ); for( UINT p = 0; p < techdesc.passes; ++p ) g_ptechnique->getpassbyindex( p )->Apply( 0 ); g_pd3ddevice->draw( 3, 0 ); g_pswapchain->present( 0, 0 ); Üçgenin 3 köşe noktası g_pd3ddevice->draw(3,0) komutu ile çizdirilmektedir. Bu komutun dışındaki satırların anlaşılabilmesi için 1.Giriş bölümünde bahsedildiği gibi ekran kartının Vertex ve Pixel işlemcisini programlama imkanı sağlayan HLSL dilinden bahsedilmesinde fayda vardır: 4
5 1. Vertex İşlemci : Bu işlemci adından da anlaşılacağı gibi köşe noktalarını işler. Onların 3D dünya (world) koordinatlarından 2D ekran koordinatlarına dönüşümü, backface culling (arka yüz kaldırma), clipping (kırpma), Z-buffering (Z derinlik tamponu ile görünmeyen yüzeyleri kaldırma) ve doku koordinatı hesabı yapar. 2. Pixel İşlemci : Bu işlemci, vertex shaderdan aldığı ekran koordinatlarındaki 2D poligonların içini hesaplanan renge boyar. Bu işlemcileri programlamak için geliştirilmiş dillere Shading Dilleri denir. Bu dillerde vertex işlemciyi programlamak için yazılan kodlara Vertex Shader; pixel işlemciyi programlamak için yazılan kodlara da Pixel Shader denir. Vertex shader koordinat; pixel shader renk döndürür. DirectX 10 un shading dili HLSL (High Level Shading Language) dir ve HLSL programı olmaksızın DirectX 10 programı yazılamaz. Yukarıdaki g_pd3ddevice->draw(3,0) komutu koştuğunda gerçekte çizim işlemini yapan Triangle.fx adlı HLSL programı şöyledir: matrix World; matrix View; matrix Projection; struct VS_OUTPUT float4 Pos ; : SV_POSITION; VS_OUTPUT VS( float4 Pos : POSITION ) VS_OUTPUT output = (VS_OUTPUT)0; output.pos = mul( Pos, World ); output.pos = mul( output.pos, View ); output.pos = mul( output.pos, Projection ); return output; float4 PS() : SV_Target return float4(1,0,0,1); // red,green,blue,alpha technique10 Render pass P0 SetVertexShader( CompileShader( vs_4_0, VS() ) ); SetPixelShader( CompileShader( ps_4_0, PS() ) ); Yukarıdaki HLSL programının anlatımından önce HLSL programlarının DirectX programı içinden çağrılmasından bahsetmekte fayda vardır: D3DX10CreateEffectFromFile( "Triangle.fx", NULL, NULL, "fx_4_0", dwshaderflags, 0, g_pd3ddevice, NULL, NULL, &g_peffect, NULL, NULL ); HLSL programları D3DX10CreateEffectFromFile(...) komutu ile çağrılır. Burada Triangle.fx,HLSL programının ismidir. g_pd3ddevice bilindiği gibi DirectX device değişkenidir. g_peffect ise HLSL effect değişkenidir. DirectX programı içinde HLSL programı ile ilgili komutlar g_peffect değişkeni ile çağrılır. HLSL dilinde yapılmış programlar "effect" olarak adlandırılır ve ".fx" uzantılı kaydedilirler. 5
6 "fx_4_0" HLSL programının shading model 4.0, başka bir değişle DirectX 10 desteği ile derleneceğini söyler. DirectX 9 shading model 3.0'ı destekler. Örneğin nvidia firmasının ekran kartlarından GeForce 7 serisi 3.0, Geforce 8 ve 9 serisi 4.0 ı destekler. O yüzden DirectX 10 programlarını koşması için ekran kartının en azından (nvidia için) Geforce 8 veya yukarısı olması gerekir. İşletim sistemi de Vista veya Windows 7 olmalıdır. DirectX 11 yazılım olarak 1 yılı aşkın bir süredir vardır. Donanım olarak ise nvidia Geforce GTX 400, ATI Radeon 5450 ve yukarısı ekran kartları DirectX 11 i desteklemektedir. Yukarıdaki programın vertex shaderı VS(...), pixel shaderı PS(), main fonksiyonu da Render() dır. Bu fonksiyon, InitDevice() içinde g_ptechnique = g_peffect->gettechniquebyname("render") ile tanıtılmıştır. DirectX programının Render() fonksiyonundaki D3D10_TECHNIQUE_DESC techdesc ve g_ptechnique->getdesc(&techdesc) satırları ile HLSL programının Render() fonksiyonu çağrılmış ve bu fonksiyondaki vertex shader ve pixel shader çağrıları ile çizim işlemi HLSL programına yaptırılmıştır. Programın başındaki World, View, Projection matrisleri vertex shaderda dünya koordinatlarından ekran koordinatlarına dönüşümü gerçekleştirmek için kullanılır. World matrisi ile 3D nesneler için ölçekleme (büyültme, küçültme), dönme (rotasyon) ve öteleme (translation) dönüşümleri yapılır. World matrisi DirectX programında D3DXMatrixIdentity(&g_World) ile başlangıç değeri olarak birim (identity) matrise setlenmiştir. View matrisinde bakış noktasının konumu ve bakış doğrultusu ile ilgili bilgiler tutulur: D3DXVECTOR3 Eye( 0.0f, 3.0f, -8.0f ); // Bakış noktası D3DXVECTOR3 At ( 0.0f, 0.0f, 1.0f ); // Bakış doğrultusu D3DXVECTOR3 Up ( 0.0f, 1.0f, 0.0f ); D3DXMatrixLookAtLH( &g_view, &Eye, &At, &Up ); Projection matrisi perspektif dönüşümü yapmak üzere şu şekilde setlenir: D3DXMatrixPerspectiveFovLH(&g_Projection, D3DX_PI*0.25f, 1.33f, 0.1f, 100.0f ); Burada D3DX_PI*0.25f, 3D ortamın 45 derecelik bir açı ile gözlemlendiğini, 1.33f pencerenin yatay düşey oranını (aspect ratio = 800/600), 0.1f ve 100.0f de near ve far planeleri temsil eder. Yani Z derinlik değeri olarak en yakın Z=0.1f birim ile en uzak Z=100.0f değerine sahip koordinatların arasında kalan görüş piramidinin (Viewing Frustum) içindeki nesnelerin gözlemlendiğini söyler: Şekil.3: Görüş Piramidi (Viewing Frustum) Şekil.4: Sağ, sol el kuralına göre kartezyen koordinatlar 6
7 D3DXMatrixPerspectiveFovLH ifadesindeki Fov Field of view, LH da Left Handed demektir. Sol el kuralına göre 4 parmak +X eksenini gösterirken +Y eksenini gösterecek şekilde döndürüldüğünde baş parmağın işaret ettiği doğrultu +Z eksenini temsil etmektedir ve bakış noktasından ileriye doğrudur. DirectX sol el kuralına göre, OpenGL de sağ el kuralına kartezyen koordinatları belirler. Sol el kuralına göre üçgenlerin köşe noktaları saat yönünde (Clock Wise CW ) sıralanmalıdır. Bu durumda tam karşımızda Z düzlemine dik duran duran üçgenin normali bize doğrudur. Yani onu görürüz. Eğer köşe noktaları saat yönünün tersi (Counter Clock Wise CCW ) sırada dizilirse bu sefer normal bize bakmaz. Yani back face olur. O yüzden de üçgeni göremeyiz. Görünmeyen Yüzeylerin Kaldırılması deney föyünde back face culling (arka yüz kaldırma) hakkında detaylı bilgi vardır. Bu örnekte üçgenin bir görünüp bir kaybolması köşe noktalarının dizilişinin dönerken değişmesinden (CW<-->CCW) kaynaklanmaktadır. D3DXMatrixRotationY(&g_World,t) komutu ile üçgen Y ekseni etrafında t açısı kadar dönmektedir. Bilindiği gibi nesnelerin konumları ile ilgili ölçekleme, dönme ve öteleme gibi değişiklikler g_world matrisi ile yapılıyordu. Dikkat edilirse HLSL programındaki World, View, Projection matrisleri ile bu matrislere DirectX 10 programında atama yapılırken kullanılan g_world, g_view, g_projection değişkenleri birbirinden farklıdır. Bu değişkenlerin değerlerinin HLSL<-->DirectX programları arasında aktarımı ID3D10EffectMatrixVariable* türünden g_pworldvariable, g_pviewvariable, g_pprojectionvariable değişkenleri kullanılarak aşağıdaki gibi iki aşamada gerçekleştirilir: 1. AŞAMA : InitDevice() fonksiyonunda: g_pworldvariable g_pviewvariable g_pprojectionvariable = g_peffect->getvariablebyname( "World" )->AsMatrix(); = g_peffect->getvariablebyname( "View" )->AsMatrix(); = g_peffect->getvariablebyname( "Projection" )->AsMatrix(); 2. AŞAMA : Render() fonksiyonunda: g_pworldvariable->setmatrix( ( float* )&g_world ); g_pviewvariable->setmatrix( ( float* )&g_view ); g_pprojectionvariable->setmatrix( ( float* )&g_projection ); World, View, Projection matrisleri dünya koordinatlarından ekran koordinatlarına dönüşüm işlemini gerçekleştirdiğinden HLSL programının VS adlı vertex shaderı tarafından kullanılmışlardır. PS adlı pixel shader da return float4(1,0,0,1)ile üçgenin içini kırmızıya boyamaktadır. Şekil.5: DirectX 10 ile Üçgen Çizimi 7
8 4. DirectX 10 ile Küp Çizimi Bu uygulamanın üçgen çiziminden en önemli farklı vertex buffera ek olarak index buffer kullanılmasıdır. Bilindiği gibi vertex buffer köşe noktalarının koordinatlarını tutuyordu. Index buffer bu köşe noktalarını indisleyerek üçgenleri oluşturur: DWORD indices[] = 3,1,0, // 1. ÜÇGEN 2,1,3, 0,5,4, 1,5,0, 3,4,7, 0,4,3, 1,6,5, 2,6,1, 2,7,6, 3,7,2, 6,4,5, 7,4,6, // 12. ÜÇGEN ; bd.usage = D3D10_USAGE_DEFAULT; bd.bytewidth = sizeof( DWORD ) * 36; // 36 vertices needed for 12 triangles bd.bindflags = D3D10_BIND_INDEX_BUFFER; bd.cpuaccessflags = 0; bd.miscflags = 0; InitData.pSysMem = indices; g_pd3ddevice->createbuffer( &bd, &InitData, &g_pindexbuffer ); g_pd3ddevice->iasetindexbuffer( g_pindexbuffer, DXGI_FORMAT_R32_UINT, 0 ); indices[] dizisi ile üretilen index buffer, küpün vertex bufferda tutulan 8 köşe noktasını temsil eden [0..7] arası değişen indisleri üçer üçer alarak sol el kuralına uygun olarak saat yönünde üçgenleri oluşturur. 6 yüzeye sahip küpün her bir yüzeyi 2 üçgenden oluştuğundan indices[] dizisinde 6x2=12 üçgeni temsil etmek üzere toplam 12x3=36 tane indis vardır. Küpün sadece vertex buffer ile de çizilmesi mümkündür. Yalnız bu durumda 36 tane köşe noktası içeren bir vertex buffer tanımlanmalıdır. Bu ise bellek israfı demektir. Index buffer kullanıldığı için Render() fonksiyonundaki çizim komutu DrawIndexed( 36, 0, 0 ) şeklinde değiştirilmiştir. Şekil.6: DirectX 10 ile Küp Çizimi 8
9 5. Aydınlatma (Lighting) Şekil.7: Lambert'in Kosinüs Kanununa göre diffuse renk katsayısı Burada önceki örnekte çizilen küp 2 farklı ışık kaynağı tarafından Lambert'in Kosinüs Kanununa göre Diffuse renk hesabı yapılarak aydınlatılacaktır. Bu kanuna göre ışık kaynağı tarafından aydınlatılan yüzeyin [0..1] arası değişen diffuse katsayısı = dot(l,n) ile hesaplanır. Buradaki dot(l,n) ile L ve N vektörlerinin Skaler çarpımı yapılmaktadır. Bunlar normalize edilerek birim vektör olarak alındığında skaler çarpım aralarındaki açının kosinüsünü veririr. O yüzden bu kanuna Kosinüs kanunu denir. Bilindiği gibi renk hesabı pixel shader fonksiyonunda yapılıyordu. Dolayısıyla pixel shader kodu aşağıdaki gibi olacaktır: float4 PS( PS_INPUT input) : SV_Target float4 finalcolor = 0; float3 tolight = 0; float3 Position = mul( input.pos, WorldInverseTranspose).xyz; for(int i=0; i<2; i++) tolight = normalize( vlightpos[i] - Position ); finalcolor += saturate( dot( tolight, input.norm ) * vlightcolor[i] ); finalcolor.a = 1; return finalcolor; for(...) döngüsü içinde dot( tolight, input.norm ) ile ışık kaynağına doğru olan tolight vektörü ile küpün yüzey normali input.norm skaler çarpılarak diffuse katsayı hesaplanmakta ve bu değer ışık kaynağının rengi ile çarpılarak son renk değeri belirlenmektedir. İki tane ışık kaynağı olduğu için döngü iki kere dönmektedir. İfadedeki saturate(...) fonksiyonu skaler çarpımdan gelebilecek negatif değerleri sıfır yapmak için kullanılır. Yani negatif değerler için sıfır döndürür. Döngüden önceki satırdaki Position = mul(input.pos, WorldInverseTranspose).xyz ile vertex shader tarafından 2D ekran koordinatlarına dönüştürülmüş küpe ait koordinatlar tekrar 3D dünya koordinatlarına dönüştürülmüştür. Çünkü diffuse katsayı hesaplanırken ışık kaynağına doğru olan tolight vektörünü hesaplamak için yüzey üzerindeki noktanın 3D dünya koordinatı bilinmelidir. Yukarıdaki pixel shaderın diffuse renk hesabında kullandığı vlightpos[] ve vlightcolor[] değişkenlerinin değerleri aslında DirectX programından alınmaktadır: 9
10 D3DXVECTOR4 vlightpos[2] = D3DXVECTOR4( -3.0f, 0.0f, 0.0f, 1.0f ), D3DXVECTOR4( 0.0f, 0.0f, -3.0f, 1.0f ), ; D3DXVECTOR4 vlightcolors[2] = D3DXVECTOR4( 1.0f, 0.0f, 0.0f, 1.0f ), D3DXVECTOR4( 0.0f, 0.0f, 1.0f, 1.0f ), ; // Kırmızı ışık kaynağı // Mavi ışık kaynağı g_plightposvariable->setfloatvectorarray( ( float* )vlightpos, 0, 2 ); g_plightcolorvariable->setfloatvectorarray( ( float* )vlightcolors, 0, 2 ); Kırmızı ışık kaynağı D3DXMatrixRotationZ(...) komutu ile Z ekseni etrafında; mavi ışık kaynağı da D3DXMatrixRotationY(...) komutu ile Y ekseni etrafında dönmektedir. Işık kaynakları ayrıca D3DXMatrixTranslation(...) komutu ile ötelenmekte ve D3DXMatrixScaling(...) komutu ile de küçültülmektedir. Programın ekran görüntüsü Şekil.8'de verilmiştir: Şekil.8: Kırmızı ve mavi ışık ile küpün aydınlatılması Şekil.9: Kırmızı, mavi ve beyaz ışık ile küpün aydınlatılması 6. Deneye Hazırlık Dersin web sayfasındaki deneyle ilgili kaynak kodları üzerinde değişiklikler yaparak inceleyiniz. Küpü aydınlatan kırmızı ve mavi ışık kaynaklarına X ekseni etrafında dönen Şekil.9'daki gibi beyaz renge sahip üçüncü bir ışık kaynağı ekleyiniz. Programınız çalışmasa da deneye getiriniz. 7. Deneyin Yapılışı Üçgen çizimi örneğindeki kodu değiştirip Şekil.10'daki gibi beyaz renk kare çiziniz. Çizdiğiniz kare dönerken neden gözden kaybolmaktadır? Açıklayınız. 10
11 Şekil.10: Beyaz Kare Çizimi 8. Rapor Rapor, kaynak kodların olduğu klasördeki şablon dosya kullanılarak yazılacaktır. Buradaki: 1. Deneye Hazırlık bölümünde X ekseni etrafında dönen beyaz ışık kaynağının nasıl eklendiği, 2. Deneyin Yapılışı bölümünde de beyaz renk karenin nasıl çizildiği anlatılacaktır. 11
PÜRÜZLÜ YÜZEY ÜRETİMİ
KARADENİZ TEKNİK ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü Bilgisayar Grafikleri Laboratuarı PÜRÜZLÜ YÜZEY ÜRETİMİ 1. Giriş Cisimlerin yüzey görüntülerindeki parlaklık değişimi iki nedene dayanır. Birincisi
DetaylıPÜRÜZLÜ YÜZEY ÜRETİMİ
KARADENİZ TEKNİK ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü Bilgisayar Grafikleri Laboratuarı PÜRÜZLÜ YÜZEY ÜRETİMİ 1. Giriş Pürüzlü yüzey üretiminde, yüzeye kaplanacak dokudan yararlanarak yüzeyin normalini
DetaylıDirectX ile FPS Oyunu
KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI DirectX ile FPS Oyunu 1. Giriş Oyunlar, Bilgisayar Grafiklerinin en popüler uygulama alanlarından biridir
DetaylıPürüzlü Yüzey Üretimi
KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI Pürüzlü Yüzey Üretimi 1. Giriş Yüzeylerin özel bir doku kaplama yapılarak pürüzlü görünmesini sağlayan 2 temel
DetaylıGörünmeyen Yüzey ve Arkayüz Kaldırma
KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI Görünmeyen Yüzey ve Arkayüz Kaldırma 1. Giriş Bilgisayar grafiklerinin en önemli problemlerinden biri katı
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Grafik Programlama Bilgisayar kullanılırken monitörlerde iki tür ekran moduyla karşılaşılır. Bu ekran modları Text modu ve Grafik modu dur. Text modunda ekran 25 satır ve 80 sütundan
DetaylıBilgisayar Grafikleri
Bilgisayar Grafikleri Konular: Cismin Tanımlanması Bilindiği gibi iki boyutta noktalar x ve y olmak üzere iki boyutun koordinatları şeklinde ifade edilirler. Üç boyutta da üçüncü boyut olan z ekseni üçücü
DetaylıEastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ
Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ DÖNEM SONU SINAVI GÜZ 2009-2010 13 Ocak 2010, Sınav Süresi: 120 dakika. İsim
DetaylıCOM337 Bilgisayar Grafiği. OpenGL ile Grafik Programlama. Dr. Erkan Bostancı
COM337 Bilgisayar Grafiği OpenGL ile Grafik Programlama Dr. Erkan Bostancı İçerik Işık Resim ve Metin Görüntüleme Texture-mapping Işık (1/3) OpenGL de bir sahne 8 farklı ışık kaynağı kullanabilir. İlk
DetaylıCOM337 Bilgisayar Grafiği. OpenGL ile Grafik Programlama. Dr. Erkan Bostancı
COM337 Bilgisayar Grafiği OpenGL ile Grafik Programlama Dr. Erkan Bostancı İçerik Giriş Dönüşüm matrisleri Matris yığınları (stack) Giriş İlk olarak gizli yüzeylerin kaldırılmasını (hidden surface removal)
DetaylıÇoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say
İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input
DetaylıAlgoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip
DetaylıÖzyineleme (Recursion)
C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,
DetaylıDirectX ile Tank Oyunu
KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI DirectX ile Tank Oyunu 1. Giriş Oyunlar, Bilgisayar Grafiklerinin en popüler uygulama alanlarından biridir
DetaylıBCA611 Video Oyunları için 3B Grafik
BCA611 Video Oyunları için 3B Grafik Ders 2 Zümra Kavafoğlu https://zumrakavafoglu.github.io/ Kaynaklar JungHyun Han, 3D Graphics for Game Programming, CRC Press, ISBN-13: 978-1-4398-2738-3 http://media.korea.ac.kr/book
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
DetaylıBil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi
Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini
Detaylı12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )
12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 ) 25.09.2017 METİN VE GÖRÜNÜM DÜZENLEME ETİKETLERİ : etiketleri dökümana başlık eklemek için kullanılır. etiketinde ki x ifadesi 1 den 6 ya kadar
DetaylıOpenGL Uygulamaları. 1. Giriş. 2. OpenGL. Deney 2
Deney 2 OpenGL Uygulamaları 1. Giriş Günümüzde yazılım ve donanımın gelişmesi ile birlikte bilgisayar grafikleri alanında oldukça önemli gelişmeler kaydedilmektedir. Bu gelişmelere paralel olarak yazılım
DetaylıObject-oriented Graphics Rendering Engine (OGRE)
Object-oriented Graphics Rendering Engine (OGRE) Uluslararası Bilgisayar Enstitüsü Ege Üniversitesi Ahmet Bilgili & Serkan Ergun Ogre Kolay kullanılabilir nesne yönelimli Direct3D/OpenGL bağımsız tasarım.
DetaylıKONTROL VE OTOMASYON KULÜBÜ
KONTROL VE OTOMASYON KULÜBÜ C DİLİ İLE MİKROKONTROLÖR PROGRAMLAMA EĞİTİMİ Serhat Büyükçolak Ahmet Sakallı 2009-2010 Güz Dönemi Eğitimleri Mikrokontrolör Gömülü sistemlerin bir alt dalı olan mikrokontrolör
DetaylıİNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage
İNTERNET PROGRAMLAMA 2 A S P. N E T Marmara Teknik Bilimler MYO / Hafta 4 MasterPage Bir web sitesi birden fazla sayfadan oluşur. Bu sayfalarda içerik değişirken her sayfada tekrarlanan ögeler ve özellikler
DetaylıSınav tarihi : Süre : 60 dak.
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =
DetaylıMATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü
MATLAB a GİRİŞ Doç. Dr. Mehmet İTİK Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü İçerik: MATLAB nedir? MATLAB arayüzü ve Bileşenleri (Toolbox) Değişkenler, Matris ve Vektörler Aritmetik işlemler
DetaylıPARÇA MODELLEMEYE GİRİŞ
PARÇA MODELLEMEYE GİRİŞ Pro/ENGINEER programında 10 değişik modelleme kısmı bulunmaktadır. Bunlardan en çok kullanılan ve bizim de işleyeceğimiz parça modelleme (Part) kısmıdır. Bunun yanında montaj (assembly),
Detaylıwww.elektrikogretmenleri.com
FIREWORKS (MENU OLUŞ TURMA) 1 Önce Başlat menüsü Programlar Adobe Web Premium CS3 Adobe Fireworks CS3 kısayol simgesi ile Fireworks programı açılır. 2 Fireworks programı açıldığında Karşımıza gelen Yeni
DetaylıMAYA ile 3D Modelleme
KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI MAYA ile 3D Modelleme 1. Giriş 3D oyunlar ve animasyonlar Bilgisayar Grafiklerinin günümüzde en yaygın uygulama
DetaylıBÖLÜM 17 17. ÜÇ BOYUTLU NESNELERİ KAPLAMA VE GÖLGELENDİRME
BÖLÜM 17 17. ÜÇ BOYUTLU NESNELERİ KAPLAMA VE GÖLGELENDİRME 17.1. HİDE Üç boyutlu katı modelleme ve yüzey modellemede Wireframe yapılarının görünmemesi için çizgileri saklama görevi yapar. HİDE komutuna
DetaylıALGORİTMA VE PROGRAMLAMA I DERS NOTU#8
ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde
DetaylıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon
DetaylıBilgisayar Grafikleri
Bilgisayar Grafikleri Kaynak Kitaplar : Mathematical Elements for Computer Graphics David F.Rogers, J.Alan Adams McGraw-Hill Publishing Company Procedural Elements for Computer Graphics David F.Rogers
DetaylıPROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.
PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011
DetaylıBİLG Dr. Mustafa T. Babagil 1
BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)
DetaylıDiziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU
Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip
Detaylıvoid setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.
ARDUİNO PROGRAMLAMA fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız. fonksiyonu: Diğer programlama dillerinden alışık olduğumuz
DetaylıTemel Bilgisayar Programlama Final Sınavı Çalışma Notları
Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak
DetaylıSaat Yönünde 90 Derecelik Dönme Hareketi. Saatin Tersi Yönünde 90 Derecelik Dönme Hareketi
Saat Yönünde 9 Derecelik Dönme Hareketi Saatin Tersi Yönünde 9 Derecelik Dönme Hareketi çizilmiş olan üçgenin orjin etrafında saat yönünde 9 lik dönme hareketine ait görüntüsünü çizip bu üçgenin köşe koordinatlarını
DetaylıBM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta
Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı
DetaylıŞimdi de [ ] vektörünün ile gösterilen boyu veya büyüklüğü Pisagor. teoreminini iki kere kullanarak
10.Konu İç çarpım uzayları ve özellikleri 10.1. ve üzerinde uzunluk de [ ] vektörünün ile gösterilen boyu veya büyüklüğü Pisagor teoreminden dir. 1.Ö.: [ ] ise ( ) ( ) ve ( ) noktaları gözönüne alalım.
DetaylıNACA PROFİL AİLE GEOMETRİSİ HESAP PROGRAMI KULLANMA KILAVUZU
NACA PROFİL AİLE GEOMETRİSİ HESAP PROGRAMI KULLANMA KILAVUZU NACA kesit programı çizim programı Visual Basic V5.0 dilinde yazılmıştır. Programın amacı, kullanıcının istediği NACA kesitinin çizimini çok
DetaylıKarabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ
WEB TEKNOLOJİLERİ VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak
DetaylıFen ve Mühendislik Uygulamalarında MATLAB
Fen ve Mühendislik Uygulamalarında MATLAB Dosya Yönetimi Fonksiyon Yapısı Doç. Dr. İrfan KAYMAZ MATLAB Ders Notları DOSYA YÖNETİMİ Şu ana kadar bir programda hesaplanan veya elde edilen veriler RAM de
DetaylıProgram Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.
PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki
DetaylıMatLab. Mustafa Coşar mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar
MatLab Mustafa Coşar mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar Sunum Planı MatLab Hakkında Ekran Yapısı Programlama Yapısı Matlab da Programlamaya Giriş Sorular MatLab Hakkında MatLab;
DetaylıAlgoritmalar ve Programlama. Algoritma
Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü
DetaylıKoordinat Dönüşümleri (V )
KOORDİNAT DÖNÜŞÜMLERİ ve FARKLI KOORDİNAT SİSTEMLERİ İLE ÇALIŞMA FieldGenius ile birden fazla koordinat sistemi arasında geçiş yaparak çalışmak mümkündür. Yaygın olarak kullanılan masaüstü harita ve CAD
DetaylıSınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?
DetaylıC PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI
C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1 PROGRAM - ALGORİTMA AKIŞ ŞEMASI Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Algoritma bir sorunun
DetaylıCAEeda TM OM6 KANADI MODELLEME. EDA Tasarım Analiz Mühendislik
CAEeda TM OM6 KANADI MODELLEME EDA Tasarım Analiz Mühendislik 1. Kapsam Kanat Sınırlarını Çizme Taban Kanat Profilinin Hücum ve Firar Kenarları Sınırlarını Çizme Kanat Profilini Dosyadan (.txt) Okuma Geometrik
Detaylı2. HTML Temel Etiketleri
2. HTML Temel Etiketleri Bu bölümü bitirdiğinizde, HTML ve etiket kavramlarının ne olduğunu, HTML komut yapısını, Örnek bir HTML dosyasının nasıl oluşturulduğunu, Temel HTML etiketlerinin neler olduğunu,
DetaylıKİRİŞLERDE PLASTİK MAFSALIN PLASTİKLEŞME BÖLGESİNİ VEREN BİLGİSAYAR YAZILIMI
IM 566 LİMİT ANALİZ DÖNEM PROJESİ KİRİŞLERDE PLASTİK MAFSALIN PLASTİKLEŞME BÖLGESİNİ VEREN BİLGİSAYAR YAZILIMI HAZIRLAYAN Bahadır Alyavuz DERS SORUMLUSU Prof. Dr. Sinan Altın GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ
Detaylıenum bolumler{elektronik, insaat, bilgisayar, makine, gida};
BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı
DetaylıDr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net
Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)
DetaylıELN1002 BİLGİSAYAR PROGRAMLAMA 2
ELN1002 BİLGİSAYAR PROGRAMLAMA 2 VERİ YAPILARI Sunu Planı Kendini-gösteren Yapılar Dinamik Bellek Tahsisi Bağlı Listeler Yığınlar Kuyruklar Ağaçlar 1 Veri Yapıları Şu ana kadar, diziler, matrisler ve yapılar
DetaylıMatlab da 2-boyutlu Grafik Çizimi. Arş. Gör. Mehmet Ali ÜSTÜNER
Matlab da 2-boyutlu Grafik Çizimi Arş Gör Mehmet Ali ÜSTÜNER Manisa, 03122017 Arş Gör Mehmet Ali ÜSTÜNER 2 Dikdörtgen (x-y) Ve Kutupsal Eksenlerde Çizgi Grafikleri: En basit çizim, iki değişkeni olan çizimlerdir
DetaylıELN1001 BİLGİSAYAR PROGRAMLAMA I
ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave
DetaylıDiziler (Arrays) Çok Boyutlu Diziler
Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.
DetaylıEln 1001 Bilgisayar Programlama I
Eln 1001 Bilgisayar Programlama I GiriŞ / ǹk¹Ş Fonksiyonlar¹ Ne ÖĆreneceĆiz? Temel Giriş/Çıkış Yapısı Giriş Fonksiyonları Karakterler için giriş fonksiyonları Scanf fonksiyonu Formatlı giriş Çıkış Fonksiyonları
DetaylıBİLGİSAYAR PROGRAMLAMA VE FİZİKTE PROGRAMLAMA DERSLERİ İÇİN MATLAB ÇALIŞMA NOTLARI. Mehmet ÖZKAN
BİLGİSAYAR PROGRAMLAMA VE FİZİKTE PROGRAMLAMA DERSLERİ İÇİN MATLAB ÇALIŞMA NOTLARI Mehmet ÖZKAN input:bu komut kullanıcıdan veri girişi istiğinde kullanılır. Etkin ve etkileşimli bir program yazımında
DetaylıTemel Bilgisayar Bilimleri Ders Notu #4-2. kısım
Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı
DetaylıNESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları
Sayfa1 NESNE TABANLI PROGRAMLAMA 25.01.2011 Final Sınavı Cevapları CEVAPLAR 1. A ve C 3x3 boyutlu kare matrislerdir. Bu matrisler için, iken, işlemini gerçekleştirerek C matrisini oluşturan bir C++ programı
DetaylıBMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
Detaylı/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve
DetaylıGrafik Komutları. Grafik Türleri plot: çizgisel grafikler bar: sütun bar şeklindeki grafikler stem: sütun çizgisel grafikler pie: pasta grafikleri
Matlab Grafikler Grafik Türleri Grafik Komutları Grafik Türleri plot: çizgisel grafikler bar: sütun bar şeklindeki grafikler stem: sütun çizgisel grafikler pie: pasta grafikleri Yardımcı Komutlar hold
DetaylıNesneye Dayalı Programlama Laboratuvarı
2013 2014 Nesneye Dayalı Programlama Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Salih GÖRGÜNOĞLU Laboratuvar Sorumluları: M. Zahid YILDIRIM İÇİNDEKİLER Deney 1: Visual Studio ve C++'a Giriş Uygulamaları...
DetaylıJavascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.
Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html
DetaylıTEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü
TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI Enformatik Bölümü - Bilgisayarın tanımı ve tarihçesi Bilgisayar, belirli komutlara göre veri işleyen ve depolayan bir makinedir. İlk bilgisayar 1950 yılında yapılmıştır.
DetaylıMühendislik Mekaniği Statik. Yrd.Doç.Dr. Akın Ataş
Mühendislik Mekaniği Statik Yrd.Doç.Dr. Akın Ataş Bölüm 2 Kuvvet Vektörleri Kaynak: Mühendislik Mekaniği: Statik, R.C.Hibbeler, S.C.Fan, Çevirenler: A. Soyuçok, Ö.Soyuçok. 2 Kuvvet Vektörleri Bu bölümde,
DetaylıAPI(Application Programming Interface) Fonksiyonları:
API(Application Programming Interface) Fonksiyonları: Bir işletim sisteminin çalışırken kendisinin kullandığı, programcının da dışarıdan çağırabileceği fonksiyonları vardır. Bunlara sistem fonksiyonları
DetaylıGörsel Programlama 1
Görsel Programlama 1 1. Ekrana Hello world! yazan c# console application kodları: Console.Write("Hello world!"); 2. Ekranda ilk satıra Hello, ikinci satıra world! yazan kod: Console.WriteLine("Hello");
DetaylıViyana İmam Hatip Lisesi Öğrenci Seçme Sınavı - Matematik
Viyana İmam Hatip Lisesi Öğrenci Seçme Sınavı - Matematik 1. Ünite: Geometriden Olasılığa 1. Bölüm: Yansıyan ve Dönen Şekiller, Fraktallar Yansıma, Öteleme, Dönme Fraktallar 2. Bölüm: Üslü Sayılar Tam
Detaylıİnternet Programcılığı Dersi 2.Dönem Ders Notu
İnternet Programcılığı Dersi 2.Dönem Ders Notu DEĞİŞKEN TİPLERİ TAM SAYI (İNTEGER) VERİ TİPİ Negatif veya pozitif ondalık kısmı bulunmayan sayılardır. Örnek: $i=65; $x=345; ONDALIK(REAL)VERİ TİPİ Ondalıklı
DetaylıYüzey Doldurma Teknikleri
KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI Yüzey Doldurma Teknikleri 1. Giriş Bu deneyde dolu alan tarama dönüşümünün nasıl yapıldığı anlatılacaktır.
Detaylı7. BÖLÜM İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI .= 1 1 + + Genel: Vektörler bölümünde vektörel iç çarpım;
İÇ ÇARPIM UZAYLARI 7. BÖLÜM İÇ ÇARPIM UZAYLARI Genel: Vektörler bölümünde vektörel iç çarpım;.= 1 1 + + Açıklanmış ve bu konu uzunluk ve uzaklık kavramlarını açıklamak için kullanılmıştır. Bu bölümde öklit
DetaylıMATLAB İLE PROGRAMLAMAYA GİRİŞ. Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü
MATLAB İLE PROGRAMLAMAYA GİRİŞ Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü nedimtutkun@gmail.com 1 3. Hafta Ders İçeriği M Dosyası Oluşturma Fonksiyon Yazma Fonksiyonlar ve Alt Programlar MATLAB
DetaylıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama
DetaylıTanımlar, Geometrik ve Matemetiksel Temeller. Yrd. Doç. Dr. Saygın ABDİKAN Yrd. Doç. Dr. Aycan M. MARANGOZ. JDF329 Fotogrametri I Ders Notu
FOTOGRAMETRİ I Tanımlar, Geometrik ve Matemetiksel Temeller Yrd. Doç. Dr. Saygın ABDİKAN Yrd. Doç. Dr. Aycan M. MARANGOZ JDF329 Fotogrametri I Ders Notu 2015-2016 Öğretim Yılı Güz Dönemi İzdüşüm merkezi(o):
DetaylıBİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU 1 M-Dosya Yapısı Bir senaryo dosyası (script file) özel bir görevi yerine getirmek
DetaylıGörüntü Bağdaştırıcıları
Görüntü Bağdaştırıcıları Görüntü Bağdaştırıcıları (Ekran Kartları) Ekrandaki Görüntü Nasıl Oluşur? Monitörünüze yeteri kadar yakından bakarsanız görüntünün çok küçük noktalardan oluştuğunu görürsünüz.
DetaylıPROGRAMLAMAYA GİRİŞ FONKSİYONLAR
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya
DetaylıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi
DetaylıOpenGL Uygulamaları. 1. Giriş. 2. OpenGL
1. Giriş OpenGL Uygulamaları Günümüzde yazılım ve donanımın gelişmesi ile birlikte bilgisayar grafikleri alanında oldukça önemli gelişmeler kaydedilmektedir. Bu gelişmelere paralel olarak yazılım geliştirme
Detaylı8. İŞARETCİLER (POINTERS)
8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren
DetaylıSınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 14.04.2015 Süre : 60 dak. 1. Tür dönüşümleri... olmak üzere iki
DetaylıCAEeda ÇÖZÜMÜ YAPILMIŞ NACA 0012 KANADI İÇİN 2B ÇİZİM EĞİTİM NOTU. EDA Tasarım Analiz Mühendislik
CAEeda TM ÇÖZÜMÜ YAPILMIŞ NACA 0012 KANADI İÇİN 2B ÇİZİM EĞİTİM NOTU EDA Tasarım Analiz Mühendislik 1. Kapsam Çözümü yapılmış *.pos.edf dosyasında bulunan çözümağını al. Sonlu eleman modeli üzerinde bulunan
DetaylıDeğişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:
C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.
Detaylıelemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.
Ön bilgi: Dizi tanımlayabilmeli. foreach deyimi bilinmeli. Rastgele sayılar (Random) bilinmeli. 1. Aşağıda tamsayı tipinde iki boyutlu bir dizinin nasıl tanımlandığı, bir fonksiyona parametre olarak nasıl
Detaylık ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.
MATRİS TRANSPOZU: Bir matrisin satırlarını sütun, sütunlarınıda satır yaparak elde edilen matrise transpoz matris denilir. Diğer bir değişle, eğer A matrisi aşağıdaki gibi tanımlandıysa bu matrisin transpoz
DetaylıR ile Programlamaya Giriş ve Uygulamalar
R ile Programlamaya Giriş ve Uygulamalar İçerik R ye genel bakış R dili R nedir, ne değildir? Neden R? Arayüz Çalışma alanı Yardım R ile çalışmak Paketler Veri okuma/yazma İşleme Grafik oluşturma Uygulamalar
DetaylıDİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II
DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe
DetaylıDÜZLEMDE GERİLME DÖNÜŞÜMLERİ
3 DÜZLEMDE GERİLME DÖNÜŞÜMLERİ Gerilme Kavramı Dış kuvvetlerin etkisi altında dengedeki elastik bir cismi matematiksel bir yüzeyle rasgele bir noktadan hayali bir yüzeyle ikiye ayıracak olursak, F 3 F
DetaylıBİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ Yrd. Doç. Dr. Fatih TOSUNOĞLU Erzurum Teknik Üniversitesi Mühendislik Fakültesi İnşaat Mühendisliği Bölümü DERS NOTU 3 KONU: M-dosya yapısı ve Kontrol Yapıları M-Dosya Yapısı
DetaylıÜNİTE. MATEMATİK-1 Yrd.Doç.Dr.Ömer TARAKÇI İÇİNDEKİLER HEDEFLER DOĞRULAR VE PARABOLLER
HEDEFLER İÇİNDEKİLER DOĞRULAR VE PARABOLLER Birinci Dereceden Polinom Fonksiyonlar ve Doğru Doğru Denklemlerinin Bulunması İkinci Dereceden Polinom Fonksiyonlar ve Parabol MATEMATİK-1 Yrd.Doç.Dr.Ömer TARAKÇI
DetaylıPROGRAMLAMAYA GİRİŞ DERS 2
PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı
DetaylıEğitim Öğretim Yılı 6. Sınıflar CODE-ORG Uygulaması Yazılıya Çalışma Notları
2017-2018 Eğitim Öğretim Yılı 6. Sınıflar CODE-ORG Uygulaması Yazılıya Çalışma Notları Sevgili öğrenciler bu belgede; CODE ORG uygulamasında/ Ders 3 içerisinde bazı sahneler için kullandığımız kodlar ve
DetaylıBTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9
BTP 207 İNTERNET PROGRAMCILIĞI I Ders 9 Dizi Değişkenler (Array) 2 Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1, eleman2,, elemann)
DetaylıBölüm 2 - C ile Programlamaya Giriş
1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar 2.1 Giriş 2.2 Basit C Programları: Bir Metni Yazdırmak 2.3 Basit C Programları: İki Tam Sayıyı Toplamak 2.4 Hafıza Konuları 2.5 C de Aritmetik 2.6 Karar
DetaylıWindows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.
Handel Kavramı: Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir. Alanın yaratıldığı bölge Windows'un kendi
Detaylı