public Vector3 GetRandDirection(Spherical directionPivot, Spherical extends) { float jitHeading = -extends.Phi + (float)_rand.NextDouble() * (2 * extends.Phi); float jitPith = -extends.Theta + (float)_rand.NextDouble() * (2 * extends.Theta); Vector3 direction = Spherical.ToCartesian(directionPivot.Theta + jitPith, directionPivot.Phi + jitHeading); return(direction); }
public Vector3 GetRandDirection() { float jitPith = (float)_rand.NextDouble() * Numerics.PI; float jitHeading = (float)_rand.NextDouble() * Numerics.TwoPI; Vector3 direction = Spherical.ToCartesian(jitPith, jitHeading); return(direction); }
private void CreateLights() { _lights = new Frame[6]; Random ran = new Random(); Color3[] colors = new Color3[8] { new Color3(Color.Yellow.ToArgb()), new Color3(Color.Red.ToArgb()), new Color3(Color.Green.ToArgb()), new Color3(Color.LightCoral.ToArgb()), new Color3(Color.DarkBlue.ToArgb()), new Color3(Color.Gray.ToArgb()), new Color3(Color.IndianRed.ToArgb()), new Color3(Color.LightSalmon.ToArgb()) }; float step = Numerics.TwoPI / _lights.Length; Spherical spherical = new Spherical(Numerics.PIover2, 0); for (int i = 0; i < _lights.Length; i++) { var light = new Light() { Diffuse = colors[i % 8], //Diffuse = new Vector3((float)ran.NextDouble(),(float)ran.NextDouble(),(float)ran.NextDouble()), Specular = new Vector3(0.2f, 0.2f, 0.2f), Type = LightType.Point, Enable = true }; spherical.Phi = step * i; var pos = spherical.ToCartesian() * 300; pos.Y = 50; var instance = new FrameLight(light); var node = SceneManager.Scene.Create("light" + i, instance, localPosition: pos, localRotationEuler: Euler.FromDirection(new Vector3(0, -1, 0)), localScale: new Vector3(1, 1, 1)); SceneManager.Scene.Dynamics.Add(new Dynamic(x => { Frame n = node; n.LocalPosition = Vector3.TransformCoordinates(n.LocalPosition, Matrix.RotationY(Numerics.ToRadians(1))); n.ComputeLocalPose(); n.CommitChanges(); })); _lights[i] = node; } }
void Update() { sphericalPosition += speed * Time.deltaTime; transform.position = sphericalPosition.ToCartesian(); }