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
}