Heya. This code is based on Tracer's 3ddotball.bb code that shipped with blitz3d. I'm trying to get a sphere of 2d stars to be rotated as if it was a 3d starfield. If you know what I mean. Here's the source. I just can't get it right.
I want to make it move as if each star were a sprite, and the camera was looking around.
Any help appreciated.
I want to make it move as if each star were a sprite, and the camera was looking around.
Any help appreciated.
; ***************************** ; * DEPTH COLORED 3D DOT BALL * ; ***************************** ; * CODING BY TRACER * ; Z location. ; Arrays used by 3d code. Dim star_points#(1500, 5) Graphics 512,384,32,2 SetBuffer BackBuffer() setup2dStarField() HidePointer ; Loop till esc is pressed. While Not KeyDown(1) mx#=(MouseXSpeed()*0.2) my#=(MouseYSpeed()*0.2) MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 update2DStarField(mx,my) ; Removes the mouse from fullscreen. Flip ; Flip the screen. Cls ; Clear the screen. Wend End Function setup2dStarField(dots_in_ball=1500) For t= 1 To dots_in_ball xd# = Rnd(-90.0,90.0) x0# = (Cos(xd) * 10.0) * (Cos(t) * 10.0) y0# = (Cos(xd) * 10.0) * (Sin(t) * 10.0) z0# = Sin(xd) * 100.0 star_points(t,1) = x0 star_points(t,2) = y0 star_points(t,3) = z0 star_points(t,4)=Rnd(10,150) Next star_points(0,0)=100 End Function Function update2DStarField(x#,y#,dots_in_ball=1500) star_points(0,1)=star_points(0,1)+y star_points(0,2)=star_points(0,2) star_points(0,3)=star_points(0,3)+x gw=GraphicsWidth() gh=GraphicsHeight() distance#=star_points(0,0) vx#=star_points(0,1) vy#=star_points(0,2) vz#=star_points(0,3) For n = 1 To dots_in_ball x3d# = star_points(n, 1) y3d# = star_points(n, 2) z3d# = star_points(n, 3) ty# = ((y3d * Cos(vx#)) - (z3d * Sin(vx#))) tz# = ((y3d * Sin(vx#)) + (z3d * Cos(vx#))) tx# = ((x3d * Cos(vy#)) - (tz# * Sin(vy#))) tz# = ((x3d * Sin(vy#)) + (tz# * Cos(vy#))) ox# = tx# tx# = ((tx# * Cos(vz#)) - (ty# * Sin(vz#))) ty# = ((ox# * Sin(vz#)) + (ty# * Cos(vz#))) nx# = Int(gw * (tx#) / (distance - (tz#))) + gh ny# = Int(gh - (gw* ty#) / (distance - (tz#))) Color star_points(n, 4),star_points(n, 4),star_points(n, 4) Rect nx,ny,1,1 Next End Function