### Godot version

v4.1.2.stable.official [399c9dc39]

### System information

Godot v4.1.2.stable - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1070 Ti (NVIDIA; 31.0.15.4584) - AMD Ryzen 5 1500X Quad-Core Processor (8 Threads)

### Issue description

Also tested on Godot v4.2.beta4.official [93cdacbb0], where this behaves the same.

Tangential acceleration should apply force perpendicular to the particle's current velocity (or perpendicular to the direction to the emitter center, in the case of `GPUParticles2D`; documentation issue?), but this does not happen.

https://github.com/godotengine/godot/assets/46876531/4131ff9e-cb68-4e1b-8d5d-51270b470bfd

I quickly scribbled together a chart to help identify the exact problem.

![Screenshot 2023-11-06 194735](https://github.com/godotengine/godot/assets/46876531/d3d9912d-cd30-4dd9-a0a7-711b6509ffb5)

The green, closer arrows represent the expected applied force; the yellow, further arrows represent the actual applied force.

My understanding is that the angle used to calculate the force is being applied backwards, causing the actual force to be horizontally mirrored from what is expected. You can also see that the applied force rotates counter to the expected force, when rotating around the circle.

`GPUParticles2D`, on the other hand, do not exhibit this behavior. Using the "Convert to CPUParticles2D" option is an easy way to compare the expected behavior to the actual behavior.

### Steps to reproduce

1. Create a `CPUParticles2D` node.
   - To make the effect more noticeable, I recommend disabling gravity and either setting an emission shape or the initial velocity.
3. Set tangential accel to a non-zero value.
4. Observe as the force applied is not perpendicular to the particle's current velocity/direction to the center, except when moving right or left (or up or down, although in the wrong direction).

### Minimal reproduction project

[issue.zip](https://github.com/godotengine/godot/files/13271511/issue.zip)
return emission_normals;
}
Vector<Color> CPUParticles2D::get_emission_colors() const {
	return emission_colors;
}
CPUParticles2D::EmissionShape CPUParticles2D::get_emission_shape() const {
	return emission_shape;
}
void CPUParticles2D::set_gravity(const Vector2 &p_gravity) {
	gravity = p_gravity;
}
Vector2 CPUParticles2D::get_gravity() const {
	return gravity;
}
void CPUParticles2D::set_scale_curve_x(Ref<Curve> p_scale_curve) {
	scale_curve_x = p_scale_curve;
}
void CPUParticles2D::set_scale_curve_y(Ref<Curve> p_scale_curve) {
	scale_curve_y = p_scale_curve;
}
void CPUParticles2D::set_split_scale(bool p_split_scale) {
	split_scale = p_split_scale;
	notify_property_list_changed();
}
Ref<Curve> CPUParticles2D::get_scale_curve_x() const {
	return scale_curve_x;
}
Ref<Curve> CPUParticles2D::get_scale_curve_y() const {