STARS.gd 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. extends Spatial
  2. var StarScene = preload("res://Star.tscn")
  3. onready var MAIN = find_parent("MAIN")
  4. var radius = 3000
  5. var n =10000
  6. var star_scale = 0.1
  7. var norm = Vector3(0,0,1)
  8. # Called when the node enters the scene tree for the first time.
  9. func _ready():
  10. randomize()
  11. generate_stars()
  12. pass # Replace with function body.
  13. func _process(_delta):
  14. var gamma = sqrt(1/(1-(MAIN.beta.length_squared())))
  15. print(gamma)
  16. transform.basis = make_basis(gamma, norm).inverse()
  17. pass
  18. func make_basis(gamma,norm):
  19. var gmo = gamma - 1
  20. var unit_bas = Basis(Vector3(0,0,0))
  21. var n = norm*sqrt(gmo)
  22. var bas = n.outer(n)
  23. bas=basis_add(bas, unit_bas)
  24. return bas
  25. func basis_add(b1,b2):
  26. var ret = Basis()
  27. ret.x = b1.x+b2.x
  28. ret.y = b1.y+b2.y
  29. ret.z = b1.z+b2.z
  30. return ret
  31. func generate_stars():
  32. for _i in range(n):
  33. # var r = rand_range(0,radius)
  34. # var theta = rand_range(-PI/2.0,PI/2.0)
  35. # var phi = rand_range(0,2*PI)
  36. var star = StarScene.instance()
  37. # star.translation.x = r*cos(theta)*sin(phi)
  38. # star.translation.z = r*cos(theta)*cos(phi)
  39. # star.translation.y = r*sin(theta)
  40. star.translation.x = rand_range(0,500) - 500/2
  41. star.translation.y = rand_range(0,500) - 500/2
  42. star.translation.z = rand_range(0,radius) - radius/2
  43. star.scale = Vector3(1,1,1)*star_scale
  44. add_child(star)