Class Point2Float
java.lang.Object
com.github.yellowstonegames.grid.Point2Float
- All Implemented Interfaces:
com.github.tommyettinger.crux.Point2<Point2Float>, com.github.tommyettinger.crux.PointN<Point2Float>, com.github.tommyettinger.crux.PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>, com.github.tommyettinger.ds.PrimitiveCollection<Float>, com.github.tommyettinger.ds.PrimitiveCollection.OfFloat, PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>
public class Point2Float
extends Object
implements com.github.tommyettinger.crux.Point2<Point2Float>, PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>, com.github.tommyettinger.ds.PrimitiveCollection.OfFloat
A mutable 2D point with float components implementing
Point2, PrimitiveCollection.OfFloat,
and PointNFloat.-
Nested Class Summary
Nested classes/interfaces inherited from interface com.github.tommyettinger.ds.PrimitiveCollection
com.github.tommyettinger.ds.PrimitiveCollection.OfBoolean, com.github.tommyettinger.ds.PrimitiveCollection.OfByte, com.github.tommyettinger.ds.PrimitiveCollection.OfChar, com.github.tommyettinger.ds.PrimitiveCollection.OfDouble, com.github.tommyettinger.ds.PrimitiveCollection.OfFloat, com.github.tommyettinger.ds.PrimitiveCollection.OfInt, com.github.tommyettinger.ds.PrimitiveCollection.OfLong, com.github.tommyettinger.ds.PrimitiveCollection.OfShort -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionPoint2Float(float x, float y) Point2Float(com.github.tommyettinger.crux.Point2<?> p) -
Method Summary
Modifier and TypeMethodDescriptionbooleanadd(float c) Not supported; this collection is fixed-size.add(float x, float y) add(com.github.tommyettinger.crux.Point2<?> point) add(Point2Float point) addProduct(com.github.tommyettinger.crux.Point2<?> vec, float scalar) addProduct(com.github.tommyettinger.crux.Point2<?> vec, com.github.tommyettinger.crux.Point2<?> mulVec) clampEach(float min, float max) For each component, this clamps it between min and max, inclusive.clampLength(float min, float max) voidclear()Not supported; this collection is fixed-size.booleancontains(float c) Comparescwith the components of this collection using==; if any are considered equal, this returns true.copy()cpy()floatdistance(com.github.tommyettinger.crux.Point2<?> point) floatdistanceSquared(com.github.tommyettinger.crux.Point2<?> point) div(com.github.tommyettinger.crux.Point2<?> point) div(Point2Float point) divide(float scalar) divide(com.github.tommyettinger.crux.Point2<?> point) floatdot(com.github.tommyettinger.crux.Point2<?> other) static floatdot(com.github.tommyettinger.crux.Point2<?> a, com.github.tommyettinger.crux.Point2<?> b) floatdst2(com.github.tommyettinger.crux.Point2<?> point) floatdst2(Point2Float point) booleanbooleanReturns true if this type of point usesfloatordoublefor its components, or false otherwise.fract()Sets each component so it only has a fractional value, by subtracting the floor from each component.fromString(String s) Sets thisPoint2Floatto the value represented by the specified string according to the format oftoString().floatget(int index) Gets the component at the specified index.inthashCode()interpolate(com.github.tommyettinger.crux.Point2<?> target, float alpha, com.github.tommyettinger.digital.Interpolations.Interpolator interpolation) CallsPointNFloat.lerp(PointN, float)with the alpha determined by the giveninterpolation.inverse()Assigns to each component of this point1fdivided by its original value.booleanisEmpty()iterator()floatlen2()lerp(com.github.tommyettinger.crux.Point2<?> target, float alpha) Linear-interpolates from this point toward target, moving a distance proportional to alpha and changing this point in-place if possible.limit(float limit) limit2(float limit2) limitSquared(float limit2) minus(float scalar) mul(float scalar) Multiplies each component of this by the given scalar, in-place, and returns this.mul(float x, float y) Multiplies each component of this by the corresponding scalar, in-place, and returns this.mul(com.github.tommyettinger.crux.Point2<?> point) mul(Point2Float point) mulAdd(com.github.tommyettinger.crux.Point2<?> vec, float scalar) mulAdd(com.github.tommyettinger.crux.Point2<?> vec, com.github.tommyettinger.crux.Point2<?> mulVec) multiply(float scalar) Multiplies each component of this by the given scalar, in-place, and returns this.multiply(float x, float y) Multiplies each component of this by the corresponding scalar, in-place, and returns this.multiply(com.github.tommyettinger.crux.Point2<?> point) nor()booleannotEmpty()plus(float scalar) booleanremove(float c) Not supported; this collection is fixed-size.rotate90(int sign) rotateAroundDeg(com.github.tommyettinger.crux.Point2<?> reference, float degrees) rotateAroundRad(com.github.tommyettinger.crux.Point2<?> reference, float radians) rotateAroundTurns(com.github.tommyettinger.crux.Point2<?> reference, float turns) rotateDeg(float degrees) rotateRad(float radians) rotateTurns(float turns) scale(float scalar) scale(float x, float y) scale(com.github.tommyettinger.crux.Point2<?> point) scl(float scalar) scl(float x, float y) scl(com.github.tommyettinger.crux.Point2<?> point) scl(Point2Float point) set(float x, float y) set(com.github.tommyettinger.crux.Point2<?> point) set(Point2Float point) setAngleDeg(float degrees) setAngleRad(float radians) setAngleTurns(float turns) setAt(int index, float value) Sets the component at the specified index to the specified value.setLength(float len) setLength2(float len2) setToRandomDirection(Random random) Sets this PointNFloat to a randomly chosen unit vector.setZero()sinCos(float radians) CalculatesTrigTools.cos(float)andTrigTools.sin(float)simultaneously and stores their results in x and y, respectively.sinCosDeg(float degrees) CalculatesTrigTools.cosDeg(float)andTrigTools.sinDeg(float)simultaneously and stores their results in x and y, respectively.sinCosSmoother(float radians) CalculatesTrigTools.cosSmoother(float)andTrigTools.sinSmoother(float)simultaneously and stores their results in x and y, respectively.sinCosSmootherDeg(float degrees) CalculatesTrigTools.cosSmootherDeg(float)andTrigTools.sinSmootherDeg(float)simultaneously and stores their results in x and y, respectively.sinCosSmootherTurns(float turns) CalculatesTrigTools.cosSmootherTurns(float)andTrigTools.sinSmootherTurns(float)simultaneously and stores their results in x and y, respectively.sinCosTurns(float turns) CalculatesTrigTools.cosTurns(float)andTrigTools.sinTurns(float)simultaneously and stores their results in x and y, respectively.intsize()slerpGeometric(Point2Float target, float alpha) sub(float x, float y) sub(com.github.tommyettinger.crux.Point2<?> point) sub(Point2Float point) subtract(float x, float y) subtract(com.github.tommyettinger.crux.Point2<?> point) times(float scalar) toString()Converts thisPoint2Floatto a string in the format(x,y).floatx()x(float next) floaty()y(float next) Methods inherited from interface com.github.tommyettinger.crux.Point2
rank, seti, xi, xi, yi, yiMethods inherited from interface com.github.tommyettinger.crux.PointN
dst, isUnit, isUnit, isZero, isZero, len, mutableMethods inherited from interface com.github.tommyettinger.ds.PrimitiveCollection.OfFloat
addAll, addAll, addAll, addAll, addDense, addDense, addLegible, addLegible, addVarargs, appendTo, appendTo, containsAll, containsAll, containsAll, containsAll, containsAny, containsAny, containsAny, containsAny, denseAppendTo, first, forEach, removeAll, removeAll, removeAll, removeAll, removeEach, removeEach, removeEach, removeEach, removeIf, retainAll, retainAll, retainAll, toArray, toArray, toDenseString, toDenseString, toString, toString, toString
-
Field Details
-
x
public float x -
y
public float y
-
-
Constructor Details
-
Point2Float
public Point2Float() -
Point2Float
public Point2Float(float x, float y) -
Point2Float
-
Point2Float
public Point2Float(com.github.tommyettinger.crux.Point2<?> p)
-
-
Method Details
-
floatingPoint
public boolean floatingPoint()Returns true if this type of point usesfloatordoublefor its components, or false otherwise. This always returns true.- Specified by:
floatingPointin interfacecom.github.tommyettinger.crux.PointN<Point2Float>- Specified by:
floatingPointin interfacecom.github.tommyettinger.crux.PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Specified by:
floatingPointin interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Returns:
- true
-
cpy
- Specified by:
cpyin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
copy
-
len2
public float len2()- Specified by:
len2in interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
set
- Specified by:
setin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
set
-
sub
- Specified by:
subin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
sub
-
subtract
-
add
- Specified by:
addin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
add
-
plus
- Specified by:
plusin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
minus
- Specified by:
minusin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
times
- Specified by:
timesin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
scl
- Specified by:
sclin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
scl
-
scale
-
mul
-
mul
-
multiply
-
div
- Specified by:
divin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
div
-
divide
-
dst2
- Specified by:
dst2in interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
dst2
public float dst2(com.github.tommyettinger.crux.Point2<?> point) -
distance
public float distance(com.github.tommyettinger.crux.Point2<?> point) -
distanceSquared
public float distanceSquared(com.github.tommyettinger.crux.Point2<?> point) -
setZero
- Specified by:
setZeroin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
x
public float x()- Specified by:
xin interfacecom.github.tommyettinger.crux.Point2<Point2Float>
-
x
- Specified by:
xin interfacecom.github.tommyettinger.crux.Point2<Point2Float>
-
y
public float y()- Specified by:
yin interfacecom.github.tommyettinger.crux.Point2<Point2Float>
-
y
- Specified by:
yin interfacecom.github.tommyettinger.crux.Point2<Point2Float>
-
set
- Specified by:
setin interfacecom.github.tommyettinger.crux.Point2<Point2Float>
-
nor
- Specified by:
norin interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
normalize
-
add
-
sub
-
subtract
-
scl
-
scale
-
scl
-
scale
-
mul
Multiplies each component of this by the given scalar, in-place, and returns this. This is an alias forscl(float).- Parameters:
scalar- a float that will be multiplied with each component- Returns:
- this, for chaining
-
multiply
Multiplies each component of this by the given scalar, in-place, and returns this. This is an alias forscl(float).- Parameters:
scalar- a float that will be multiplied with each component- Returns:
- this, for chaining
-
mul
Multiplies each component of this by the corresponding scalar, in-place, and returns this. This is an alias forscl(float, float).- Parameters:
x- a float that will be multiplied with xy- a float that will be multiplied with y- Returns:
- this, for chaining
-
multiply
Multiplies each component of this by the corresponding scalar, in-place, and returns this. This is an alias forscl(float, float).- Parameters:
x- a float that will be multiplied with xy- a float that will be multiplied with y- Returns:
- this, for chaining
-
divide
- Specified by:
dividein interfacecom.github.tommyettinger.crux.PointN<Point2Float>
-
addProduct
-
mulAdd
-
mulAdd
public Point2Float mulAdd(com.github.tommyettinger.crux.Point2<?> vec, com.github.tommyettinger.crux.Point2<?> mulVec) -
addProduct
public Point2Float addProduct(com.github.tommyettinger.crux.Point2<?> vec, com.github.tommyettinger.crux.Point2<?> mulVec) -
limit
-
limit2
-
limitSquared
-
clampLength
-
setLength
-
setLength2
-
setAngleRad
-
setAngleDeg
-
setAngleTurns
-
rotateRad
-
rotateDeg
-
rotateTurns
-
rotateAroundRad
public Point2Float rotateAroundRad(com.github.tommyettinger.crux.Point2<?> reference, float radians) -
rotateAroundDeg
public Point2Float rotateAroundDeg(com.github.tommyettinger.crux.Point2<?> reference, float degrees) -
rotateAroundTurns
public Point2Float rotateAroundTurns(com.github.tommyettinger.crux.Point2<?> reference, float turns) -
rotate90
-
dot
public float dot(com.github.tommyettinger.crux.Point2<?> other) -
dot
public static float dot(com.github.tommyettinger.crux.Point2<?> a, com.github.tommyettinger.crux.Point2<?> b) -
lerp
Description copied from interface:PointNFloatLinear-interpolates from this point toward target, moving a distance proportional to alpha and changing this point in-place if possible. If this point is notPointN.mutable(), this will return a new or pooled point. The alpha is expected to be in the 0 to 1 range, inclusive.- Specified by:
lerpin interfacecom.github.tommyettinger.crux.PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Specified by:
lerpin interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Parameters:
target- any point with the same dimension to move towardalpha- between 0 and 1, inclusive- Returns:
- this point after modifications, if possible, or a new PointNFloat if this is immutable
-
interpolate
public Point2Float interpolate(com.github.tommyettinger.crux.Point2<?> target, float alpha, com.github.tommyettinger.digital.Interpolations.Interpolator interpolation) Description copied from interface:PointNFloatCallsPointNFloat.lerp(PointN, float)with the alpha determined by the giveninterpolation. Simply returnslerp(target, interpolation.apply(alpha)).- Specified by:
interpolatein interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Parameters:
target- any point with the same dimension to move towardalpha- between 0 and 1, inclusiveinterpolation- an Interpolator from digital, such asInterpolations.smooth- Returns:
- this point after modifications, if possible, or a new PointNFloat if this is immutable
-
slerpGeometric
-
setToRandomDirection
Description copied from interface:PointNFloatSets this PointNFloat to a randomly chosen unit vector. The exact algorithm is expected to vary between dimensions. In 2D, for instance, it is sufficient to get a random float between 0 and 1, and callTrigTools.cosTurns(float)andTrigTools.sinTurns(float)to get x and y. In higher dimensions, this gets more complex. A solution that works for any dimension, but is only the best option for 4D and up, is to assign to each component a normal-distributed float usingDistributor.probitF(float)with random inputs, then normalize the PointNFloat withPointN.nor().- Specified by:
setToRandomDirectionin interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Parameters:
random- any Random or subclass thereof- Returns:
- this point after modifications, if possible, or a new PointNFloat if this is immutable
-
clampEach
For each component, this clamps it between min and max, inclusive.- Parameters:
min- the minimum value allowable for any component, inclusivemax- the maximum value allowable for any component, inclusive- Returns:
- this, after modifications
-
fract
Sets each component so it only has a fractional value, by subtracting the floor from each component. This produces a non-negative float for each component, between 0.0 inclusive and 1.0 exclusive, unless a component is outside the safe range forMathTools.floor(float)(-16384.0 at the lowest).The result of fract() for a component with a value of 1.25 will be 0.25 . The result of fract() for a component with a value of -1.25 will be 0.75 .
- Returns:
- this, after modifications
-
fractional
-
inverse
Assigns to each component of this point1fdivided by its original value. If a component is 0.0f, its value after this will be positive infinity. If a component is -0.0f, its value after this will be negative infinity.- Specified by:
inversein interfacecom.github.tommyettinger.crux.PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Specified by:
inversein interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Returns:
- 1f divided by this point, assigned in-place to this
-
get
public float get(int index) Gets the component at the specified index. Kotlin-compatible using square-bracket indexing.- Specified by:
getin interfacecom.github.tommyettinger.crux.PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Specified by:
getin interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Parameters:
index- which component to get, in order- Returns:
- the component
-
setAt
Sets the component at the specified index to the specified value.- Specified by:
setAtin interfacecom.github.tommyettinger.crux.PointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Specified by:
setAtin interfacePointNFloat<Point2Float, com.github.tommyettinger.crux.Point2<?>>- Parameters:
index- which component to set, in ordervalue- the value to assign at index- Returns:
- this, for chaining
-
equals
-
hashCode
-
toString
-
fromString
Sets thisPoint2Floatto the value represented by the specified string according to the format oftoString().- Parameters:
s- the string.- Returns:
- this point for chaining
-
add
public boolean add(float c) Not supported; this collection is fixed-size.- Specified by:
addin interfacecom.github.tommyettinger.ds.PrimitiveCollection.OfFloat- Parameters:
c- ignored- Returns:
- never returns
- Throws:
UnsupportedOperationException- always
-
remove
public boolean remove(float c) Not supported; this collection is fixed-size.- Specified by:
removein interfacecom.github.tommyettinger.ds.PrimitiveCollection.OfFloat- Parameters:
c- ignored- Returns:
- never returns
- Throws:
UnsupportedOperationException- always
-
clear
public void clear()Not supported; this collection is fixed-size.- Specified by:
clearin interfacecom.github.tommyettinger.ds.PrimitiveCollection<Float>- Throws:
UnsupportedOperationException- always
-
contains
public boolean contains(float c) Comparescwith the components of this collection using==; if any are considered equal, this returns true.- Specified by:
containsin interfacecom.github.tommyettinger.ds.PrimitiveCollection.OfFloat- Parameters:
c- a float to be compared using==- Returns:
- true if any component of this collection is equal to
cvia==comparison
-
size
public int size()- Specified by:
sizein interfacecom.github.tommyettinger.ds.PrimitiveCollection<Float>
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfacecom.github.tommyettinger.ds.PrimitiveCollection<Float>
-
notEmpty
public boolean notEmpty()- Specified by:
notEmptyin interfacecom.github.tommyettinger.ds.PrimitiveCollection<Float>
-
iterator
- Specified by:
iteratorin interfacecom.github.tommyettinger.ds.PrimitiveCollection<Float>- Specified by:
iteratorin interfacecom.github.tommyettinger.ds.PrimitiveCollection.OfFloat
-
sinCos
CalculatesTrigTools.cos(float)andTrigTools.sin(float)simultaneously and stores their results in x and y, respectively. This is expected to be only slightly faster than calling cos() and sin() separately.- Parameters:
radians- the angle to calculate cos() and sin() of- Returns:
- this, after reassignment, for chaining
-
sinCosDeg
CalculatesTrigTools.cosDeg(float)andTrigTools.sinDeg(float)simultaneously and stores their results in x and y, respectively. This is expected to be only slightly faster than calling cosDeg() and sinDeg() separately.- Parameters:
degrees- the angle to calculate cosDeg() and sinDeg() of- Returns:
- this, after reassignment, for chaining
-
sinCosTurns
CalculatesTrigTools.cosTurns(float)andTrigTools.sinTurns(float)simultaneously and stores their results in x and y, respectively. This is expected to be only slightly faster than calling cosTurns() and sinTurns() separately.- Parameters:
turns- the angle to calculate cosTurns() and sinTurns() of- Returns:
- this, after reassignment, for chaining
-
sinCosSmoother
CalculatesTrigTools.cosSmoother(float)andTrigTools.sinSmoother(float)simultaneously and stores their results in x and y, respectively. This is expected to be somewhat faster than calling cosSmoother() and sinSmoother() separately.- Parameters:
radians- the angle to calculate cosSmoother() and sinSmoother() of- Returns:
- this, after reassignment, for chaining
-
sinCosSmootherDeg
CalculatesTrigTools.cosSmootherDeg(float)andTrigTools.sinSmootherDeg(float)simultaneously and stores their results in x and y, respectively. This is expected to be somewhat faster than calling cosSmootherDeg() and sinSmootherDeg() separately.- Parameters:
degrees- the angle to calculate cosSmootherDeg() and sinSmootherDeg() of- Returns:
- this, after reassignment, for chaining
-
sinCosSmootherTurns
CalculatesTrigTools.cosSmootherTurns(float)andTrigTools.sinSmootherTurns(float)simultaneously and stores their results in x and y, respectively. This is expected to be somewhat faster than calling cosSmootherTurns() and sinSmootherTurns() separately.- Parameters:
turns- the angle to calculate cosSmootherTurns() and sinSmootherTurns() on- Returns:
- this, after reassignment, for chaining
-