Autor: Matija Novak, univ. bacc. inf.
Posljednja promjena: 19.11.2009. 17:36
Studij: Diplomski studij Smjer: Baze podataka i baze znanja
Pretvorba PERSP -> STEREO
Važne formule:
yl = (y * d) / (d + z)
yr = (y * d) / (d + z)
xl = ((d * (x + e/2)) / (d + z)) - e/2
xr = ((d * (x - e/2)) / (d + z)) + e/2
e = 2*d*tan(B/2)/(1 - (d / (d + z)))


private Color bojaR;
private Color bojaL;
public void postaviBoju()
    {
        int redval;
        int blueval;
        int backgval;

        Color leftColor, rightColor;

        redval = 188;
        blueval = 255;
        backgval = 84;
        leftColor = new Color(redval, backgval, 0);
        rightColor = new Color(0, backgval, blueval);

        this.bojaL = leftColor;
        this.bojaR = rightColor;      
    }
						
						
public void postaviBojuDubina()
{
   Samo zamijeniti lijevu i desnu boju
}

public void postaviBoju
(Color bojaL, Color bojaR) {
    this.bojaL = bojaL;
    this.bojaR = bojaR;
}
						
public void idiNa(double x, double y, double z) {
…
izracunaj_udaljenost_oka(koordinate[2][0]);
double[][] koordinateL = new double[3][1];
koordinateL[0][0] = ((-d*(koordinate[0][0]+e/2.0))
		/(koordinate[2][0]-d))-e/2.0;
koordinateL[1][0] = koordinate2[1][0];
koordinateL[2][0] = 1;

double[][] koordinateR = new double[3][1];
koordinateR[0][0] = ((-d*(koordinate[0][0]-e/2.0))
		/(koordinate[2][0]-d))+e/2.0;
koordinateR[1][0] = koordinate2[1][0];
koordinateR[2][0] = 1;

koordinateL = matrice.mnozenje_matrica
			(koordinatni_sustav, koordinateL);
koordinateR = matrice.mnozenje_matrica
			(koordinatni_sustav, koordinateR);

this.odxL = koordinateL[0][0];
this.odyL = koordinateL[1][0];
this.odxR = koordinateR[0][0];
this.odyR = koordinateR[1][0]; 
}

						
private void izracunaj_udaljenost_oka(double z)
{
    double i=(z)/-d;
    double B=Math.toRadians(1.5);
    e = 2 * -d * Math.tan(B / 2) * ((i + 1) / i);
    //double p = 2 * -d * Math.tan(B / 2);
    //e = p / (1 - (-d / (-d + z)));
}

public void povuciDo(double x, double y, double z) {
	…    
	//sve isto kao i kod idiNa 
    this.doxL = koordinateL[0][0];
    this.doyL = koordinateL[1][0];
    this.doxR = koordinateR[0][0];
    this.doyR = koordinateR[1][0];

    g.setColor(bojaL);
    g.drawLine((int)odxL, (int)odyL,(int)doxL,(int) doyL);
    g.setColor(bojaR);
    g.drawLine((int)odxR, (int)odyR,(int)doxR,(int) doyR);  
	… 
	//postaviti novi od
}

						
						

O autoru: Matija Novak
Organizacija: Fakultet Organizacije i Informatike Predmet: Računalna grafika