|
|
Class: Point
Object
|
+--Magnitude
|
+--ArithmeticValue
|
+--Point
- Package:
- stx:libbasic
- Category:
- Graphics-Geometry
- Version:
- rev:
1.73
date: 2009/05/26 06:31:07
- user: cg
- file: Point.st directory: libbasic
- module: stx stc-classLibrary: libbasic
- Author:
- Claus Gittinger
I represent a point in 2D space. Or I can be used to represent
an extent (of a rectangle, for example), in which case my x-coordinate
represents the width, and y-coordinate the height of something.
The x and y coordinate are usually numbers.
[Instance variables:]
x <Number> the x-coordinate of myself
y <Number> the y-coordinate of myself
Rectangle
Polygon
LayoutOrigin
LayoutFrame
AlignmentOrigin
Layout
View
GraphicsContext
constants
-
unity
-
return the neutral element for multiplication
-
zero
-
return the neutral element for addition
initialization
-
initialize
-
instance creation
-
decodeFromLiteralArray: anArray
-
create & return a new instance from information encoded in anArray.
Redefined for faster creation.
-
r: distance angle: angle
-
create and return a new point given polar coordinates.
The angle is given in degrees.
OBSOLETE STX interface, use #r:theta:
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
r: distance degrees: angle
-
create and return a new point given polar coordinates.
The angle is given in degrees.
Added for Squeak compatibility
-
r: distance theta: angleInRadians
-
create and return a new point given polar coordinates.
The angle is given in radians
-
readFrom: aStringOrStream onError: exceptionBlock
-
return the next Point from the (character-)stream aStream;
skipping all whitespace first; return the value of exceptionBlock,
if no point can be read.
-
x: newX y: newY
-
create and return a new point with coordinates newX and newY
queries
-
isBuiltInClass
-
return true if this class is known by the run-time-system.
Here, true is returned for myself, false for subclasses.
Compatibility-Squeak
-
adhereTo: aRectangle
-
If the receiver lies outside aRectangle, return the nearest point on the boundary of the rectangle, otherwise return self.
-
area
-
-
asFloatPoint
-
Squeak mimicri return the receiver as Point - this is the receiver
-
asLargerPowerOfTwo
-
-
asSmallerPowerOfTwo
-
-
maxDimension
-
Answer the larger of the two dimensions.
accessing
-
x
-
return the x coordinate
-
x: newX
-
set the x coordinate to be the argument, aNumber.
This is destructive (modifies the receiver, not a copy) and
should only be used if you know, that you are the exclusive owner
of the receiver.
-
x: newX y: newY
-
set both the x and y coordinates.
This is destructive (modifies the receiver, not a copy) and
should only be used if you know, that you are the exclusive owner
of the receiver.
-
y
-
return the y coordinate
-
y: newY
-
set the y coordinate to be the argument, aNumber.
This is destructive (modifies the receiver, not a copy) and
should only be used if you know, that you are the exclusive owner
of the receiver.
coercing & converting
-
coerce: anObject
-
convert the argument aNumber into an instance of the receivers class and return it.
-
generality
-
return the generality value - see ArithmeticValue>>retry:coercing:
comparing
-
< aPoint
-
return true if the receiver is above and to the left
of the argument, aPoint
-
= aPoint
-
return true if the receiver represents the same point as
the argument, aPoint
-
> aPoint
-
return true if the receiver is below and to the right
of the argument, aPoint
-
hash
-
return a number for hashing
-
isLeftOrAbove: aPoint
-
return true if the receiver is above or to the left
of the argument, aPoint.
When sorting this enumerates points from left to right and top to bottom
-
max: aPoint
-
return the lower right corner of the rectangle uniquely defined by
the receiver and the argument, aPoint
-
min: aPoint
-
return the upper left corner of the rectangle uniquely defined by
the receiver and the argument, aPoint
converting
-
asComplex
-
Return a complex number whose real and imaginary components are the x and y
coordinates of the receiver.
-
asFractionalLayout
-
return a LayoutOrigin from the receiver,
treating the receiver coordinates as fractional parts
(i.e. relative to superview).
Notice: in 10.5.x LayoutOrigin is not yet officially released.
-
asIntegerPoint
-
-
asLayout
-
return a LayoutOrigin from the receiver.
If the receiver coordinates are between 0 and 1, take
them as fractional parts (relative to superview).
Otherwise, treat them as absolute offsets.
Notice: in 10.5.x LayoutOrigin is not yet released.
-
asOffsetLayout
-
return a LayoutOrigin from the receiver,
treating the receiver coordinates as absolute offsets.
Notice: in 10.5.x LayoutOrigin is not yet released.
-
asPoint
-
return the receiver as Point - this is the receiver
-
asRectangle
-
return a zero-width rectangle consisting of origin
and corner being the receiver
-
corner: aPoint
-
return a rectangle whose origin is self and corner is aPoint
-
extent: aPoint
-
return a rectangle whose origin is self and extent is aPoint
-
fromLiteralArrayEncoding: encoding
-
read my values from an encoding.
The encoding is supposed to be of the form: (Point xValue yValue)
-
literalArrayEncoding
-
encode myself as an array, from which a copy of the receiver
can be reconstructed with #decodeAsLiteralArray.
The encoding is: (Point xValue yValue)
-
rectangleRelativeTo: aRectangle preferred: prefRectHolder
-
compute a displayRectangle, treating the receiver like a
layoutorigin. This allows point to be used interchangable with
LayoutOrigins.
destructive transformations
-
scaleBy: aScale
-
scale the receiver, by replacing coordinates by the product
of the receivers coordinates and the scale (a Point or Number).
This is destructive (modifies the receiver, not a copy) and
should only be used if you know, that you are the exclusive owner
of the receiver.
-
translateBy: anOffset
-
translate the receiver, by replacing coordinates by the sum
of the receivers coordinated and the scale (a Point or Number).
This is destructive (modifies the receiver, not a copy) and
should only be used if you know, that you are the exclusive owner
of the receiver.
interpolating
-
interpolateTo: end at: amountDone
-
Interpolate between the instance and end after the specified amount has been done (0 - 1).
misc
-
abs
-
return a new point with my coordinates taken from the absolute values.
-
ceiling
-
return a new point with my coordinates truncated towards positive infinity.
Return the receiver if its coordinates are already integral.
-
floor
-
return a new point with my coordinates truncated towards negative infinity.
Return the receiver if its coordinates are already integral.
-
quadrant
-
return the number of the quadrant containing the receiver.
quadrants are named as follows:
^ 2 | 3
Y ------
1 | 0
X >
Q: what is to be returned if any coordinate is 0 ?
-
quadrantContaining: aPoint
-
return the number of the quadrant containing aPoint placing
the receiver at the origin, where the quadrants are numbered as
follows:
^ 2 | 3
Y ------
1 | 0
X >
This can be used for polygon operations (see Foley for examples).
-
rounded
-
return a new point with my coordinates rounded to the next integer.
Return the receiver if its coordinates are already integral.
-
truncateTo: aNumber
-
return a new point with my coordinates truncated towards zero to the next
multiple of aNumber.
-
truncated
-
return a new point with my coordinates truncated as integer.
Return the receiver if its coordinates are already integral.
point functions
-
crossProduct: aPoint
-
Return a number that is the cross product of the receiver and the
argument, aPoint.
-
dist: aPoint
-
return the distance between aPoint and the receiver.
-
dotProduct: aPoint
-
return a number that is the dot product of the receiver and
the argument, aPoint. That is, the two points are
multiplied and the coordinates of the result summed.
-
fourNeighbors
-
-
grid: gridPoint
-
return a new point with coordinates grided (i.e. rounded to the
nearest point on the grid)
-
nearestIntegerPointOnLineFrom: point1 to: point2
-
return the closest integer point to the receiver on the line
determined by (point1, point2)--much faster than the more
accurate version if the receiver and arguments are integer points.
This method was found in the Manchester goody library.
-
normalized
-
interpreting myself as the endPoint of a 0@0 based vector,
return the endPoint of the corresponding normalized vector.
(that is the endPoint of a vector with the same direction but length 1)
-
transposed
-
return a new point with x and y coordinates exchanged
polar coordinates
-
angle
-
return the receiver's angle (in degrees) in a polar coordinate system.
(i.e. the angle of a vector from 0@0 to the receiver).
OBSOLETE ST/X interface; use theta for ST-80 compatibility.
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
degrees
-
return the receiver's angle (in degrees) in a polar coordinate system.
(i.e. the angle of a vector from 0@0 to the receiver).
The angle is counted counter-clock-wise, starting with 0 for a horizontal
line (i.e. 0@0 -> 100@0 has an angle of 0 and 0@0 -> 0@100 has an angle of 90).
Added for Squeak compatibility.
-
r
-
return the receiver's radius in a polar coordinate system.
(i.e. the length of a vector from 0@0 to the receiver)
-
theta
-
return the receiver's angle (in radians) in a polar coordinate system.
(i.e. the angle of a vector from 0@0 to the receiver)
printing & storing
-
printOn: aStream
-
append a printed representation of the receiver to aStream
-
storeOn: aStream
-
append my storeString to aStream
queries
-
isPoint
-
return true, if the receiver is some kind of point
testing
-
isFinite
-
-
isInfinite
-
transformations
-
* scale
-
Return a new Point that is the product of the
receiver and scale (which is a Point or Number).
-
+ scale
-
Return a new Point that is the sum of the
receiver and scale (which is a Point or Number).
-
- scale
-
Return a new Point that is the difference of the
receiver and scale (which is a Point or Number).
-
/ scale
-
Return a new Point that is the integer quotient of the
receiver and scale (which is a Point or Number).
-
// scale
-
Return a new Point that is the quotient of the
receiver and scale (which is a Point or Number).
-
negated
-
return a new point with my coordinates negated
i.e. the receiver mirrored at the origin
-
reciprocal
-
return a new point where the coordinates are
the reciproce of mine
-
rotateBy: angle about: center
-
Return a new point, generated by rotating the receiver
counterClockWise by some angle in radians around the given center point.
Even though Point.theta is measured CW,
this rotates with the more conventional CCW interpretateion of angle.
-
scaledBy: aScale
-
return a new Point that is the product of the
receiver and scale (which is a Point or Number).
-
translatedBy: anOffset
-
return a new Point that is the sum of the
receiver and scale (which is a Point or Number).
|