Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика»





НазваниеРеферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика»
страница5/9
Дата публикации17.02.2015
Размер0.59 Mb.
ТипРеферат
100-bal.ru > Информатика > Реферат
1   2   3   4   5   6   7   8   9

largeBitmap.DrwaChar(&ch, 0, (scalar)large_width/8, (scalar)large_height/16);

}
void UpdateFrameBuffer() {

frame_buffer.Clear(RGBA(255, 255, 255, 255));

Copy(frame_buffer, smallBitmap, 0, 0, 0, 0, smallBitmap.GetWidth(), smallBitmap.GetHeight());

Copy(frame_buffer, largeBitmap, smallBitmap.GetWidth()+8, 0, 0, 0, largeBitmap.GetWidth(), largeBitmap.GetHeight());

}
int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

// TODO: Place code here.

MSG msg;

HACCEL hAccelTable;
// Initialize global strings

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_RASTERSCALE, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);
// Perform application initialization:

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_RASTERSCALE);

// Main message loop:

while (GetMessage(&msg, NULL, 0, 0))

{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}
return msg.wParam;

}


//

// FUNCTION: MyRegisterClass()

//

// PURPOSE: Registers the window class.

//

// COMMENTS:

//

// This function and its usage is only necessary if you want this code

// to be compatible with Win32 systems prior to the 'RegisterClassEx'

// function that was added to Windows 95. It is important to call this function

// so that the application will get 'well formed' small icons associated

// with it.

//

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_RASTERSCALE);

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = NULL;//(HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = (LPCSTR)IDC_RASTERSCALE;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
return RegisterClassEx(&wcex);

}
//

// FUNCTION: InitInstance(HANDLE, int)

//

// PURPOSE: Saves instance handle and creates main window

//

// COMMENTS:

//

// In this function, we save the instance handle in a global variable and

// create and display the main program window.

//

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

0, 0, 1024, 768, NULL, NULL, hInstance, NULL);
if (!hWnd)

{

return FALSE;

}
ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);
return TRUE;

}
//

// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)

//

// PURPOSE: Processes messages for the main window.

//

// WM_COMMAND - process the application menu

// WM_PAINT - Paint the main window

// WM_DESTROY - post a quit message and return

//

//

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

TCHAR szHello[MAX_LOADSTRING];

LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
switch (message)

{

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// Parse the menu selections:

switch (wmId)

{

case IDM_ABOUT:

DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);

break;

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

// TODO: Add any drawing code here...

frame_buffer.BitBlt(hdc);

EndPaint(hWnd, &ps);

break;

case WM_SIZE:

GetClientRect(hWnd, &fb_rt);

frame_buffer.Init(fb_rt.right, fb_rt.bottom);

UpdateFrameBuffer();

break;

case WM_KEYDOWN:

switch (wParam) {

case 0x41: //a

large_width+=1;

large_height+=2;

break;

case 0x5a: //z

large_width-=1;

large_height-=2;

break;

case 0x53: //s

large_width++;

break;

case 0x58: //x

large_width--;

break;

case 0x44: //d

large_height++;

break;

case 0x43: //c

large_height--;

break;

case 0x46: //f

line_offset+=0.1;

break;

case 0x56: //v

line_offset-=0.1;

break;

case 0x47: //g

curve_offset+=0.1;

break;

case 0x42: //b

curve_offset-=0.1;

break;

case 0x48: //h

weight *= 1.1;

break;

case 0x4e: //n

weight /= 1.1;

break;

case VK_SPACE:

draw_curve=!draw_curve;

break;

case VK_CONTROL:

color_curve=!color_curve;

break;

case VK_ESCAPE:

PostMessage(hWnd, WM_QUIT, 0, 0);

break;

}

Init();

UpdateFrameBuffer();

InvalidateRect(hWnd, NULL, FALSE);

break;

case WM_CREATE:

Init();

break;

case WM_DESTROY:

// delete largeBitmap;

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}
// Mesage handler for about box.

LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_INITDIALOG:

return TRUE;
case WM_COMMAND:

if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

{

EndDialog(hDlg, LOWORD(wParam));

return TRUE;

}

break;

}

return FALSE;

}


shadowmap.fx

//-----------------------------------------------------------------------------

// File: ShadowMap.fx

//

// Desc: Effect file for high dynamic range cube mapping sample.

//

// Copyright (c) Microsoft Corporation. All rights reserved.

//-----------------------------------------------------------------------------

#define SMAP_SIZE 512

#define SHADOW_EPSILON 0.000005f//0.00005f

#define SlopeScale 1.0f

float4x4 g_mWorldView;

float4x4 g_mProj;

float4x4 g_mViewToLightProj; // Transform from view space to light projection space

float4 g_vMaterial;

texture g_txScene;

