Check out LitDev's November gold medal winner for the Small Basic Guru contest:
This is also LitDev's first gold medal! So congrats go to LitDev!
Here is an excerpt section from the article...
===============
Advanced Collisions
To get sprites to bounce off each other realistically can be complicated. Basically we need to do the collision in a center of mass reference frame using geometry like the figure below, then convert from the center of mass frame back to the actual frame.
This is an example implementation of this in Small Basic.
Sub
CollisionCheck
For
i
=
1
To
Ball_Number
-
1
For
j
=
i
+
1
To
Ball_Number
dx
=
Ball_X
[
i
]
-
Ball_X
[
j
]
dy
=
Ball_Y
[
i
]
-
Ball_Y
[
j
]
Distance
=
Math
.
SquareRoot
(
dx
*
dx
+
dy
*
dy
)
If
Distance
<
Ball_Diameter
Then
Cx
=
(
Ball_vX
[
i
]
+
ball_vX
[
j
]
)
/
2
Cy
=
(
Ball_vY
[
i
]
+
ball_vY
[
j
]
)
/
2
Relative_vX
[
i
]
=
Ball_vX
[
i
]
-
Cx
Relative_vY
[
i
]
=
Ball_vY
[
i
]
-
Cy
Relative_vX
[
j
]
=
Ball_vX
[
j
]
-
Cx
Relative_vY
[
j
]
=
Ball_vY
[
j
]
-
Cy
Nx
=
dx
/
Distance
Ny
=
dy
/
Distance
L
[
i
]
=
Nx
*
Relative_vX
[
i
]
+
Ny
*
Relative_vY
[
i
]
L
[
j
]
=
Nx
*
Relative_vX
[
j
]
+
Ny
*
Relative_vY
[
j
]
Relative_vX
[
i
]
=
Relative_vX
[
i
]
-
(
2
*
L
[
i
]
*
Nx
)
Relative_vY
[
i
]
=
Relative_vY
[
i
]
-
(
2
*
L
[
i
]
*
Ny
)
Relative_vX
[
j
]
=
Relative_vX
[
j
]
-
(
2
*
L
[
j
]
*
Nx
)
Relative_vY
[
j
]
=
Relative_vY
[
j
]
-
(
2
*
L
[
j
]
*
Ny
)
Ball_vX
[
i
]
=
(
Relative_vX
[
i
]
+
Cx
)
Ball_vY
[
i
]
=
(
Relative_vY
[
i
]
+
Cy
)
Ball_vX
[
j
]
=
(
Relative_vX
[
j
]
+
Cx
)
Ball_vY
[
j
]
=
(
Relative_vY
[
j
]
+
Cy
)
Ball_X
[
i
]
=
Ball_X
[
i
]
+
Nx
*
(
Ball_Diameter
-
Distance
)
Ball_Y
[
i
]
=
Ball_Y
[
i
]
+
Ny
*
(
Ball_Diameter
-
Distance
)
Ball_X
[
j
]
=
Ball_X
[
j
]
-
Nx
*
(
Ball_Diameter
-
Distance
)
Ball_Y
[
j
]
=
Ball_Y
[
j
]
-
Ny
*
(
Ball_Diameter
-
Distance
)
EndIf
EndFor
EndFor
EndSub
If this is not clear then perhaps avoid this or consider trying using a physics engine to do it for you, such as the LDPhysics (Box2D) method.
===============
Here are all the winning Small Basic articles from November:
Small Basic Technical Guru - November 2013 |
| litdev | Dynamic Graphics | Ed Price: "Incredibly detailed. A fantastic resource to keep coming back to! From the comments: "Wanted to say WOW - this is great!" and "Awesome. Thanks"" |
| Nonki Takahashi | How to Make a Check Box | Ed Price: "Well formatted and in-depth how-to article! Great job!" |
| Joe Dwyer | Why Small Basic is a great programming language for beginners | Ed Price: "A well-articulated value statement for Small Basic! Thanks, Joe!" |
Congratulations to litdev, Nonki and Joe!
Also worth a mention were the other entries this month:
- How to Remove Goto Statements by Nonki Takahashi
Ed Price: "Great method for structured programming!"
You can find all the Guru winners (for all the Microsoft technologies) here: TechNet Guru Awards - November 2013
Thanks again to LitDev!
- Ninja Ed