Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

viewport crtez u razlicitoj poziciji

[es] :: 3D programiranje :: viewport crtez u razlicitoj poziciji

[ Pregleda: 2964 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon viewport crtez u razlicitoj poziciji13.02.2006. u 00:48 - pre 220 meseci
Radi se o grafiksu, kada jedan crtez (viewport) treba da poredjam u 10 kolone, 10 reda.

Sledeći treba da svaki drugi viewport preokrenem naglavacke, znaci, prvi redovno, drugi 180 stepeni okrenut CCW.

Treca funckija treba da postavi viwport na sredinu i da se povecava (Zoom-ira) sve dok nije velicina prozora.

Cetvrta treba da mi smanjuje sliku.

Napravila sam sve ali tri funcije mi nedostaju. Da li ima neko ideju? Hvala

#include <windows.h>
#include <gl/Gl.h>
#include <gl/glut.h>
#include <fstream>
#include <iostream>
using namespace std;

void myInit(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glColor3f(0.0f, 0.0f, 0.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 400.0, 0.0, 400.0);
}

void drawPolyLineFile(char * fileName)
{
ifstream in_stream;
in_stream.open(fileName);
if(in_stream.fail()){
cout << "Error Opening the Inputfile" ;
return;
}
GLint numpolys, numLines, x ,y;
in_stream>> numpolys;
for(int j = 0; j <numpolys; j++)
{
in_stream>> numLines;
glBegin(GL_LINE_STRIP);
for (int i = 0; i <numLines; i++)
{
in_stream>> x >> y;
glVertex2i(x, y);
}
glEnd();
}
glFlush();
in_stream.close();
}
void drawCrtezTile(int N){
glClear (GL_COLOR_BUFFER_BIT);
char * name = „crtez.dat” ;
for (int i=0; i<N; i++)
for (int j=0; j<N; j++){
int L=640/N;
glViewport (i*L, j*L, L, L);
drawPolyLineFile(name);
}
}

void drawCrtezFlipTile(int N){

}

void drawZoom (){
}

void drawZoomOut(){
}

void myDisplay(void)
{

// drawCrtezTile(8);
// drawCrtezFlipTile (10);
// drawZoom();
// drawZoomOut();
}

void main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100, 150);
glutCreateWindow(„Crtez”);
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
}


 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.tehnicom.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 10:51 - pre 220 meseci
FUNCTION drawCrtezFlipTile( N )
FOR i
FOR j
glViewport (i*L, j*L, L, L);

glMatrixMode( GL_PROJECTION );
glLoadIdentity( );
if ( ( i + j ) % 2 )
{
glOrtho( 1, -1, 1, -1, -1, 1 ); // okreni naopako
}
else
{
glOrtho( -1, 1, -1, 1, -1, 1 ); // normalno
}
glMatrixMode( GL_MODELVIEW );
glLoadIdentity( );
drawPolyLineFile(name);

END_FOR j
END_FOR i

nadam se da ce ti ovo pomoci oko drugog zadatka
Bazirano na kratkom pregledu primera
http://www.cs.rit.edu/usr/loca...penGL/ExamplesLab3/multiview.c
sto ce reci, dok ne otkucas, necemo znati da li radi :(

Posto ti je prozor kvadratnog oblika stavi viewport preko celog ekrana (400x400) i to je full-zoom osim ako se ne trazi da se analiziraju tacke iz poligona i da se nadje minimalni AABB, tj. da prikazes poligon sa sto je moguce vecim zoom-om?

"Cetvrta treba da mi smanjuje sliku"?! kako ili sta
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 11:18 - pre 220 meseci
Hvala ti Dragane,

treca je zoom a cetvrta zoom - out....

sad cu da probam ovo sto si mi postavio
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 12:21 - pre 220 meseci
Nesto mi ne valja. Ne daje mi nikakav error message pojavi mi se prozor ali mi se ne otvara slika.
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 12:24 - pre 220 meseci
a prozor cu da stavim 640 X 400 umesto 400x400
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.tehnicom.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 12:27 - pre 220 meseci
Hajde baci ceo projekt ( source + data ) na forum ili na mail...
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 12:59 - pre 220 meseci
mislim da sam ti poslala preko e-maila....mozes proveriti?

Hvala Ti puno
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 13:10 - pre 220 meseci
ako sam potefila(nisam bas vicna sa ovom diskusijom, ali mi se sve vise svidja) poslala sam ti crtez.dat u drugom e-mail-u. Valjda je otislo.

 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.tehnicom.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 13:20 - pre 220 meseci
Code:

#include <windows.h>
#include <gl/Gl.h>
#include "glut.h"
#include <fstream>
#include <iostream>
using namespace std;

void myInit(void)
{
    glClearColor(0.5,0.5,0.5,1.0);
    glColor3f(0.0f, 0.0f, 0.0f);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, 400.0, 0.0, 400.0);
}

