Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeScript type declarations #30

Merged
merged 2 commits into from
Nov 5, 2024

Conversation

janne-slamcore
Copy link
Contributor

@janne-slamcore janne-slamcore commented Mar 28, 2024

Simple standalone type declarations.

Fixes #29

@janne-slamcore janne-slamcore changed the title TypeScript type definitions (Fix #29) TypeScript type declarations Mar 28, 2024
@nightgrey
Copy link

nightgrey commented May 6, 2024

Wish I saw this before I made my own, oops :D Not sure if it helps...

// Type definitions for nudged (https://github.com/axelpale/nudged)
// API docs: https://github.com/axelpale/nudged/blob/master/doc/API.md

declare module "nudged" {
  export interface Point {
    x: number;
    y: number;
  }

  export interface Transform {
    a: number;
    b: number;
    x: number;
    y: number;
  }

  export function estimate(parameters: EstimateParameters): Transform;

  export namespace estimators {
    function I(): Transform;
    function L(domain: Point[], range: Point[], angle: number): Transform;
    function X(domain: Point[], range: Point[]): Transform;
    function Y(domain: Point[], range: Point[]): Transform;
    function T(domain: Point[], range: Point[]): Transform;
    function S(domain: Point[], range: Point[], center: Point): Transform;
    function R(domain: Point[], range: Point[], center: Point): Transform;
    function TS(domain: Point[], range: Point[]): Transform;
    function TR(domain: Point[], range: Point[]): Transform;
    function SR(domain: Point[], range: Point[], center: Point): Transform;
    function TSR(domain: Point[], range: Point[]): Transform;
  }

  export namespace point {
    function almostEqual(p: Point, q: Point, tolerance?: number): boolean;
    function create(x: number, y: number): Point;
    function distance(p: Point, q: Point): number;
    function equal(p: Point, q: Point): boolean;
    function fromArray(arrp: [number, number]): Point;
    function offset(p: Point, dx: number, dy: number): Point;
    function polarOffset(p: Point, distance: number, angle: number): Point;
    function toArray(p: Point): [number, number];
    function transform(p: Point, tr: Transform): Point;
    function transformMany(points: Point[], tr: Transform): Point[];
    function validate(p: Point): boolean;
  }

  export namespace transform {
    const SINGULAR: Transform;
    const IDENTITY: Transform;
    const ROT45: Transform;
    const ROT90: Transform;
    const ROT180: Transform;
    const ROT270: Transform;
    const HALF: Transform;
    const X2: Transform;

    function almostEqual(
      tr: Transform,
      ts: Transform,
      tolerance?: number,
    ): boolean;
    function compose(tr: Transform, ts: Transform): Transform;
    function create(a: number, b: number, x: number, y: number): Transform;
    function equal(tr: Transform, ts: Transform): boolean;
    function fromArray(arrtr: [number, number, number, number]): Transform;
    function fromPolar(
      center: Point,
      scale: number,
      rotation: number,
    ): Transform;
    function fromRotation(center: Point, radians: number): Transform;
    function fromScale(center: Point, multiplier: number): Transform;
    function fromString(string: string): Transform;
    function fromTranslation(p: Point): Transform;
    function getRotation(tr: Transform): number;
    function getScale(tr: Transform): number;
    function getTranslation(tr: Transform): Point;
    function multiply(tr: Transform, ts: Transform): Transform;
    function inverse(tr: Transform): Transform;
    function rotateBy(tr: Transform, center: Point, radians: number): Transform;
    function rotateTo(tr: Transform, center: Point, radians: number): Transform;
    function scaleBy(
      tr: Transform,
      center: Point,
      multiplier: number,
    ): Transform;
    function scaleTo(tr: Transform, center: Point, scale: number): Transform;
    function toArray(tr: Transform): [number, number, number, number];
    function toMatrix(tr: Transform): {
      a: number;
      b: number;
      c: number;
      d: number;
      e: number;
      f: number;
    };
    function toString(tr: TrandomainTransform, point: Point): Transform;
    function validate(tr: Transform): boolean;
  }

  export namespace analysis {
    function mse(tr: Transform, domain: Point[], range: Point[]): number;
    function residuals(
      tr: Transform,
      domain: Point[],
      range: Point[],
    ): number[];
    function rss(tr: Transform, domain: Point[], range: Point[]): number;
  }

  export const tolerance: number;
  export const version: string;
}

@axelpale axelpale changed the base branch from master to release-2.1.0 November 5, 2024 13:31
@axelpale axelpale merged commit cdd746b into axelpale:release-2.1.0 Nov 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support for TypeScript
3 participants