Skip to content

Midpoint ​

The point halfway between two values.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageMidpoint!
Midpoint(a, b)The point halfway between two values.
Typed signatures
TypePackageApplies
(any, any) -> unknownstructuresalways

Domain: Structures

Details
  • The AffineMidpoint protocol's member: numbers, complex numbers, and lists componentwise, so vectors, matrices and Points have midpoints too. Two lists of different shapes have none.
  • Round uses it through MidpointOrder (ticks plus midpoints), comparing a value against the midpoint between the ticks either side of it.
  • Mathlib's midpoint, defined on an affine space over a ring where 2 is invertible, and Wolfram's Midpoint of the segment between a and b. The protocols themselves are our extension: Mathlib has no class for either.

Examples

Basic #

Between two numbers

live ↗
InMidpoint(1,2)\mathrm{Midpoint}(1, 2)Out32\frac{3}{2}

Between two points given by their coordinates, componentwise

live ↗
InMidpoint([1,1],[2,3])\mathrm{Midpoint}(\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack2, 3\bigr\rbrack)Out[32,2]\bigl\lbrack\frac{3}{2}, 2\bigr\rbrack

In any dimension

live ↗
InMidpoint([1,2,3],[4,5,6])\mathrm{Midpoint}(\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack)Out[52,72,92]\bigl\lbrack\frac{5}{2}, \frac{7}{2}, \frac{9}{2}\bigr\rbrack

A Point keeps its head

live ↗
InMidpoint(Point([1,1]),Point([2,3]))\mathrm{Midpoint}(\mathrm{Point}(\bigl\lbrack1, 1\bigr\rbrack), \mathrm{Point}(\bigl\lbrack2, 3\bigr\rbrack))OutPoint([32,2])\mathrm{Point}(\bigl\lbrack\frac{3}{2}, 2\bigr\rbrack)
Scope #

Midpoint of two points, exact: a half stays rational

live ↗
InMidpoint([1,1],[3,4])\mathrm{Midpoint}(\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack)Out[2,52]\bigl\lbrack2, \frac{5}{2}\bigr\rbrack

Works in any dimension, coordinate by coordinate

live ↗
InMidpoint([1,2,−1,3],[4,2,−3,−2])\mathrm{Midpoint}(\bigl\lbrack1, 2, -1, 3\bigr\rbrack, \bigl\lbrack4, 2, -3, -2\bigr\rbrack)Out[52,2,−2,12]\bigl\lbrack\frac{5}{2}, 2, -2, \frac{1}{2}\bigr\rbrack

Point wrappers are kept on the result

live ↗
InMidpoint(Point([1,2]),Point([−2,3]))\mathrm{Midpoint}(\mathrm{Point}(\bigl\lbrack1, 2\bigr\rbrack), \mathrm{Point}(\bigl\lbrack-2, 3\bigr\rbrack))OutPoint([−12,52])\mathrm{Point}(\bigl\lbrack-\frac{1}{2}, \frac{5}{2}\bigr\rbrack)
live ↗
InMidpoint([a,b],[c,d])\mathrm{Midpoint}(\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d\bigr\rbrack)Out[Midpoint(a,c),Midpoint(b,d)]\bigl\lbrack\mathrm{Midpoint}(a, c), \mathrm{Midpoint}(b, d)\bigr\rbrack
Properties #

Entry by entry, since a matrix is a list of vectors

live ↗
InMidpoint([[1,1],[0,2]],[[3,3],[4,0]])\mathrm{Midpoint}(\bigl\lbrack\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack0, 2\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack3, 3\bigr\rbrack, \bigl\lbrack4, 0\bigr\rbrack\bigr\rbrack)Out[[2,2],[2,1]]\bigl\lbrack\bigl\lbrack2, 2\bigr\rbrack, \bigl\lbrack2, 1\bigr\rbrack\bigr\rbrack

In the complex plane

live ↗
InMidpoint(1+2i,3)\mathrm{Midpoint}(1+2i, 3)Out2+i2+i

Averaging each coordinate: (1−3)/2(1-3)/2 and (2+5)/2(2+5)/2

live ↗
InMidpoint([1,2],[−3,5])\mathrm{Midpoint}(\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack-3, 5\bigr\rbrack)Out[−1,72]\bigl\lbrack-1, \frac{7}{2}\bigr\rbrack

From the origin, the midpoint is half the other point

live ↗
InMidpoint([0,0],[1,3])\mathrm{Midpoint}(\bigl\lbrack0, 0\bigr\rbrack, \bigl\lbrack1, 3\bigr\rbrack)Out[12,32]\bigl\lbrack\frac{1}{2}, \frac{3}{2}\bigr\rbrack
Possible issues #

Integer coordinates come out integer when the sums are even

live ↗
InMidpoint(Point([−1,2]),Point([3,−2]))\mathrm{Midpoint}(\mathrm{Point}(\bigl\lbrack-1, 2\bigr\rbrack), \mathrm{Point}(\bigl\lbrack3, -2\bigr\rbrack))OutPoint([1,0])\mathrm{Point}(\bigl\lbrack1, 0\bigr\rbrack)
About
Examples13
Checked againstWolfram Language 9 agree3 differ1 unevaluated
CrosswalkWolfram Language

Implementation

mappedwolframpackages/oracle/src/mappings.ts

Wolfram's takes the segment as one list of its two ends.

See also: LowerTick, UpperTick, Round