FERRETGame engine over Babylon.js
Ferret

Rotors and blades

Skill ferret-physics-rotors · download all skills · SKILL.md

When to use#

A windmill on a hill, a wheel in a mill race, an overshot wheel under a flume, a propeller on a boat, an oar that sweeps through the water.

The model#

A rotor is N elements around an axis summed into one torque (and a force) per step, with no body per element. It reads the medium at the rotor (density and flow, which include the flow field), so weather and currents drive it. A rotor turns a drivetrain shaft (a torque source: load, gears and housing reaction follow) and/or pushes a node body (thrust, weight, reaction).

Steps#

  1. Enable media and rotors; add a FlowService for wind and currents; give the capability the drivetrain with useDrivetrain for shaft rotors.
  2. Add the rotor to the level's physics.rotors or with edit.physics.rotor.set { name, node|shaft, axis, radius, elements }.
  3. Pick the element: blade (pitch, polar), paddle (area, depth), bucket (capacity, fill, empty).
  4. Read rotor.state; turn the blades with rotor.pitch, open the sluice with rotor.command.
  5. An oar is an actuator of kind blade with a stroke.

Check afterwards#

Power is under the Betz limit (cp); a wheel never turns faster than the water that drives it; an overshot wheel's torque is the weight of its full buckets times the lever.

What usually goes wrong#

  • Nothing turns: the rotor has no shaft or node, media is off, or the point is out of the water (paddles only count when the medium there is dense).
  • A windmill stalls near rest: a fixed-pitch rotor has a dip in its torque at low speed; give it a push or a smaller pitch, or less bearing friction.
  • A kind blade actuator is refused: @ferret/physics-rotor was not loaded.
  • A body rotor spins its body the wrong way: axis is in the body's frame, and a positive turn is right-handed about it.

Files#

  • reference/rotors.md — N blades, paddles or buckets around an axis that turn the local wind or water, or the weight of water, into a torque on a body or a drivetrain shaft; and the blade actuator, a plate swept through a medium.
  • reference/flow.md — Wind, fronts, vortices, jets, shelters and channels that add up to one field of moving air and water, a pure function of position and time that bodies, vessels, the character and the render can all read.
  • reference/api-physics-rotor.md — every export of @ferret/physics-rotor with signature and doc comment
  • reference/api-flow.md — every export of @ferret/flow with signature and doc comment
  • reference/api-physics-media.md — every export of @ferret/physics-media with signature and doc comment
  • reference/commands.md — 22 commands of these packages with their arguments