vytvorenie vlastného typu súboru a jeho načítanie

Programovacie jazyky, rady, poradňa...
Bigbob
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 271
Registrovaný: 25 aug 2008, 20:44

vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa Bigbob »

jazyk: C++

Zaujímalo by ma, ako by som si mohol vytvoriť vlastný typ súboru(čo najjednoduhší), ktorý by v sebe držal súradnice bodov v 3d priestore a následne by som si z neho vytiahol informácie o týchto bodoch. Tie by som následne zobrazil pomocou OpenGL. Naozaj nemám najmenšie tušenie, kde by som mal začať, tak sa obraciam na vás.

(medzitým skúsim niečo vygúgliť)

/áno, nudím sa/
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa audiotrack »

tri čísla ooddelené buď medzerou v jednom riadku, alebo každé do nového
Bigbob
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 271
Registrovaný: 25 aug 2008, 20:44

Re: vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa Bigbob »

To je všetko? Takže si vpíšem do textového súboru nejaké tri čísla a tie v c++ načítam ako súradnice bodu?

tak načítavanie tých čísel mám, len neviem ako OpenGL prinútit aby mi ich zobrazilo. Urobím si v zdrojáku trochu poriadok a pošlem ho sem.


EDIT: tak tu to je: pokúsil som sa aby sa zo súboru "point.b3m" načítali súradnice prvého bodu. No neviem, ako priradiť jedno číslo k jednej osi súradnice.

main.cpp

Kód: Vybrať všetko

#include <iostream>
#include <fstream>
#include <gl/GLUT.h>

using std::cout;
using std::endl;
using std::ifstream;


void Display(void){
      //initialising of that stuff
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
      glLoadIdentity();
      glEnable(GL_COLOR_MATERIAL);
      glTranslatef(0.0, 0.0, -2.0);
      glRotatef(30,0.0,1.0,.0);
      glRotatef(20,0.0,0.0,1.0);


ifstream indata; //
int num; // tato premenna by mala ziskavat hodnoty zo suboru

indata.open("point.b3m"); // otvorenie suboru

indata >> num;
while ( !indata.eof() ) { // malo by to citat vzdy dalsie cislo v subore az kym sa nedostane na koniec
    cout << "cislo: " << num << endl;
    indata >> num;
    }
    indata.close();
    cout << "Som na konci suboru" << endl;
      glBegin(GL_QUADS);
      glNormal3f(0.0,0.0,0.0);
      glVertex3f(num,num,num);
      glVertex3f(0.0, 1.0,0.0);
      glVertex3f(1.0, 1.0,0.0);
      glVertex3f(1.0, 0.0,0.0);
      glEnd();
      glutSwapBuffers();
}

void init(){
    glEnable(GL_DEPTH_TEST);
    glClearColor(1.0,1.0,1.0,1.0);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    }

void Resize(int w, int h){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
        glViewport(0, 0, w, h);
    gluPerspective(45,(double)w/(double)h,1,100);
    glMatrixMode(GL_MODELVIEW);}


int main()
{
    glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(10, 10);
    glutCreateWindow("Model_loader");


    glutDisplayFunc(init);
    glutIdleFunc(Display);
    glutReshapeFunc(Resize);

    init();
    glutMainLoop();
    return 0;
    }

(pardon, že mi ten štvoruholník trochu "ušiel")

point.b3m

Kód: Vybrať všetko

0 0 0
EDIT: to číslo zo súboru som dal načítať ako normálu štvoruholníka :smt081 . Už som to opravil tak, že to číslo v súbore je súradnica prvého bodu štvoruholníka
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa chrono »

1. Podľa mňa je jednoduchšie použiť binárny súbor (jednoduchšie pre načítavanie, nie pre editovanie).
2. Prečo načítavaš len jedno číslo, keď chceš čísla 3? (a ak ide o trojuholník tak potrebuješ 9 čísel)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa audiotrack »

ty si to num stále prepisuješ, ak budú rôzne hodnoty ako tri nuly tak ti to nebude správne fungovať
Bigbob
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 271
Registrovaný: 25 aug 2008, 20:44

Re: vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa Bigbob »

chrono:
1. aký je tam rozdiel, ak sa smiem tak hlúpo spýtať? :oops: EDIT: (čo sa týka jeho vytvárania)
2 no, chcel som len aby mi to z toho súboru načítalo aspoň "niečo". Ni je mi jasné ako priradiť jednu trojicu číslic k jednému bodu a potom z dalších trojíc číslic získať dalšie súradnice.

audiotrack: Môžem nejako načítať číslo do premennej num, zadať ho ako časť súradnice, načítať novú hodnotu premennej num a tú následne zadať ako dalšiu čast súradnice atd?

Týmto sa zaoberám prvý raz a absolútne neviem, ako mám postupovať.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: vytvorenie vlastného typu súboru a jeho načítanie

Príspevok od používateľa chrono »

Pri textovom formáte môžeš priamo upravovať ten súbor v akomkoľvek textovom editore. Ak tam ale budú binárne dáta, budeš si musieť urobiť nejaký program (buď priamo editor, to je ale zložité, alebo nejaký konvertor, napr. text ->binárny súbor a možno aj naopak, alebo urobíš jednoduchý program napr. v C a tam si potrebné dáta dáš do poľa a uložíš to do toho súboru).
Napísať odpoveď