sabato 12 dicembre 2009

ENGINE 3D openGL, ancora ombre


nuova immagine del l'engine 3D che sto realizando... (dopo 2 settimane ci rimetto le mani sopra XD)

rispetto al vecchio codicce ho corretto dei errori riguardanti l'estrusione della mesh, rispetto alla luce ...
inoltre ora è strutturato in modo che tutte le mesh possano proiettare lombra....
inoltre volendo ci possono essere vare sorgenti di luce :

domenica 6 dicembre 2009

SQLite e JAVA

Per semplificare l'interfaccia tra SQLite e Java ho scritto una piccola libreria composta da 3 classi:




-GetSQLDriver
-SQLib
-SQLEasy

Documentazione:

//libreria carica driver SQL
GetSQLDriver:

il metodo load carica il driver SQL
   driver= cartella dove si trova il driver (default="org.sqlite.JDBC")
  
   public static void load(String driver="org.sqlite.JDBC");


//Libreria gestione Database
SQLib:

il costruttore
   name=indicato il data base da caricare
   public SQLlib(String name);


metodo che chiude il database
   public void SQLClose();


metodo per modificare il db con istruzioni SQLite
   ed=comando SQLite
   public void addMod(String ed);


motodo che restituisce un dato dal DB, la natura del dato va specificata in SQLite
  ed=comando SQLite
  ResultSet= lista valori restituiti
  public ResultSet getMod(String ed)




//Libreria gestione Database, semplificata
SQLEasy:

il costruttore
   name=indicato il data base da caricare
   public SQLEasy(String name);


metodo che chiude il database
   public void SQLClose();


metodo per modificare il db con istruzioni SQLite
   ed=comando SQLite
   public void addMod(String ed);


motodo che restituisce un dato dal DB, la natura del dato va specificata in SQLite
  ed=comando SQLite
  ResultSet= lista valori restituiti
  public ResultSet getMod(String ed)

motodo veloce per creare una tabella
    a=nome tabella
    b=attributi tabella (in SQLite)
    public void crateTable(String a,String b);

motodo veloce per inserire i dati in una tabella
    a=nome tabella
    b=valori da inserire nella tabella (in SQLite)
    public void putValues(String a,String b);

motodo veloce per eliminare una tabella
    a=nome tabella
    public void deleteTable(String a);

motodo veloce per eliminare una riga
    a=nome tabella
    b=caratteristiche che ha il records da eliminare (in SQLite)
    public void deleteRecords(String a,String b);

motodo veloce per conoscere i dati di una tabella
    nTabella=nome della tabella
    nColonne[]=array contenente i nomi delle colonne
    records=valore boolean
         -true verrà restituita una array a due dimenzioni
               dove la prima indicherà il records ed la seconda i dati in esso contenuti


         -false verrà restituita una array a due dimenzioni
               dove la prima indicherà la colonna ed la seconda i dati in essa contenuti

    public String[][] getArrayFrom(String nTabella,String[] nColonne,boolean records=true)







Esempio:


//importo le classi per gestire SQLite
import java.sql.*;

class DbTest{
public DbTest (){
  GetSQLDriver.load(); // carico il driver
  SQLEasy test1=new SQLEasy("Test1.db"); // carico db

  //creo la tabella ed immetto i valori in essa
  test1.crateTable(“tab1”,”id int, nome char[250] ”);
  test1.putValues(“tab1”,”0,’ciao0’ ”);
  test1.putValues(“tab1”,”1,’ciao1’ ”);
  test1.putValues(“tab1”,”2,’ciao2’ ”);

 
  String[] t={“id”,”nome”};
   //stampo (tipo righe)
  printArrayRecords(
                                test1.getArrayFrom("uno",h),”Numero | Nome” ," | ","----------");
                                 );

  //cancello la riga 1
  test1.deleteRecords(“tab1”,”id=1”);


   //stampo (tipo colonne)
  printArrayColonne (
                                test1.getArrayFrom("uno",h,false),”Numero | Nome” ," | ","----------");
                                 );

  //cancella la tabella
  public void deleteTable(“tab1”);

  //chiudo il database
  test1.SQLClose()

}

public static void main(String[] args){
new DbTest();
}

 public void printArrayRecords(String[][] array,String x,String sv,String so){
    if(array!=null){
    System.out.println(x);
        for(int j=0;j<array.length;j++){
          for(int i=0;i<array[j].length;i++){ 
            System.out.print(array[j][i]+sv);
           }
          System.out.println("");
          System.out.println(so);
        }  
        }
    }
 
  DbTest
  public void printArrayColonne(String[][] array,String x,String sv,String so){
    if(array!=null){
    System.out.println(x);
        for(int j=0;j<array[0].length;j++){
          for(int i=0;i<array.length;i++){ 
            System.out.print(array[i][j]+sv);
           }
          System.out.println("");
          System.out.println(so);
        }  
        }
    }
}


