A Circle2d
is defined by its center point and radius. This module includes
functionality for
Geometry.Types.Circle2d units coordinates
atPoint : Point2d units coordinates -> Quantity Basics.Float units -> Circle2d units coordinates
Construct a circle from its radius and center point:
exampleCircle =
Circle2d.atPoint (Point2d.meters 1 2)
(Length.meters 3)
If you pass a negative radius, the absolute value will be used.
withRadius : Quantity Basics.Float units -> Point2d units coordinates -> Circle2d units coordinates
Construct a circle from its radius and center point. Flipped version of
atPoint
that may be more useful in some situations like constructing a bunch
of circles of the same radius at different points:
circles =
List.map (Circle2d.withRadius radius) listOfPoints
atOrigin : Quantity Basics.Float units -> Circle2d units coordinates
Construct a circle at the origin with the given radius.
throughPoints : Point2d units coordinates -> Point2d units coordinates -> Point2d units coordinates -> Maybe (Circle2d units coordinates)
Attempt to construct a circle that passes through the three given points:
Circle2d.throughPoints
Point2d.origin
(Point2d.meters 1 0)
(Point2d.meters 0 1)
--> Just <|
--> Circle2d.atPoint (Point2d.meters 0.5 0.5)
--> (Length.meters 0.7071)
If the three given points are collinear, returns Nothing
:
Circle2d.throughPoints
Point2d.origin
(Point2d.meters 2 0)
(Point2d.meters 4 0)
--> Nothing
sweptAround : Point2d units coordinates -> Point2d units coordinates -> Circle2d units coordinates
Construct a circle by rotating a point on the circle around a given center point. The center point is given first and the point on the circle is given second.
Circle2d.sweptAround Point2d.origin
(Point2d.meters 2 0)
--> Circle2d.atOrigin (Length.meters 2)
The above example could be rewritten as
Point2d.meters 2 0
|> Circle2d.sweptAround Point2d.origin
and if you wanted to create many concentric circles all centered on a specific point but passing through several other different points, you could use something like
concentricCircles =
List.map (Circle2d.sweptAround centerPoint) points
centerPoint : Circle2d units coordinates -> Point2d units coordinates
Get the center point of a circle.
radius : Circle2d units coordinates -> Quantity Basics.Float units
Get the radius of a circle.
diameter : Circle2d units coordinates -> Quantity Basics.Float units
Get the diameter of a circle (twice the radius).
area : Circle2d units coordinates -> Quantity Basics.Float (Quantity.Squared units)
Get the area of a circle.
circumference : Circle2d units coordinates -> Quantity Basics.Float units
Get the circumference (perimeter) of a circle.
boundingBox : Circle2d units coordinates -> BoundingBox2d units coordinates
Get the minimal bounding box containing a given circle.
Circle2d.boundingBox exampleCircle
--> BoundingBox2d.from
--> (Point2d.meters -2 -1)
--> (Point2d.meters 4 5)
toArc : Circle2d units coordinates -> Geometry.Types.Arc2d units coordinates
Convert a circle to a 360 degree arc.
contains : Point2d units coordinates -> Circle2d units coordinates -> Basics.Bool
Check if a circle contains a given point.
intersectsBoundingBox : BoundingBox2d units coordinates -> Circle2d units coordinates -> Basics.Bool
Check if a circle intersects with a given bounding box. This function will return true if the circle intersects the edges of the bounding box or is fully contained within the bounding box.
boundingBox =
BoundingBox2d.from
(Point2d.meters 2 0)
(Point2d.meters 3 2)
circle =
Circle2d.atOrigin (Length.meters 3)
Circle2d.intersectsBoundingBox boundingBox circle
--> True
These transformations generally behave just like the ones in the Point2d
module.
scaleAbout : Point2d units coordinates -> Basics.Float -> Circle2d units coordinates -> Circle2d units coordinates
Scale a circle about a given point by a given scale.
rotateAround : Point2d units coordinates -> Angle -> Circle2d units coordinates -> Circle2d units coordinates
Rotate a circle around a given point by a given angle.
translateBy : Vector2d units coordinates -> Circle2d units coordinates -> Circle2d units coordinates
Translate a circle by a given displacement.
translateIn : Direction2d coordinates -> Quantity Basics.Float units -> Circle2d units coordinates -> Circle2d units coordinates
Translate a circle in a given direction by a given distance.
mirrorAcross : Axis2d units coordinates -> Circle2d units coordinates -> Circle2d units coordinates
Mirror a circle across a given axis.
at : Quantity Basics.Float (Quantity.Rate units2 units1) -> Circle2d units1 coordinates -> Circle2d units2 coordinates
Convert a circle from one units type to another, by providing a conversion factor given as a rate of change of destination units with respect to source units.
at_ : Quantity Basics.Float (Quantity.Rate units1 units2) -> Circle2d units1 coordinates -> Circle2d units2 coordinates
Convert a circle from one units type to another, by providing an 'inverse' conversion factor given as a rate of change of source units with respect to destination units.
relativeTo : Frame2d units globalCoordinates { defines : localCoordinates } -> Circle2d units globalCoordinates -> Circle2d units localCoordinates
Take a circle defined in global coordinates, and return it expressed in local coordinates relative to a given reference frame.
placeIn : Frame2d units globalCoordinates { defines : localCoordinates } -> Circle2d units localCoordinates -> Circle2d units globalCoordinates
Take a circle considered to be defined in local coordinates relative to a given reference frame, and return that circle expressed in global coordinates.