void drawPolyLineFile(char * fileName)
{
    /*
    ifstream in_stream;
    in_stream.open(fileName);
    if(in_stream.fail()){
        cout << "Error Opening the Inputfile" ;
        return;
    }
    GLint numpolys, numLines, x ,y;
    in_stream>> numpolys;
    for(int j = 0; j <numpolys; j++)
    {
        in_stream>> numLines;
        glBegin(GL_LINE_STRIP);
        for (int i = 0; i <numLines; i++)
        {
            in_stream>> x >> y;
            glVertex2i(x, y);
        }
        glEnd();
    }
    glFlush();
    in_stream.close();
    */

    glColor3b( 255, 255, 255 );
    glBegin(GL_LINE_LOOP);
    glVertex2i(10, 10);
    glVertex2i(10, 400 - 10);
    glVertex2i(400-10, 400 - 10);
    glVertex2i(400-10, 10);
    glEnd();
    glBegin( GL_LINES );
    glVertex2i(10, 10);
    glVertex2i(210, 210);
    glEnd();
}
void drawCrtezTile(int N){
    glClear (GL_COLOR_BUFFER_BIT);
    char * name = "crtez.dat" ;
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++){
            int L=400/N;
            glMatrixMode( GL_MODELVIEW );
            glLoadIdentity( );
            glViewport (i*L, j*L, L, L);
            drawPolyLineFile(name);
        }
    }
}

void drawCrtezFlipTile(int N){
    glClear (GL_COLOR_BUFFER_BIT);
    char * name = "crtez.dat" ;
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++){
            int L=400/N;
            glMatrixMode( GL_MODELVIEW );
            glLoadIdentity( );
            if ( ( i ^ j ) & 1  )
            {    
                float m[] =
                {
                    -1, 0, 0, 0,     // mirror oko x ose
                    0, -1, 0, 0,     // mirror oko y ose  zajedno daju rotaciju 180 CCW
                    0, 0, 1, 0,         // 2D pa ne diramo z osu
                    400, 400, 0, 1 }; // pomeri za ( 400, 400 ) 
                glLoadMatrixf( m );
            }
            glViewport (i*L, j*L, L, L);
            drawPolyLineFile(name);
        }
    }
}

void drawZoom (){
}

void drawZoomOut(){
}

void myDisplay(void)
{

    //drawCrtezTile(8);
    drawCrtezFlipTile (10);
    // drawZoom();
    // drawZoomOut();
}

void main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(400,400);
    glutInitWindowPosition(100, 150);
    glutCreateWindow("Crtez");
    glutDisplayFunc(myDisplay);
    glutIdleFunc(myDisplay);
    myInit();
    glutMainLoop();



Sledeci zadatak resavas samo sto pravis kompoziciju sklairanja i translacije MV matrice, a nije bas da sam shvatio kriterijume. Vrati f-ju drawPolyLineFile na original (nisam imao dat fajl)

 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.tehnicom.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 13:23 - pre 220 meseci
Code:

#include <windows.h>
#include <gl/Gl.h>
#include "glut.h"
#include <fstream>
#include <iostream>
using namespace std;

void myInit(void)
{
    glClearColor(0.5,0.5,0.5,1.0);
    glColor3f(0.0f, 0.0f, 0.0f);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, 400.0, 0.0, 400.0);
}

void drawPolyLineFile(char * fileName)
{
    /*
    ifstream in_stream;
    in_stream.open(fileName);
    if(in_stream.fail()){
        cout << "Error Opening the Inputfile" ;
        return;
    }
    GLint numpolys, numLines, x ,y;
    in_stream>> numpolys;
    for(int j = 0; j <numpolys; j++)
    {
        in_stream>> numLines;
        glBegin(GL_LINE_STRIP);
        for (int i = 0; i <numLines; i++)
        {
            in_stream>> x >> y;
            glVertex2i(x, y);
        }
        glEnd();
    }
    glFlush();
    in_stream.close();
    */

    glColor3b( 255, 255, 255 );
    glBegin(GL_LINE_LOOP);
    glVertex2i(10, 10);
    glVertex2i(10, 400 - 10);
    glVertex2i(400-10, 400 - 10);
    glVertex2i(400-10, 10);
    glEnd();
    glBegin( GL_LINES );
    glVertex2i(10, 10);
    glVertex2i(210, 210);
    glEnd();
}
void drawCrtezTile(int N){
    glClear (GL_COLOR_BUFFER_BIT);
    char * name = "crtez.dat" ;
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++){
            int L=400/N;
            glMatrixMode( GL_MODELVIEW );
            glLoadIdentity( );
            glViewport (i*L, j*L, L, L);
            drawPolyLineFile(name);
        }
    }
}

