コード例 #1
0
    public double m3 = 0;   //スコア計算用変数
                            //********** 終了 **********//

    // Start is called before the first frame update
    void Start()
    {
        cam             = Camera.main;
        cM              = cam.GetComponent <cameraMove2>();
        propertime.text = "Worldtime:  0s"; //初期スコアを代入して画面に表示
        t = 0;
    }
コード例 #2
0
ファイル: cubeMove2.cs プロジェクト: Yasuda5160/sogebu_EMVR
 // Start is called before the first frame update
 void Start()
 {
     //importing ArrowDirection for Electromagnetic Effects
     player           = Camera.main;
     cameraMove2      = player.GetComponent <cameraMove2>();
     GeneralRelmetric = metric.GetComponent <GeneralRelmetric>();
     //
     playrposworldframe4 = cameraMove2.playrposworldframe4;
     playrposworldframe3 = playrposworldframe4;
     //
     objposworldframe3   = this.transform.position;
     objposworldframe4   = objposworldframe3;
     objposworldframe4.w = -(playrposworldframe3 - objposworldframe3).magnitude;
     //objvelworldframe3 =
     objvelworldframe4   = objvelworldframe3;
     objvelworldframe4.w = 1.0f;
     //objaccelworldframe3 =
     objaccelworldframe4   = objaccelworldframe3;
     objaccelworldframe4.w = 0.0f;
     //
     Lplayer = cameraMove2.Lplayer;
     Lobject = cameraMove2.LTrans(objvelworldframe3);
     //
     this.transform.position = Lplayer * objposworldframe4;
 }
コード例 #3
0
    // Start is called before the first frame update
    void Start()
    {
        //importing section for Electromagnetic Effects
        cam                   = Camera.main;
        cameraMove2           = cam.GetComponent <cameraMove2>();
        cubeMove2             = this.GetComponent <cubeMove2>();
        cubeMove2pointcharge1 = GameObject.Find("Point_charge").GetComponent <cubeMove2>();
        cubeMove2pointcharge2 = GameObject.Find("Point_charge2").GetComponent <cubeMove2>();

        //Update the latest positions of Each point source
        pointchargeposworldframe3  = cubeMove2pointcharge1.objposworldframe3;
        pointcharge2posworldframe3 = cubeMove2pointcharge2.objposworldframe3;

        //Electric charge of the point source.
        q1 = 1.0f;
        q2 = 0.0f;
        m1 = 0.0f;
        m2 = 0.0f;
        //an Arrow's Position Vector mesured from Each point source in World frame
        Vector3 r = cubeMove2pointcharge1.Lobject * rR(cubeMove2.objposworldframe3, pointchargeposworldframe3);
        Vector3 R = cubeMove2pointcharge2.Lobject * rR(cubeMove2.objposworldframe3, pointcharge2posworldframe3);

        //Player's Position Vector mesured from Each point source in World frame
        Vector3 rp = cubeMove2pointcharge1.Lobject * rR(cameraMove2.playrposworldframe3, pointchargeposworldframe3);
        Vector3 Rp = cubeMove2pointcharge2.Lobject * rR(cameraMove2.playrposworldframe3, pointcharge2posworldframe3);

        //Creating Electromagnetic Tensor for an Arrow's position in world frame
        Matrix4x4 F1 = cubeMove2pointcharge1.Lobject.inverse * K(field(cubeMove2pointcharge1.Lobject * r, q1), field(cubeMove2pointcharge1.Lobject * r, m1)) * cubeMove2pointcharge1.Lobject.inverse;
        Matrix4x4 F2 = cubeMove2pointcharge2.Lobject.inverse * K(field(cubeMove2pointcharge1.Lobject * R, q2), field(cubeMove2pointcharge1.Lobject * R, m2)) * cubeMove2pointcharge2.Lobject.inverse;

        F = Sum(F1, F2);
        //Creating Electromagnetic Tensor for an Arrow's position in Player's rest frame
        Matrix4x4 f = cameraMove2.Lplayer * F * cameraMove2.Lplayer;

        efield = new Vector3(f.m03, f.m13, f.m23);
        this.transform.localScale = new Vector3(1, efield.magnitude / 20, 1);

        if (vp(efield, new Vector3(0, 0, 1)) == new Vector3(0, 0, 0))
        {
            Vector3 up1 = vp(efield, new Vector3(0, 1, 0));
            // 方向を、回転情報に変換
            Quaternion erotation = Quaternion.LookRotation(up1, efield);
            transform.rotation = erotation;
        }
        else
        {
            Vector3 up1 = vp(efield, new Vector3(0, 0, 1));
            // 方向を、回転情報に変換
            Quaternion erotation = Quaternion.LookRotation(up1, efield);
            transform.rotation = erotation;
        }

        //Creating Electromagnetic Tensor for Player's position in world frame
        Matrix4x4 G1 = cubeMove2pointcharge1.Lobject.inverse * K(field(cameraMove2.LTrans(cubeMove2pointcharge1.objvelworldframe3) * rp, q1), field(cameraMove2.LTrans(cubeMove2pointcharge1.objvelworldframe3) * rp, m1)) * cubeMove2pointcharge1.Lobject.inverse;
        Matrix4x4 G2 = cubeMove2pointcharge2.Lobject.inverse * K(field(cameraMove2.LTrans(cubeMove2pointcharge1.objvelworldframe3) * Rp, q2), field(cameraMove2.LTrans(cubeMove2pointcharge1.objvelworldframe3) * Rp, m2)) * cubeMove2pointcharge2.Lobject.inverse;

        G = Sum(G1, G2);
    }
