Snippet DistanceBetweenXY, AngleBetweenXY, OffsetX-Y

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
This is just a small snippet made by me from converting the original natives.
Ofcourse, it is in Jass. :p

I just found it generally useful because it is quite frustating for every time search for the native and use the formula inside the native, so I made this snippet to make it easy for me, and now for everyone.

Enough of the stupid intro, lets take a look in the code!

*Below is the implementation instruction, it is not the real code!
JASS:
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------

//Implement
//Create a trigger name anything, delete everything inside it and copy this code inside.

//Usage
//It is the same as normal function calling, below is every detail of each function.

//Functions (This snippet contains of 4 functions)
//
//-------------------------------------------------------------------------------------------------------
//================================================================================
//== function DistanceBetweenXYl takes real x1, real y1, real x2, real y2 returns real ==
//================================================================================
//
//This function work the same way as the function "DistanceBetweenPoints".
//(function DistanceBetweenPoints takes location locA, location locB returns real)
//
//You can use it by just as same as calling DistanceBetweenPoints but replace the locations to real.
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//========================================================================
//== function OffsetX takes real x1, real dist, real angle returns real ==
//========================================================================
//========================================================================
//== function OffsetY takes real y1, real dist, real angle returns real ==
//========================================================================
//
//These 2 functions works the same way as the function "PolarProjectionBJ".  
//(function PolarProjectionBJ takes location source, real dist, real angle returns location)
//
//Since a function can't return 2 different value, I'll seperate to different functions.
//Unlike PolarProjectionBJ, you don't give the location as paremeter but each real to each function.
//
//Call "OffsetX" to find the polar offset of the location's X. 
//Call "OffsetY" for the polar offset of the location's Y.  
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//===============================================================================
//== function AngleBetweenXY takes real x1, real y1, real x2, real y2 returns real ==
//===============================================================================
//
//This function works the same way as the function "AngleBetweenPoints".
//(function AngleBetweenPoints takes location locA, location locB returns real)
//
//Since that function takes 2 location as paremeter, this function takes 4 reals as paremeter. (X and Y axis per location)
//
//It is so easy to use it by just call it and replace the paremeter to the location's x-axis and y-axis.
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------


*This is the real code!
JASS:

library RealXY

function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real
    return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
endfunction
    
function OffsetX takes real x1, real dist, real angle returns real
    return x1 + dist * Cos(angle * bj_DEGTORAD)
endfunction
    
function OffsetY takes real y1, real dist, real angle returns real
    return y1 + dist * Sin(angle * bj_DEGTORAD)
endfunction
    
function AngleBetweenXY takes real x1, real y1, real x2, real y2 returns real
    return bj_RADTODEG * (Atan2(y2 - y1, x2 - x1))
endfunction

endlibrary


Demo Map:
View attachment RealXY Demo Map.w3x

Feel free to criticize me, I know I am not the perfect one.
 
Reaction score
456
JASS:
function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real
    return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
endfunction
    
function OffsetX takes real x1, real dist, real angle returns real
    return x1 + dist * Cos(angle * bj_DEGTORAD)
endfunction
    
function OffsetY takes real y1, real dist, real angle returns real
    return y1 + dist * Sin(angle * bj_DEGTORAD)
endfunction
    
function AngleBetweenXY takes real x1, real y1, real x2, real y2 returns real
    return bj_RADTODEG * (Atan2(y2 - y1, x2 - x1))
endfunction


More likely like likely that likely like.

And those comments are pretty unneeded indeed. Just takes space.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>And those comments are pretty unneeded indeed. Just takes space.
Seperated.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>Degrees
noone uses that except GUIers..

Hmm...? I am using it.

What's the matter of using it? I do lack of knowledge on Maths and degree+offset is the limit of my current knowledge.

Return back to your words, what should I use instead??
 

PurgeandFire

zxcvmkgdfg
Reaction score
509
It is a good system but very easy. :p

No doubt, this will make better for inlining. Good thing this snippet is short. xD

Good job.
 

Cidzero

Imma firin mah lazer!!!1!1
Reaction score
39
I just use the formula because I don't mind taking the 5 seconds to write it out. So yea to an extent, meaning depending upon the person, some might use, some might use the original ways given by Blizzard, or some will just type out the formulas.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
If you are just using 1 or 2 times of it, it is doesn't matter if you write the formula out again, but if you use it alot and later on, you will just fed up on keep on writting the formula and changing those value.

It might easily cause confusion too.
 

Trollvottel

never aging title
Reaction score
262
hm nice idea but for me it is too hard to remember all the function names all the time so i prefer to write it myself. ^^
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>hm nice idea but for me it is too hard to remember all the function names all the time so i prefer to write it myself. ^^
Then add it into the natives list. xD

I doubt that you could remember all the natives. ;)
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>i have no idea what this is about
It is a snippet just like the GUI action. ("A" Position offset by 300 towards 40 degree)
 

Trollvottel

never aging title
Reaction score
262
>>hm nice idea but for me it is too hard to remember all the function names all the time so i prefer to write it myself. ^^
Then add it into the natives list. xD

I doubt that you could remember all the natives. ;)

i can only about 20% so all i need and its faster for me to write what i know (the given formulas) than to look for the right function.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>These are basically fluff functions.
Oh really?

Then I should be advised to deleted this whole thread?
 

Hatebreeder

So many apples
Reaction score
381
>>These are basically fluff functions.
Oh really?

Then I should be advised to deleted this whole thread?

Don't take everything too seriously o_O

But, May I advise you something?
- Since this Snipplet might Help GUI user who want to learn Jass, I suggest you make a test map, with a Spell or something, on how to use this, how this Works, and why it is better to use this, rather than using the GUI functions.
 
General chit-chat
Help Users
  • Monovertex Monovertex:
    How are you all? :D
    +1
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top