giovedì 3 dicembre 2009

STRUTTURA DATA BASE

Ecco a lei professore la struttura del database creata da pampanelli andrea e me

mercoledì 25 novembre 2009

COMPITI

Ecco i copiti da lei ass.
perfavore se può controlli il 9... che molto probabilmente è sbagliato...





ESERCIZIO 13 pag233


Materiali (Codice, Descrizione, Fornitore, Prezzo, IndirizzoFornitore, Quantità, PosizioneInMagazzino, Acciaio, NomeAcciaio, ResistenzaAcciaio, NomeFornitore)


Dipendenze

Acciaio -->(NomeAcciaio, ResistenzaAcciaio) //2rN

NomeAcciaio --> ResistenzaAcciaio //3rN

Acciaio --> ResistenzaAcciaio (transitiva) //3rN


Fornitore
--> (IndirizzoFornitore, NomeFornitore) //2rN




Tabelle


Acciaio(Acciaio, NomeAcciaio) //2rN e 3fN

TipoAcciao(NomeAcciaio, ResistenzaAcciaio) //3fN

Fornitore (Fornitore, IndirizzoFornitore, NomeFornitore) //2rN

Materiali(Codice, Descrizione, Prezzo, IndirizzoFornitore,

Quantità, PosizioneInMagazzino, Acciaio, Fornitore) //2rN






ESERCIZIO 12 pag233


Scrivo la tabella di base:

Libro (CodiceDelLibro, NomeAutore, TitoloLibro, NomeEditore, IndirizzoEditore, Prezzo, AnnoEdizione)

Determino la chiave primaria:

Libro (CodiceDelLibro, NomeAutore, TitoloLibro, NomeEditore, IndirizzoEditore, Prezzo, AnnoEdizione)

Normalizzazione:


1fN:

Non vi sono dati ripetuti.

2fN:

Trovo dipendenze:

IndirizzoEditore --> nomeEditore

//siccome l’indirizzo può avere solo un editore, quindi solo quel nome, ed l’indirizzo è un dato univoco, mentre possono esistere editori con nomi uguali

3fN:

non ci sono dipendenze transitive


tabelle finali


Editore(IndirizzoEditore, nomeEditore)

Libro (CodiceDelLibro, NomeAutore, TitoloLibro, Prezzo, Anno Edizione, IndirizzoEditore)





Esercizio 11 pag233


//////////////

Tabella 1:


Esami1(Corso, Matricola, Data, Voto, NomeCorso)


Dipendenze:


(Matricola, Corso) --> Voto

Corso --> NomeCorso


Tabelle:


Corso(Corso, NomeCorso)

Matricola(Matricola, Corso, Voto)

Esami1(Corso, Matricola, Data)

///////////////

Tabella 2:


Esami2(Corso, Matricola, Data, VotoInCifre, VotoInLettere)

Dipendenze:


( Matricola, Corso )-->(VotoInCifre, VotoInLettere)


Proprietà transitiva:


VotoInCifre --> VotoInLettere

VotoInLettere --> VotoInCifre

( Matricola, Corso ) --> VotoInLettere

( Matricola, Corso ) --> VotoInCifre

Per togliere la 3° forma normale, siccome VotoInCifre e VotoInLettere possono essere sia determinanti che determinate, scelgo come determinante VotoInCifre

Tebelle :


Matricola(Matricola, Corso, VotoInCifre)

VotoCifre(VotoInCifre, VotoInLettere)

Esami2(Corso, Matricola, Data)






ESERCIZIO 10 pag233



Anagrafica (Nome, Cognome, Matricola, Nascita, Indirizzo, CodiceDipartimento, NomeDipartimento, IndirizzoDipartimento, Stipendio)


Dipendenze:



CodiceDipartimento --> (NomeDipartimento, IndirizzoDipartimento)


Tabelle:



Dipartimento(codiceDipartimento, NomeDipartimento, IndirizzoDipartimento)

Anagrafica (Matricola , Nome, Cognome, Nascita, Indirizzo, CodiceDipartimento)




ESERCIZIO 9 pag233



Tabella1(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)


Tabella:


Tabella1(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)

1,2 Normalizazione


Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, Materia_id )

Materia(id, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)

Oppure:


Tabella:

abbiamo 2 entità materia e voti: quindi 2 tabelle

associate Molti a Molti

Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente)


Materia(nomeMateria,votoMateria)




Associazioni:


Valutato(nomeMateria, NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroCivicoStudente )



Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente)



Materia(nomeMateria,votoMateria)

sabato 21 novembre 2009

ENGINE 3D openGL

da ormai un paio di settimane sto lavorando ad un progetto, un ENGINE3D!!

poi spiegherò cosa è un engine 3D ma per il momento... posto solo un immagine


E' scritto in c++ ed usa le librerie openGL e win32!