Sailing Ship - How to apply torque without lateral friction killing all velocity?

In sailing, there is a technique needed to sail against the wind called tacking. A ship can sail normally towards about 45 degrees from the wind, then it turns to the other side of the wind by the same amount. During the maneuver, the ship will have no propulsion force, so It’s speed must last until the maneuver is complete.

In my game, I rotate the ship by applying torque based on rudder’s position and on the ship’s velocity. However, with the high lateral friction, when I turn the ship, a fraction of longitudinal speed becomes lateral stopping my ship abruptly.

How can I make the full turn considering that dilema?

For a complete answer you would have to give us your model. By the sounds of it your ship does not have enough inertia to complete the tack. I will use the following simple model to try to help elucidate where issues will arise.

Ft = force applied to the boat by sail

Rl = Lateral Resistance (high)

Ra = Axial Resistance (Low)

I = Inertia

M = Moment (responsible for rotating the model)

rr = radius from ruder to center of mass

Ft is Dependant on the angle of attack, apparent velocity, air density, sail size etc.

Rl, Ra and I are dependent on time.

When Ft > Rl + Ra the ship accelerates, which increases I.

When Ft < Rl + Ra the ship decelerates decreasing I.

If Ft = 0 then Ft <= Rl + Ra thus when power is lost the ship should simply decelerate.

Before Turn

Fx: Ftx - Rlx - Rax = Ix

Fy: Fty - Rly - Ray = Iy

M: 0 = M

During Turn (moment applied at tail of boat)

Fx: Ftx + Frx - Rlx - Rax = Ix

Fy: Fty + Fry - Rly - Ray = Iy

M: Fr * rr = M

During Luff

Fx: Rlx - Rax = Ix

Fy: Rly - Ray = Iy

M: 0 = M

Model

The following is a very simple model. Before practical use, a function representing Ft should be implemented.

Make Ft simply dependent on the angle of attack(rather than estimating it based on apparent velocity, sail area etc).

For the purpose of this model Fr can be applied arbitrarily.

Ix = m * x''

Rlx = crl * x'

Rax = cra * x'

Mx = m * a''

where: crl and cra are your lateral and axial resistance consants and a is the angle of the boat.

Which results in:

Fx: Ftx(AA) + Frx - cra * x' - crl * x' = m * x''

Fy: Fty(AA) + Fry - cra * y' - crl * y' = m * y''

M: Fr * rr = m * a'' note: here I assume the rudder force is applied perpendicular to the primary axis.

note: The angle of attack (AA) is different than the angle of the boat (a)