How to rotate around an arbitrary point?

If you already know the distance and the rotation, you can do something like this:

This function will return the final location for the mesh. Also, you should set the mesh’s rotation to the same rotation used in this function.

1 Like

How can I rotate a mesh around an arbitrary point in space?

For example a moon rotating around a planet.

Thanks

1 Like

Perfect. Thanks!!

Would be possible to create a blueprint function that generates an ellipse movement around an arbitrary point in space. A function that we could input the center point position + the two ellipse focus points positions (that will define the ellipse shape). Is there a way to do it?

Here is my solution to it. It will rotate the object around the given Pivot using the objects own rotation. E.g. A delta rotation around Z will rotate around the objects Z axis. Optionally you can retain the rotation of the object itself.
You can write this as a function, for sure.

	UFUNCTION(BlueprintPure)
		static void RotateAroundPivot(const FTransform& Original, const FVector PivotLocation, const FRotator DeltaRotation, bool bRetainOrientation, FTransform& New)
	{
		FTransform PivotTransform = FTransform(Original.GetRotation(), PivotLocation);
		FTransform DeltaPivotToOriginal = Original * PivotTransform.Inverse();
		New = FTransform(DeltaRotation.GetInverse() * (float)bRetainOrientation, FVector(0,0,0)) * DeltaPivotToOriginal * FTransform(DeltaRotation, FVector(0,0,0)) * PivotTransform;
	}
5 Likes

This works regardless of the initial orientation as it doesn’t require the forward vector and has solved my issue of rotating a parent actor around a child actor. I’ve been struggling with this for hours. Thank you so much!