How to pull units to a line?

Reaction score
91
I have a spell that creates a long line and then picks units around it. How can I pull the units towards the center of the line? I already have the units picked around it (as well as the units' position, the starting point of the line and the ending one) but I have no idea how to do the maths and such...
Here's an image of what I'm trying to do:

Say, the red line is my line and the blue dots are the units.
2w3drpu.gif

And then I want to pull them to its center like this:
245eq20.gif


Suggestions?
 
Reaction score
91
> a moving area where you pick a group of units
I was thinking about that as well but it consumes too much performance...

I found the way though, if someone is interested, here it is:
JASS:

private function GetLineCenter takes real Ax, real Ay, real Bx, real By, real Cx, real Cy returns location
    local real r
    local real dx = Bx - Ax
    local real dy = By - Ay
    local real L = ((dx) * (dx) + (dy) * (dy)) 
    set r = ((Cx - Ax) * (dx) + (Cy - Ay) * (dy)) / (L) 
    set Ax = Ax + r * (dx)
    set Ay = Ay + r * (dy)
    return Location(Ax, Ay)
endfunction
 

_whelp

New Member
Reaction score
54
Wow, I'm surprised that it's that big! :eek: Maybe it's because I don't know much math.
What do you put on the arguments?
 

MaxTM

New Member
Reaction score
2
Thanks for sharing.

EDIT ~ I understand it, but what formula did you used to calculate it?
 
Reaction score
91
> What do you put on the arguments?
JASS:
takes real Ax, real Ay, real Bx, real By, real Cx, real Cy

Ax - starting X coordinate of the line
Ay - starting Y coordinate of the line
Bx - ending X coordinate of the line
By - ending Y coordnate of the line
Cx - X coordinate of a unit (mostly this unit will be previously detected around the line)
Cy - Y coordinate of a unit

243qbk4.gif
 

elmstfreddie

The Finglonger
Reaction score
203
Thanks for sharing.

EDIT ~ I understand it, but what formula did you used to calculate it?

didn't read it, but wouldn't it just be more logical to find the difference in their xs then add it to the unit's x to make it on the line?
Only if the line is always vertical though, I suppose.
 

Nexor

...
Reaction score
74
I thnik you have to calculate the distance and angle from the point to the line, and then move it by the calculated distance toward the angle.
 

Nexor

...
Reaction score
74
you asked for help, you made a solution. that's something you can be proud of (imho) I'd clean the code and make a snippet from it, if it would be my work.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top