Trawler
The vessel profile's outline for a trawler, and the vessels it draws.
On this page
Code
import { TRAWLER, VesselProfile, type VesselOutline } from "@bosunkit/components/vessel-profile";
import type { ReactElement } from "react";
export const description: string =
"The trawler outline as traced at 12.5 m, dimensioned in meters read from the points marked on it.";
const outline: VesselOutline = TRAWLER;
/** Drawing units to the meter: the length overall, from the transom to the bow's tip, is the reference length. */
const perMeter: number = (outline.hooks.bowTip - outline.hooks.transom) / outline.referenceLength;
/** A distance on the drawing, in meters. */
function meters(units: number): string {
return `${(units / perMeter).toFixed(2)} m`;
}
export default function Drawn(): ReactElement {
const { hooks }: VesselOutline = outline;
return (
<VesselProfile
outline={outline}
dimensions={{
lengthOverall: meters(hooks.bowTip - hooks.transom),
waterlineLength: meters(hooks.waterlineForward - hooks.waterlineAft),
draft: meters(hooks.keelFoot - hooks.waterline),
freeboard: meters(hooks.waterline - hooks.deckAtBow),
}}
/>
);
}
The trawler outline is traced from Nordhavn's own drawing of the Nordhavn 41, a displacement trawler of 12.5 m: a high bow with its sheer sweeping down aft, a pilothouse with its raked windows and door, the saloon with its windows and portholes, the boat deck reaching aft over the open cockpit on its post, and below the antifouling line the full keel running aft to its deepest point at the rudder, the propeller in its aperture and the rudder. The dinghy and its davit, the mast with its radar, the rails, the anchor and the flags are left out. With the transom immersed, a shorter waterline comes off the bow, so a trawler whose length overall counts a swim platform the N41 lacks shows it as a longer bow overhang.
The outline is traced at 12.5 m and listed in VESSEL_OUTLINES as trawler; the kit exports it as TRAWLER. The
vessel catalog's trawlers and expedition yachts take this outline. Given a vessel's proportions, the
vessel profile stretches it to her length overall, waterline length, freeboard and
draft; a particular not given follows the length overall in the outline's proportion.
Examples
Vessels from this outline
Code
import { TRAWLER, VesselProfile } from "@bosunkit/components/vessel-profile";
import type { ReactElement } from "react";
export const description: string =
"The Nordhavn 41, Linssen Grand Sturdy 40.0 AC and Fleming 55, each drawn from the trawler outline at her own " +
"particulars and to one scale.";
interface Vessel {
/** The vessel, as the catalog names her. */
readonly name: string;
/** Length overall, meters. */
readonly loa: number;
/** Length at the waterline, meters, where the catalog has it. */
readonly lwl?: number;
/** Draft, meters. */
readonly draft: number;
/** Freeboard at the bow, meters, where the catalog has it. */
readonly freeboard?: number;
}
/** Particulars from the vessel catalog. */
const VESSELS: readonly Vessel[] = [
{ name: "Nordhavn 41", loa: 12.5, lwl: 12.19, draft: 1.37 },
{ name: "Linssen Grand Sturdy 40.0 AC", loa: 12.85, lwl: 10.8, draft: 1.22 },
{ name: "Fleming 55", loa: 18.5, lwl: 15.5, draft: 1.52 },
];
export default function Vessels(): ReactElement {
return (
<div style={{ display: "grid", gap: "var(--space-md)" }}>
{VESSELS.map(
({ name, loa, lwl, draft, freeboard }: Vessel): ReactElement => (
<figure key={name} style={{ margin: 0 }}>
<VesselProfile
outline={TRAWLER}
proportions={{ lengthOverall: loa, waterlineLength: lwl, draft, freeboard }}
frameLength={18.5}
dimensions={{
lengthOverall: `${loa.toFixed(2)} m`,
waterlineLength: lwl === undefined ? undefined : `${lwl.toFixed(2)} m`,
draft: `${draft.toFixed(2)} m`,
}}
/>
<figcaption style={{ marginTop: "var(--space-xs)", color: "var(--text-dim)", fontSize: "0.85em" }}>
{name}
</figcaption>
</figure>
),
)}
</div>
);
}
Related
- Vessel profile: the component, its props, and the outline for each hull shape.