コード例 #4
0
 // Start is called before the first frame update
 void Start()
 {
     cam  = Camera.main;
     c    = cam.GetComponent <cameraMove2>();
     Linv = c.Lplayer.inverse;
     /*Output of this Lorentz matrix is on debug console*/
     Debug.Log($"lmat = {Linv}");
     RenderSettings.skybox = sky[num];
 }
コード例 #5
0
    // Start is called before the first frame update
    void Start()
    {
        /*Calculate Static Electromagnetic wave*/
        Vector3 tmp  = GameObject.Find("Point_charge").transform.position;
        Vector3 tmp2 = GameObject.Find("Point_charge2").transform.position;

        cam = Camera.main;
        cM  = cam.GetComponent <cameraMove2>();
        //Defining a point charge at Rzero.
        Rzero = tmp;
        rzero = tmp2;
        //Electric charge of the point source.
        q1 = 1.0f;
        q2 = 0.0f;

        r = rR(transform.position, rzero);
        R = rR(transform.position, Rzero);

        rp = rR(cM.transform.position, rzero);
        Rp = rR(cM.transform.position, Rzero);

        Rmag = R.magnitude;
        rmag = r.magnitude;

        ep = 0.000038f;

        //Defining electric field so that arrow can be drawn.
        efield = field(r, q1) + field(R, q2);
        //efield = new Vector3(0.0f, 0.0f, 23.0f);
        bfield = field(r, 0) + field(R, 0);

        efp = field(rp, q1) + field(Rp, q2);
        bfp = field(rp, 0) + field(Rp, 0);

        Debug.Log($"efield0={efield}");
        Debug.Log($"bfield0={bfield}");

        //defining elecromagnetic vector
        //creating electromagnetic tensor
        //F has both lower indices: (0,1,2,3) is (x,y,z,t), where t=w.
        F = K(efield, bfield);
        f = K(efp, bfp);
        this.transform.localScale = new Vector3(1, efield.magnitude / 10, 1);
        Debug.Log($"Fad={F}");
        Debug.Log($"fffad={f}");
        t = 0;
        Q = F;
        q = f;
    }
コード例 #6
0
ファイル: instantiate.cs プロジェクト: Yasuda5160/sogebu_EMVR
 // Start is called before the first frame update
 void Start()
 {
     cam         = Camera.main;
     cameraMove2 = cam.GetComponent <cameraMove2>();
     for (int i = -5; i <= 5; i++)
     {
         for (int j = -5; j <= 5; j++)
         {
             for (int k = -2; k <= 2; k++)
             {
                 Instantiate(CubePrefab, new Vector3(i * 10.0f, k * 10.0f + cam.transform.position.y, j * 10.0f + 50.0f), transform.rotation);
             }
         }
     }
 }
コード例 #7
0
    private Vector3 objectposworldframe4;     //object's world frame position

    public void Awake()
    {
        Quaternion q = centralObject.transform.rotation.normalized;

        //Defining Rotation Matrix by using Quartanion
        R     = Matrix4x4.identity;
        R.m00 = q.x * q.x - q.y * q.y - q.z * q.z + q.w * q.w;
        R.m01 = 2 * (q.x * q.y - q.z * q.w);
        R.m02 = 2 * (q.x * q.z + q.y * q.w);
        R.m10 = 2 * (q.x * q.z + q.y * q.w);
        R.m11 = -q.x * q.x + q.y * q.y - q.z * q.z + q.w * q.w;
        R.m12 = 2 * (q.y * q.z - q.x * q.w);
        R.m20 = 2 * (q.x * q.z - q.y * q.w);
        R.m21 = 2 * (q.y * q.z + q.x * q.w);
        R.m22 = -q.x * q.x - q.y * q.y + q.z * q.z + q.w * q.w;

        cam         = Camera.main;
        cameraMove2 = cam.GetComponent <cameraMove2>();
        cubeMove2   = centralObject.GetComponent <cubeMove2>();

        //importing the position of central object in world frame from cubeMove's four vector x4
        centralobjectposworldframe4 = cubeMove2.objposworldframe4;
        centralobjectposworldframe3 = centralobjectposworldframe4;

        //importing Lorentz transformation(Lplayer) and its inverse transformation from cameraMove
        Lplayer        = cameraMove2.Lplayer;
        Lplayerinverse = cameraMove2.Lplayer.inverse;

        //importing basic meshdata(vertex list)
        this.meshFilter       = this.GetComponent <MeshFilter>();
        this.originalvertices = this.meshFilter.mesh.vertices;
        this.vertices         = this.meshFilter.mesh.vertices;

        //objectposworldframe4 = Lplayerinverse * centralobjectposworldframe4;//body's position in world frame

        centralobjectvelworld3   = new Vector3(0.0f, 0.0f, 0.0f);
        centralobjectvelworld4   = centralobjectvelworld3;
        centralobjectvelworld4.w = 1.0f;
    }
コード例 #8
0
ファイル: velocity.cs プロジェクト: Yasuda5160/sogebu_EMVR
    public double m3 = 0; //スコア計算用変数
    //********** 終了 **********//

    // Start is called before the first frame update
    void Start()
    {
        cam          = Camera.main;
        cM           = cam.GetComponent <cameraMove2>();
        veltext.text = "Velocity: 0% of the speed of light."; //初期スコアを代入して画面に表示
    }