Grafika 3D
 
  Zarejestruj siŕ
::  Newsy  ::  Pliki  ::  Twoje Konto  ::  Forum  ::
Menu
· Strona g│ˇwna
· Forum
· Linki
· Lista u?ytkownikˇw
· O nas...
· Pliki
· Statystyki
· Twoje Konto
Tutoriale
· API
· Matematyka
· Teoria
· Direct3D
· OpenGL
· Techniki
Kto Jest Online
Aktualnie jest 38 goŠ(ci) i 0 u┐ytkownik(ˇw) online.

Jeste anonimowym u┐ytkownikiem. Mo┐esz siŕ zarejestrowaŠ za darmo klikaj▒c tutaj
Grafika 3D: Forum

Grafika 3D :: Zobacz temat - [C++/Opengl] Utkn??em z projektem kulki
Zaloguj Rejestracja FAQ U┐ytkownicy Szukaj
Strona po?wi?cona programowaniu grafiki 3D

Forum Grafika 3D Strona G│ˇwna -> OpenGL -> [C++/Opengl] Utkn??em z projektem kulki
Napisz nowy temat  Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz nastŕpny temat 
[C++/Opengl] Utkn??em z projektem kulki
PostWys│any: Nie Wrz 13, 2009 4:34 pm Odpowiedz z cytatem
qla
 
Do│▒czy│: Sep 01, 2009
Posty: 0




Witam!
Jako, ?e ze mnie marny programista, a zaliczy? przedmiot trzeba, zwracam si? do was o Pomoc!

Musze zrobi? kul?, ktˇra b?dzie si? odbija? od czterech brzegˇw monitora. Mam ju? kul?, ktˇra si? odbija od dolnego brzegu monitora. Jak zrobi?, ?eby odbijala si? w schemacie <dolny, lewy, gˇrny, prawy, dolny brzeg? Wiem, ze co? tzreba namota? z wektorami, ale raz, ?e tego nie by?o w szkole, a z netu cie?ko zrozumie? co i jak, dwa nie za abrdzo wiem gdzie to w kodzie umiejscowi?.
By?bym wdzi?czny za pomoc.
A oto kod:

c++:
Kod:
#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")

#define _USE_MATH_DEFINES
#include        <cmath>

void InitGL(void)
{
 
 glClearColor(0.5f,0.6f,1.0f,1.0f);


        glEnable(GL_DEPTH_TEST);

 glEnable(GL_NORMALIZE);



 float  pozy[4]   =  {45,40,100,20};

 float  ambi[4]   =  {1.0f,0.0f,0.04f,0};

 float  diff[4]   =  {0.75f,0.75f,0.4f,0};

 float  spec[4]   =  {1,1,0,0};
 glLightfv(GL_LIGHT0,GL_POSITION, pozy);

 glLightfv(GL_LIGHT0,GL_AMBIENT,  ambi);

 glLightfv(GL_LIGHT0,GL_DIFFUSE,  diff);

 glLightfv(GL_LIGHT0,GL_SPECULAR, spec);







 float  pozy1[4]  = {0,-10,0,1};

 float  ambi1[4]  = {0.0,0.0,1.01f,0};

 float  diff1[4]  = {0.75f,0.75f,0.4f,0};

 float  spec1[4]  = {1,1,1,0};
 glLightfv(GL_LIGHT1,GL_POSITION, pozy1);

 glLightfv(GL_LIGHT1,GL_AMBIENT,  ambi1);

 glLightfv(GL_LIGHT1,GL_DIFFUSE,  diff1);

 glLightfv(GL_LIGHT1,GL_SPECULAR, spec1);

 glEnable(GL_COLOR_MATERIAL);



 float  mambi[4]  = {0,0,0.01f,0};

 float  mdiff[4]  = {0.75f,0.75f,0.4f,0};

 float  mspec[4]  = {1,1,1,0};



 glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,  mambi);

 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE,  mdiff);

 glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mspec);

 glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 32);



 

 glEnable(GL_LIGHTING);

 glEnable(GL_LIGHT0);

//glEnable(GL_LIGHT1);



 

}

