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; }
// 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; }
// 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); }
// 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]; }
// 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; }
// 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); } } } }
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; }
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."; //初期スコアを代入して画面に表示 }