A simple 2D position/vector container.

• `h2d.col.IPoint`

### `@:value({ y : 0., x : 0. })inlinenew(x:Float = 0., y:Float = 0.)`

Create a new Point instance.

Parameters:

`x` The horizontal position of the point. The vertical position of the point.

### `x:Float`

The horizontal position of the point.

### `y:Float`

The vertical position of the point.

### `inlineadd(p:Point):Point`

Adds Point `p` to this Point and returns new Point with the result.

### `inlineclone():Point`

Returns a copy of this Point.

### `inlinecross(p:Point):Float`

Returns a cross product between this Point and a given Point `p`.

### `inlinedistance(p:Point):Float`

Returns a distance between this Point and given Point `p`.

### `inlinedistanceSq(p:Point):Float`

Returns squared distance between this Point and given Point `p`.

### `inlinedot(p:Point):Float`

Returns a dot product between this Point and given Point `p`.

### `inlineequals(other:Point):Bool`

Tests if this Point position equals to `other` Point position.

### `inlinelength():Float`

Returns length (distance to `0,0`) of this Point.

### `inlinelengthSq():Float`

Returns squared length of this Point.

### `inlinelerp(a:Point, b:Point, k:Float):Void`

Sets this Point position to a result of linear interpolation between Points `p1` and `p2` at the interpolant position `k`.

### `inlineload(p:Point):Void`

Copies `x,y` from given Point `p` to this Point.

### `inlinemultiply(v:Float):Point`

Returns a new Point with the position of this Point multiplied by a given scalar `v`.

### `inlinenormalize():Void`

Normalizes the Point.

### `inlinenormalized():Point`

Returns a new Point with the normalized values of this Point.

### `inlinerotate(angle:Float):Void`

Rotates this Point around `0,0` by a given `angle`.

### `inlinescale(f:Float):Void`

Multiplies `x,y` by scalar `f`.

### `@:value({ y : 0., x : 0. })inlineset(x:Float = 0., y:Float = 0.):Void`

Sets the Point `x,y` with given values.

### `inlinesub(p:Point):Point`

Substracts Point `p` from this Point and returns new Point with the result.

### `@:value({ scale : 1. })inlinetoIPoint(scale:Float = 1.):IPoint`

Converts this point to integer point scaled by provided scalar `scale` (rounded).

### `inlinetransform(m:Matrix):Void`

Applies a given Matrix `m` transformation to this Point position.

### `inlinetransform2x2(m:Matrix):Void`

Applies a given 2x2 Matrix `m` transformation to this Point position.

### `inlinetransformed(m:Matrix):Point`

Returns a new Point with a result of applying a Matrix `m` to this Point position.

### `inlinetransformed2x2(m:Matrix):Point`

Returns a new Point with a result of applying a 2x2 Matrix `m` to this Point position.