texture g_txShadow;

float3 g_vLightPos; // Light position in view space

float3 g_vLightDir; // Light direction in view space

float4 g_vLightDiffuse = float4( 1.0f, 1.0f, 1.0f, 1.0f ); // Light diffuse color

float4 g_vLightAmbient = float4( 0.3f, 0.3f, 0.3f, 1.0f ); // Use an ambient light of 0.3

float g_fCosTheta; // Cosine of theta of the spot light
float g_grad_begin_fade = 0.001;

float g_grad_end_fade = 0.002;

float2 g_screen_res = { 640, 480 };


sampler2D g_samScene =

sampler_state

{

Texture = ;

MinFilter = Point;

MagFilter = Linear;

MipFilter = Linear;

};

sampler2D g_samShadow =

sampler_state

{

Texture = ;

MinFilter = Point;

MagFilter = Point;

MipFilter = Point;

AddressU = Clamp;

AddressV = Clamp;

};

//-----------------------------------------------------------------------------

// Vertex Shader: VertScene

// Desc: Process vertex for scene

//-----------------------------------------------------------------------------

void VertScene( float4 iPos : POSITION,

float3 iNormal : NORMAL,

float2 iTex : TEXCOORD0,

out float4 oPos : POSITION,

out float2 Tex : TEXCOORD0,

out float4 vPos : TEXCOORD1,

out float3 vNormal : TEXCOORD2,

out float4 vPosLight : TEXCOORD3 )

{

//

// Transform position to view space

//

vPos = mul( iPos, g_mWorldView );
//

// Transform to screen coord

//

oPos = mul( vPos, g_mProj );
//

// Compute view space normal

//

vNormal = mul( iNormal, (float3x3)g_mWorldView );
//

// Propagate texture coord

//

Tex = iTex;
//

// Transform the position to light projection space, or the

// projection space as if the camera is looking out from

// the spotlight.

//

vPosLight = mul( vPos, g_mViewToLightProj );

}

//-----------------------------------------------------------------------------

// Pixel Shader: PixScene

// Desc: Process pixel (do per-pixel lighting) for enabled scene

//-----------------------------------------------------------------------------

float4 PixScene( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1,

float3 vNormal : TEXCOORD2,

float4 vPosLight : TEXCOORD3 ) : COLOR

{

float4 Diffuse;
// vLight is the unit vector from the light to this pixel

float3 vLight = normalize( float3( vPos - g_vLightPos ) );
// Compute diffuse from the light

if( dot( vLight, g_vLightDir ) > g_fCosTheta ) // Light must face the pixel (within Theta)

{

// Pixel is in lit area. Find out if it's

// in shadow using 2x2 percentage closest filtering
//transform from RT space to texture space.

float2 ShadowTexC = 0.5 * vPosLight.xy / vPosLight.w + float2( 0.5, 0.5 );

ShadowTexC.y = 1.0f - ShadowTexC.y;
// transform to texel space

float2 texelpos = SMAP_SIZE * ShadowTexC;

// Determine the lerp amounts

float2 lerps = frac( texelpos );
//read in bilerp stamp, doing the shadow checks

float sourcevals[4];

sourcevals[0] = (tex2D( g_samShadow, ShadowTexC ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;

sourcevals[1] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 0) ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;

sourcevals[2] = (tex2D( g_samShadow, ShadowTexC + float2(0, 1.0/SMAP_SIZE) ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;

sourcevals[3] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE) ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;

// lerp between the shadow values to calculate our light amount

float LightAmount = lerp( lerp( sourcevals[0], sourcevals[1], lerps.x ),

lerp( sourcevals[2], sourcevals[3], lerps.x ),

lerps.y );

// Light it

Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * LightAmount * ( 1 - g_vLightAmbient ) + g_vLightAmbient )

* g_vMaterial;

} else

{

Diffuse = g_vLightAmbient * g_vMaterial;

}
return tex2D( g_samScene, Tex ) * Diffuse;

}

// Point

float4 PixScenePoint( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1,

float3 vNormal : TEXCOORD2,

float4 vPosLight : TEXCOORD3 ) : COLOR

{

float4 Diffuse;
// vLight is the unit vector from the light to this pixel

float3 vLight = normalize( float3( vPos - g_vLightPos ) );
// Compute diffuse from the light

if( dot( vLight, g_vLightDir ) > g_fCosTheta ) // Light must face the pixel (within Theta)

{

// Pixel is in lit area. Find out if it's

// in shadow using 2x2 percentage closest filtering
//transform from RT space to texture space.

float2 ShadowTexC = 0.5 * vPosLight.xy / vPosLight.w + float2( 0.5 + 0.5/SMAP_SIZE, 0.5 - 0.5/SMAP_SIZE );

ShadowTexC.y = 1.0f - ShadowTexC.y;

// do the shadow check

float Depth = tex2D( g_samShadow, ShadowTexC ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w ? 0.0f : 1.0f;

// Light it

Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * Depth * ( 1 - g_vLightAmbient ) + g_vLightAmbient )

* g_vMaterial;

} else

{

Diffuse = g_vLightAmbient * g_vMaterial;

}
return tex2D( g_samScene, Tex ) * Diffuse;

}

// Bilinear

float4 PixSceneBilinear( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1,

float3 vNormal : TEXCOORD2,

float4 vPosLight : TEXCOORD3 ) : COLOR

{

float4 Diffuse;
// vLight is the unit vector from the light to this pixel

float3 vLight = normalize( float3( vPos - g_vLightPos ) );
// Compute diffuse from the light

if( dot( vLight, g_vLightDir ) > g_fCosTheta ) // Light must face the pixel (within Theta)

{

// Pixel is in lit area. Find out if it's

// in shadow using 2x2 percentage closest filtering
//transform from RT space to texture space.

float2 ShadowTexC = 0.5 * vPosLight.xy / vPosLight.w + float2( 0.5, 0.5 );

ShadowTexC.y = 1.0f - ShadowTexC.y;
// transform to texel space

float2 texelpos = SMAP_SIZE * ShadowTexC;

// Determine the lerp amounts

float2 lerps = frac( texelpos );
//read in bilerp stamp

float sourcevals[4];

sourcevals[0] = (tex2D( g_samShadow, ShadowTexC ));

sourcevals[1] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 0) ));

