コード例 #1
0
ファイル: RotaKamera.cs プロジェクト: mladenovak/rota
    public static MatricaRotacije matrica_ZX(double stupnjeva_okoZ, double stupnjeva_okoX)
    {
        MatricaRotacije mx = new MatricaRotacije(stupnjeva_okoX, 'x');
        MatricaRotacije mz = new MatricaRotacije(stupnjeva_okoZ, 'z');

        return(mz * mx);
    }
コード例 #2
0
ファイル: RotaKamera.cs プロジェクト: mladenovak/rota
    public static MatricaRotacije matrica_ZXY_i(double stupnjeva_okoZ, double stupnjeva_okoX, double stupnjeva_okoY)
    {
        MatricaRotacije mx = new MatricaRotacije(-stupnjeva_okoX, 'x');
        MatricaRotacije my = new MatricaRotacije(-stupnjeva_okoY, 'y');
        MatricaRotacije mz = new MatricaRotacije(-stupnjeva_okoZ, 'z');

        return(my * (mx * mz));
    }
コード例 #3
0
ファイル: RotaKamera.cs プロジェクト: mladenovak/rota
        // ove funkcije klasa koristi interno
        // pozivaju se automatski kad se promijeni neki public property
        private void KamRotateApsolut(double stupnjeviOkoZ, double stupnjeviOkoX, double stupnjeviOkoY)
        {
            // tocka na sferi polumjera 1 gdje je kamera

            RotMatricaZXY   = prostorneRotacije.matrica_ZXY(stupnjeviOkoZ, stupnjeviOkoX, stupnjeviOkoY);
            RotMatricaZXY_i = prostorneRotacije.matrica_ZXY_i(stupnjeviOkoZ, stupnjeviOkoX, stupnjeviOkoY);

            KamRotacijaVektor = (Vector3D)(RotMatricaZXY * (Vector3D)KamDefPoz);

            // vektor 'kamera gore' se takodjer mora rotirati s kamerom, time se kamera moze "kotrljati"
            KamUp = (Vector3D)(RotMatricaZXY * (Vector3D)KamUpDefPoz);
        }
コード例 #4
0
ファイル: RotaKamera.cs プロジェクト: mladenovak/rota
    public static MatricaRotacije PomnoziMatrice(MatricaRotacije m_lijeva, MatricaRotacije m_desna)
    {
        MatricaRotacije m_tmp = new MatricaRotacije();

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                m_tmp.matrica[i, j] = 0;
                for (int k = 0; k < 3; k++)
                {
                    m_tmp.matrica[i, j] += m_lijeva.matrica[i, k] * m_desna.matrica[k, j];
                }
            }
        }
        return(m_tmp);
    }
コード例 #5
0
ファイル: RotaKamera.cs プロジェクト: mladenovak/rota
    public static Vector3D PomnoziVektorMatricom(MatricaRotacije m, Vector3D v)
    {
        double[] v_tmp = new double[3] {
            0, 0, 0
        };
        double[] v_orig = new double[3] {
            v.X, v.Y, v.Z
        };

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                v_tmp[i] += m.matrica[i, j] * v_orig[j];
            }
        }

        return(new Vector3D(v_tmp[0], v_tmp[1], v_tmp[2]));
    }