Skip to content
design
Components

Cruising monohull

The vessel profile's outline for a cruising monohull, and the vessels it draws.

On this page
WLLWL 12.39 mLOA 13.39 mDraft 2.12 mFreeboard 1.46 m
The cruising monohull outline as traced, dimensioned in meters read from its marked points.
Code
import { CRUISING_MONOHULL, VesselProfile, type VesselOutline } from "@bosunkit/components/vessel-profile";
import type { ReactElement } from "react";

export const description: string =
  "The cruising monohull outline as traced at 13.39 m, dimensioned in meters read from the points marked on it.";

const outline: VesselOutline = CRUISING_MONOHULL;

/** 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 cruising monohull outline is traced from YACHT magazine's side elevation of the Jeanneau Sun Odyssey 440, a production cruising yacht of 13.39 m: a sheer rising gently to a stem with its bow roller, a raked transom, three hull windows, a coachroof with its window band, and below the antifouling line the canoe body, the fin keel with its bulb, the spade rudder, and the shaft with its strut and propeller. The rig, the rails, the flag and the anchor are left out. A shorter waterline comes off both ends in the drawing's own split of its overhangs.

The outline is traced at 13.39 m and listed in VESSEL_OUTLINES as cruising-monohull; the kit exports it as CRUISING_MONOHULL. Every sailboat in the vessel catalog, about 130 models, takes this outline unless her range has its own. 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

WLLWL 10.27 mLOA 11.90 mDraft 2.05 m
Bavaria C38
WLLWL 12.00 mLOA 13.39 mDraft 2.30 m
Jeanneau Sun Odyssey 440
WLLWL 14.80 mLOA 16.30 mDraft 2.40 m
Hallberg-Rassy 50
The Bavaria C38, Jeanneau Sun Odyssey 440 and Hallberg-Rassy 50, each drawn from the cruising monohull outline at her own particulars and to one scale.
Code
import { CRUISING_MONOHULL, VesselProfile } from "@bosunkit/components/vessel-profile";
import type { ReactElement } from "react";

export const description: string =
  "The Bavaria C38, Jeanneau Sun Odyssey 440 and Hallberg-Rassy 50, each drawn from the cruising monohull 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: "Bavaria C38", loa: 11.9, lwl: 10.27, draft: 2.05 },
  { name: "Jeanneau Sun Odyssey 440", loa: 13.39, lwl: 12.0, draft: 2.3 },
  { name: "Hallberg-Rassy 50", loa: 16.3, lwl: 14.8, draft: 2.4 },
];

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={CRUISING_MONOHULL}
              proportions={{ lengthOverall: loa, waterlineLength: lwl, draft, freeboard }}
              frameLength={16.3}
              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>
  );
}
  • Vessel profile: the component, its props, and the outline for each hull shape.