void DrawGLScene(void)
{

         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 

 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(50,4.0f/3.0f,1,100);
 glTranslatef(0,-4,-20);
 glMatrixMode(GL_MODELVIEW);
 glEnable(GL_MAP1_VERTEX_3);
 

glTranslatef (0, -0.001, 0);
 

GLfloat x,y,kat;

float czas = GetTickCount()/1000.0;

float YY = 0.4+6.0*abs(cos(czas));//

float b = min(YY,1);  //wielko?? ugi?cia
float a = 0.99/b;   // kszta?t kuli

const GLfloat GL_PI=3.1415f;  //PI

for (int i=0; i<1000; i++){   // P?tla rysuj?ca Sfere
glPushMatrix(); //??
glRotatef(i/1000.0*360.0,0,1,0); //
glTranslatef(0.1,0.0,0);   //?
glBegin(GL_TRIANGLE_FAN); // rysowanie kˇlka
glColor3f(0.5,0.5,0.5);
for(kat = 0.0f; kat < (2.0f*GL_PI); kat += (GL_PI/32.0f))
{

x = a*sin(kat);  // odpowiada za rysowanie ko?a
y = b*cos(kat);   //


glVertex2f(x, y+YY);


}

glEnd();
glPopMatrix();
}



}
HGLRC hRC = NULL;
HDC hDC = NULL;
HWND hWnd = NULL;
HINSTANCE hInstance = NULL;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


bool CreateGLWindow(char* title, int width, int height)
{
        GLuint    PixelFormat;
        WNDCLASS        wc;
        RECT        WindowRect;
        WindowRect.left = (long)0;
        WindowRect.right = (long)width;
        WindowRect.top = (long)0;
        WindowRect.bottom = (long)height;
        LPCWSTR nazwa = TEXT("Start");


        hInstance               = GetModuleHandle(NULL);
        wc.style                = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
        wc.lpfnWndProc          = (WNDPROC) WndProc;
        wc.cbClsExtra           = 0;
        wc.cbWndExtra           = 0;
        wc.hInstance            = hInstance;
        wc.hIcon                = LoadIcon(NULL, IDI_WINLOGO);
        wc.hCursor              = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground        = NULL;
        wc.lpszMenuName  = NULL;
        wc.lpszClassName        = nazwa;

        RegisterClass(&wc);

        hWnd = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, nazwa,
                nazwa,
                WS_SYSMENU |
                WS_CLIPSIBLINGS |
                WS_CLIPCHILDREN,
                0, 0,
                width,
                height,
                NULL,
                NULL,
                hInstance,
                NULL);

        static  PIXELFORMATDESCRIPTOR pfd =
        {
                sizeof(PIXELFORMATDESCRIPTOR),
                1,
                PFD_DRAW_TO_WINDOW |
                PFD_SUPPORT_OPENGL |
                PFD_DOUBLEBUFFER,
                PFD_TYPE_RGBA,
                32,
                0, 0, 0, 0, 0, 0,
                0,
                0,
                0,
                0, 0, 0, 0,
                16,
                0,
                0,
                PFD_MAIN_PLANE,
                0,
                0, 0, 0
        };

        hDC=GetDC(hWnd);
    PixelFormat=ChoosePixelFormat(hDC,&pfd);
    HRESULT rez = SetPixelFormat(hDC,PixelFormat,&pfd);
    hRC=wglCreateContext(hDC);
    wglMakeCurrent(hDC,hRC);
        ShowWindow(hWnd,SW_SHOW);     
    InitGL();
        return true;

}

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
        switch (uMsg)
        {
                case WM_ACTIVATE:
                {
                                return 0;
                }

                case WM_CLOSE:
                {
                        PostQuitMessage(0);
                        return 0;
                }

        }

        return DefWindowProc(hWnd,uMsg,wParam,lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
        MSG msg;
        bool done = false;



        if (!CreateGLWindow(NULL,800,600))
        {
                return 0;
        }

        while(!done)
        {
                if (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
                {
                        if (!GetMessage(&msg, 0, 0, 0)) done=true;
                        else {
                                TranslateMessage(&msg);
                                DispatchMessage(&msg);
                             }

                }
                else
                {
                 DrawGLScene();
                 SwapBuffers(hDC);
                }
        }

        return (msg.wParam);
}
Zobacz profil autora WyÂlij prywatn▒ wiadomoŠ
 
[C++/Opengl] Utkn??em z projektem kulki
  Forum Grafika 3D Strona G│ˇwna -> OpenGL
Nie mo┐esz pisaŠ nowych tematˇw
Nie mo┐esz odpowiadaŠ w tematach
Nie mo┐esz zmieniaŠ swoich postˇw
Nie mo┐esz usuwaŠ swoich postˇw
Nie mo┐esz g│osowaŠ w ankietach
Wszystkie czasy w strefie CET (Europa)  
Strona 1 z 1  

  
  
  
Username:      Password:     

~ or ~
Register

  
 Napisz nowy temat  Odpowiedz do tematu  


Powered by phpBB © 2001-2003 phpBB Group
Theme created by Vjacheslav Trushkin
Forums ©
Nasze newsy s� w RSS: backend.php
PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Tworzenie strony: 0.08 sekund

:: Layout strony zosta│ stworzony przez www.nukemods.com w oparciu o styl phpbb2 Helius, ktˇrego autorem jest Cyberalien ::