void drawCrtezFlipTile(int N){
    glClear (GL_COLOR_BUFFER_BIT);
    char * name = "crtez.dat" ;
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++){
            int L=400/N;
            glMatrixMode( GL_MODELVIEW );
            glLoadIdentity( );
            if ( ( i ^ j ) & 1  )
            {    
                float m[] =
                {
                    -1, 0, 0, 0,     // mirror oko x ose
                    0, -1, 0, 0,     // mirror oko y ose  zajedno daju rotaciju 180 CCW
                    0, 0, 1, 0,         // 2D pa ne diramo z osu
                    400, 400, 0, 1 }; // pomeri za ( 400, 400 ) 
                glLoadMatrixf( m );
            }
            glViewport (i*L, j*L, L, L);
            drawPolyLineFile(name);
        }
    }
}

void drawZoom (){
}

void drawZoomOut(){
}

void myDisplay(void)
{

    //drawCrtezTile(8);
    drawCrtezFlipTile (10);
    // drawZoom();
    // drawZoomOut();
}

void main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(400,400);
    glutInitWindowPosition(100, 150);
    glutCreateWindow("Crtez");
    glutDisplayFunc(myDisplay);
    glutIdleFunc(myDisplay);
    myInit();
    glutMainLoop();



Ostale funkcije resavas tako sto pravis kompoziciju sklairanja i translacije MV matrice, a nije bas da sam shvatio kriterijume (verovatno po obliku objekta koji iscrtavas).
P.S. Vrati f-ju drawPolyLineFile na original (nisam imao dat fajl)

 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 13:29 - pre 220 meseci
hvala ti, pogledacu kasnije. Ovde je 5 sati i 30 ujutru i uskoro cu morati u skolu. Kada se vratim iz skole, javicu se.
Pozdrav
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 13:35 - pre 220 meseci
hej Dragane, radi, - radi ko ludo, nece da prestane...popravicu kasnije...hvala :)
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 13:49 - pre 220 meseci
ne znam kako da ga zaustavim. treba da nacrta 10 crteza u koloni i 10 u redovima i nacrta ali onda izbrise screen i nastavlja da crta....kad nije radio, nije, a sada radi ko navijen :(
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.tehnicom.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 14:08 - pre 220 meseci
dodaj na kraju iscrtavanja komandu
glutSwapBuffers( );
pa ce biti prijatnije za oko
P.S. mail mi nije stigao, ko zna sta mi je podeseno u profilu i gde to vodi. Ako se ne snadjes oko zoom-iranja posalji dat file na draganssmiljanic[at]yahoo.com
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.tehnicom.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji13.02.2006. u 14:15 - pre 220 meseci
Ukoliko ti je eksplicitno receno da se funkcija zove drawCrtezFlipTile, sa akcentom na Flip onda se ne radi o rotaciji za 180 nego o slici u ogledalu, i tad matrica mora da ima oblik:
-1, 0, 0, 0, // mirror oko x ose
0, 1, 0, 0,
0, 0, 1, 0, // 2D pa ne diramo z osu
400, 0, 0, 1
ili
1, 0, 0, 0, // mirror oko x ose
0, -1, 0, 0, // mirror oko y ose zajedno daju rotaciju 180 CCW
0, 0, 1, 0, // 2D pa ne diramo z osu
0, 400, 0, 1

zavisno da li ces mirror po vertikalnoj ili horizontalnoj osi. Inace, bolje da je drugacije nazoves.
 
Odgovor na temu

Malena perl
canada

Član broj: 40525
Poruke: 15
*.ok.shawcable.net.



Profil

icon Re: viewport crtez u razlicitoj poziciji14.02.2006. u 02:44 - pre 220 meseci
Poslala sam Ti Dragane. Dve funkcije perfektno rade. Ne "trckaraju"vise. Iscrta 10 reda i 10 kolona, pa onda pocne sa drugom gde se svaka druga preokrene. Sada mi treba samo Zoom i Zoom out. Na tom cu nocas raditi, bicu na vezi.

Hvala, bas sam zadovoljna.
 
Odgovor na temu

[es] :: 3D programiranje :: viewport crtez u razlicitoj poziciji

[ Pregleda: 2964 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.