Well I myself am not too good at math. Most that I use is learned from middleschool. For the difficult math I've asked around and grabbed systems that did it for me.
Your two biggest friends will be this:
AngleBetweenPoints/Atan2. This one lets you find out the angle between two things by their location or by getting their X coordinate and Y coordinate. AngleBetween takes locations in order of A(The Source) and B(The Target), Atan2 takes X and Y but in order of B and A.
JASS:
AngleBetweenPoints(GetUnitLoc(A), GetUnitLoc(B))
vs
Atan2(GetUnitY(B) - GetUnitY(A), GetUnitX(B) - GetUnitX(A))
They also return different numbers. Atan2 returns Radians, which can be converted to Degrees with bj_DEGTORAD. AngleBetween returns Degrees, which can be converted to Radians with bj_RADTODEG. Different functions and systems require Radians or Degrees. Don't worry about knowing Radians, since you can always convert. Like if you want a 90 degree angle in radians just do 90*bj_DEGTORAD.
What's important is to know which function takes what.
Now that's the basis of learning. Understand where something is pointing in 360 degrees, which at this point you should in your education.
Great! You now know how to point things at where they need to go. Now how do you get them there? PolarProjection.
Polar Projection takes where the object starts, how far it will move, and at what angle. It takes angle in degrees. So lets say you want to move a Unit, A, 90 units at 45 degrees of where it's standing, which'd be at a nice even slant. PolarProjection(GetUnitLocation(A), 90, 45). That will return the point that the unit is moving to. Set it to a variable then SetUnitPositionLocation(A, TheVariable).
But lets say we want to move something towards a target point picked by a spell. Well, just find the Angle with AngleBetweenPoints(GetUnitLocation(A), GetSpellTargetLocation()). Then set that to a variable and plug it into PolarProjection. Easy as pie.
Polar Projection can also be determined in X and Y. Just remember angle must be converted to radians for this:
x = HowFar*Cos(angle*bj_DEGTORAD)
y = HowFar*Sin(angle*bj_DEGTORAD)
That gives the X and Y that Polar Projection would return as a location.
Knowing this, you can move units and special effects where you want them. Just determine the units moved by the grid on the WorldEdit minimap.
I used this to make frogs appear randomly in the vicinity of the caster which explode on death.
JASS:
local real ang = GetRandomReal(0,360)*bj_DEGTORAD
set x = GetUnitX(A)+GetRandomReal(50,400)*Cos(ang)
set y = GetUnitY(A)+GetRandomReal(50,400)*Sin(ang)
and I used this to move my hero in a rush towards his targeted point.
JASS:
local real angle = Atan2(GetSpellTargetY() - GetUnitY(A), GetSpellTargetX() - GetUnitX(A))
local real x = GetUnitX(A) + 20 * Cos(angle)
local real y = GetUnitY(A) + 20 * Sin(angle)
It's in a timer that goes off every 0.034 seconds, the recommended amount for moving graphics or units.
Now the final operation that will help you is finding the distance between two points. DistanceBetweenPoints() It takes two locations and gives you the distance between those two points. Great to know how close you are to a targeted point. Also great to know how long it'd take to get to the point a certain speed, but i've forgotten that formula.
In JASS:
JASS:
SquareRoot((GetUnitX(A)-GetSpellTargetX()) * (GetUnitX(A)-GetSpellTargetX()) + (GetUnitY(A)-GetSpellTargetY()) * (GetUnitY(A)-GetSpellTargetY()))
or
local real dx = GetUnitX(A) - GetSpellTargetX()
local real dy = GetUnitY(A) - GetSpellTargetY()
local real dist = SquareRoot(dx*dx+dy*dy)
Knowing how these three functions operate and what they can do will help you tremendously on making your own special effects, slide systems, movement systems, etc.
For your nova, well you'd want to send something out from your hero or cause an AoE damage around your hero. Best example: Increase your angle by how many things you want to send out/explosions you want to cause.
Lets say angle1 would be 30, 2 would be 60, etc. so 360/30 = 12. Create a loop that takes i*30 and exitwhen i < 12.