sourcevals[2] = (tex2D( g_samShadow, ShadowTexC + float2(0, 1.0/SMAP_SIZE) ));

sourcevals[3] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE) ));

// lerp between the depth values

float Depth = lerp( lerp( sourcevals[0], sourcevals[1], lerps.x ),

lerp( sourcevals[2], sourcevals[3], lerps.x ),

lerps.y );

Depth = Depth + SHADOW_EPSILON < vPosLight.z / vPosLight.w ? 0.0f : 1.0f;

// Light it

Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * Depth * ( 1 - g_vLightAmbient ) + g_vLightAmbient )

* g_vMaterial;

} else

{

Diffuse = g_vLightAmbient * g_vMaterial;

}
return tex2D( g_samScene, Tex ) * Diffuse;

}

// MaxDepth

float4 PixSceneMaxDepth( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1,

float3 vNormal : TEXCOORD2,

float4 vPosLight : TEXCOORD3 ) : COLOR
1   2   3   4   5   6   7   8   9

Похожие:

Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconРеферат: Коваленко А. Е. Разработка системы научной визуализации....
Коваленко А. Е. Разработка системы научной визуализации. Квалификационная работа на степень магистра наук по направлению «Математика....
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconРеферат Флягина Т. А. Проблемы разработки многооконных интерфейсов,...
Флягина Т. А. Проблемы разработки многооконных интерфейсов, квалификационная работа на степень бакалавра наук
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconКвалификационной работы на факультете математики и компьютерных наук
В соответствии с действующими государственными образовательными стандартами выпускная квалификационная работа по специальности «Математика»...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconДиссертация на степень магистра наук по направлению «Математика, компьютерные науки»
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconДипломная работа по направлению Математика. Прикладная математика студента гр. Мт 505
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины Современные методы принятия решений  для направления...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 010400....
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины «Герменевтика» для направления 010400. 68 «Прикладная...
Программа предназначена для преподавателей, ведущих данную дисциплину, и студентов направления подготовки 010400. 68 "Прикладная...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» icon1 Нормативные документы для разработки ооп впо по направлению подготовки...
Общая характеристика вузовской основной образовательной программы высшего профессионального образования по направлению подготовки...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconРеферат Тычинин И. А. Разработка приложения для портативных устройств...
Тычинин И. А. Разработка приложения для портативных устройств с использованием qt framework, квалификационная работа на степень бакалавра...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
Нормативные документы для разработки ооп бакалавриата по направлению подготовки «Прикладная математика и информатика»
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины Архитектура ЭВМ для направления 010400. 68 «Прикладная...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направлений подготовки 010400....
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconОбразовательная программа высшего образования, реализуемая университетом...
...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconЛитература
Уросов А. П. Разработка методик визуализации для представления работы параллельных программ, квалификационная работа на степень бакалавра...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconЕН. Ф. 1 Математика и информатика: математика
Учебная дисциплина Математика и информатика: "Математика" введена в процесс обуче­ния для бакалавров по направлению подготовки "Художественное...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины «Модели корпусной лингвистики» для направления...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 010400. 68 "Прикладная...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины «История» для направления 231300. 62 и 230700....
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 231300....


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск