affineGrob()
and grid.affine()
provide
wrappers around grid::defineGrob()
and
grid::useGrob()
isocubeGrob()
and grid.isocube()
provides
a convenience wrapper for the isometric cube case.affine_settings()
computes grid
affine
transformation feature viewports and transformation functions
angle()
creates angle vector S3 classes that allow
users to use whichever angular unit is most convenient for them:
Supports “degrees”, “radians”, “half-turns” (aka “pi-radians”), (full) “turns”, and “gradians” units.
is_angle()
tests whether the input is an angle
vector.
as_angle()
casts objects to angle vectors.
degrees()
, gradians()
,
pi_radians()
, radians()
, and
turns()
are convenience wrappers around
as_angle()
for those commonly used angular units.
is_congruent()
is a generic S3 method which tests
whether two R objects are “congruent”. The is_congruent()
method for angle vectors tests whether two angles are
congruent.
angular_unit()
can be used to get/set the angular
unit of angle vectors.
The default angular unit can be adjusted locally/globally by
setting the “affiner_angular_unit” option.
e.g. options(affiner_angular_unit = "turns")
.
sine()
, cosine()
,
tangent()
, secant()
, cosecant()
,
cotangent()
, arcsine()
,
arccosine()
, arctangent()
,
arcsecant()
, arccosecant()
, and
arccotangent()
are angle vector aware trigonometric
functions.
We implement methods for several base generics (plus as a numeric vector it inherits support for several more). Some notes:
+
and -
) or a c()
combining
operation are angle vectors then we coerce the second one to use the
same angular unit as the first one.as.numeric()
takes a unit
argument which
can be used to convert angles into other angular units
e.g. angle(x, "degrees") |> as.numeric("radians")
to
cast a numeric vector x
from degrees to radians.abs()
will calculate the angle modulo full turns.Coord1D
, Coord2D
, and
Coord3D
are (Cartesian) coordinate R6 classes
is_coord1d()
, is_coord2d()
, and
is_coord3d()
test whether objects are Coord1D
,
Coord2D
, or Coord3D
R6 classes
as_coord1d()
, as_coord2d()
, and
as_coord3d()
cast objects to Coord1D
,
Coord2D
, or Coord3D
R6 classes
Several mathematical operations are supported for
Coord1D
, Coord2D
, or Coord3D
R6
classes
*
either applies a “dot” product (if multiplying
another Coord1D
, Coord2D
, or
Coord3D
object) or a “scaling” transformation (if
multiplying a numeric value)/
applies a “scaling” transformation-
applies a “scaling” transformation whereas
binary -
and +
apply a “translation”
transformationAdditional S3 methods:
abs()
computes Euclidean normconvex_hull2d()
computes convex hull (currently just
for Coord2D
vectors)cross_product3d()
computes a cross product between
Coord3D
vectorsdistance1d()
, distance2d()
, and
distance3d()
computes Euclidean distancesmean()
computes centroids of coordinatesnormal2d()
computes Coord2D
normalsnormal3d()
computes Coord3D
normalsplot()
and points()
plots
Coord1D
and Coord2D
coordinates using base
graphics. If the suggested {ggplot2}
package is installed
one may also use autolayer()
to plot Coord1D
and Coord2D
points. If the suggested {rgl}
package is installed one may also use plot3d()
to plot
Coord3D
points (or straightforwardly use the primitive
points3d()
).range()
computes axis-aligned rangesPoint1D
, Line2D
, and
Plane3D
R6 classes
as_point1d()
casts objects to Point1D
R6
classesas_line2d()
casts objects to Line2D
R6
classesas_plane3d()
casts objects to Plane3D
R6
classesis_point1d()
tests whether objects are
Point1D
R6 classesis_line2d()
tests whether objects are
Line2D
R6 classesis_plane3d()
tests whether objects are
Plane3D
R6 classestransform1d()
, transform2d()
, and
transform3d()
create 1D/2D/3D affine transformation matrix
S3 classes
is_transform1d()
,is_transform2d()
, and
is_transform3d()
test iftransform1d()
,
transform2d()
, or transform3d()
objects.as_transform1d()
, as_transform2d()
, and
as_transform3d()
cast objects to
transform1d()
, transform2d()
, or
transform3d()
objects.permute2d()
and permute3d()
transformation
matrices permutes coordinate axes.project1d()
, project2d()
, and
project3d()
create projection matrices.reflect1d()
, reflect2d()
and
reflect3d()
create reflection affine transformation
matrices.rotate2d()
and rotate3d()
create rotation
affine transformation matrices. rotate3d_to_AA()
converts
from 3D rotation matrix to axis-angle representation.scale1d()
, scale2d()
, and
scale3d()
create scaling affine transformation
matrices.shear2d()
and shear3d()
create shearing
affine transformation matrices.translate1d()
, translate2d()
, and
translate3d()
create translation affine transformation
matrices.{affiner}
supports the following options settable by
base::options()
:
affiner_angular_unit
: The default for the
unit
argument used by angle()
and
as_angle()
. The default for this option is “degrees”.affiner_grid_unit
: The default for the
unit
argument used by affine_settings()
. The
default for this option is inches
.affiner_options()
.