X,Y,Z Offset?

wingdnosring

New Member
Reaction score
16
Hey guys, simple enough math question here. If I have an initial x, y, z point, how do I find the x, y, z coordinates of a point c distance away?

Also, how would I implement this into the trigger editor? For a XY scenario, I could just use (point offset by distance towards angle), but the three dimension support is surprisingly poor in the galaxy editor.

Any information would be helpful.

If it helps, I already created a function within the editor for determining the distance between two three dimensional points.
 

The Undaddy

Creating with the power of rage
Reaction score
55
Try this

Trigger:
  • XYZ Offset
    • Options: Function
    • Return Type: (None)
    • Parameters
      • fromX = 0.0 <Real>
      • fromY = 0.0 <Real>
      • fromZ = 0.0 <Real>
      • d = 0.0 <Real>
      • h = 0.0 <Real>
      • XYangle = 0.0 <Real>
    • Grammar Text: XYZ Offset(fromX, fromY, fromZ, d, h, XYangle)
    • Hint Text: (None)
    • Custom Script Code
    • Local Variables
      • XY = No Point <Point>
      • RealXYdistance = 0.0 <Real>
      • X = 0.0 <Real>
      • Y = 0.0 <Real>
      • Z = 0.0 <Real>
    • Actions
      • General - If (Conditions) then do (Actions) else do (Actions)
        • If
          • h <= d
        • Then
          • Variable - Set RealXYdistance = (Square root(((d * d) - (h * h))))
          • Variable - Set XY = ((Point(fromX, fromY)) offset by RealXYdistance towards XYangle degrees)
          • Variable - Set X = (X of XY)
          • Variable - Set Y = (Y of XY)
          • Variable - Set Z = (fromZ + h)
        • Else


Just give it initial XYZ [fromX, fromY, fromZ] , how higher (or lower) you want the point to go [h], what distance [d], and to what angle on the XY plane [XYangle].

I have a problem with over clarifying things, but better safe than sorry :p
It should work but it's untested, so here's the sketch for (what I think is) the solution anyway.



EDIT: Optionally, if you want, I can make one which instead of height takes a second angle.
 

wingdnosring

New Member
Reaction score
16
Ah thanks guys. I actually solved it myself through a LONG time of experimentation. However, here's what I'm trying to do. My initial intention was to detect where a unit is hit by a passing projectile and create an actor to show where the 'impact' occurred on the character model. It works perfectly, but I've hit a small snag.

Here's my function. [Edit]: Your suggestion seemed simpler and easier on the computer's processor and RAM, so this is what I'm using now:
Code:
Point With XYZ Polar Offset
    Options: Function
    Return Type: Point
    Parameters
        Point = No Point <Point>
        Offset = 0.0 <Real>
        XY Angle = 0.0 <Real>
        Z Angle = 0.0 <Real>
    Grammar Text: (Point) offset by (Offset) at XY angle (XY Angle) and Z angle (Z Angle)
    Hint Text: (None)
    Custom Script Code
    Local Variables
        End X = 0.0 <Real>
        End Y = 0.0 <Real>
        End Z = 0.0 <Real>
    Actions
        Variable - Set End X = ((X of Point) + (Offset * ((Cos(XY Angle)) * (Cos(Z Angle)))))
        Variable - Set End Y = ((Y of Point) + (Offset * ((Sin(XY Angle)) * (Cos(Z Angle)))))
        Variable - Set End Z = ((Height of Point) + (Offset * (Sin(Z Angle))))
        General - Return (Point(End X, End Y, End Z))

Here's how I calculate the Z axis angle (pitch):

Code:
Angle Between Points on Z Axis
    Options: Function
    Return Type: Real
    Parameters
        Point1 = (Position of (Triggering unit)) <Point>
        Point2 = (Position of (Triggering unit)) <Point>
    Grammar Text: Angle Between (Point1) and (Point2)
    Hint Text: (None)
    Custom Script Code
    Local Variables
        Pitch = 0.0 <Real[1]>
    Actions
        Variable - Set Pitch[0] = (Distance between Point1 and Point2)
        Variable - Set Pitch[1] = ((Height of Point1) - (Height of Point2))
        General - Return (Atan((Pitch[1] / Pitch[0])))

There's a problem that occurs somewhere in the Offset trigger, because every single effect is being displayed near the centre of the sphere. Basically, the trigger is returning 0 values for X and Y (or just much lower values than it should have). Why would that be?

Both my old, more complex, homemade version and this simpler one Sgqvur referred me to have the same problem.

[Edit]: GAH nvm thanks guys. I was looking at the third post on that page you referred me to, not the second. The second works flawlessly...should have known better than to think Aceheart was wrong.
 
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