LSST Applications g0d97872fb5+4fd969bb9d,g1653933729+34a971ddd9,g28da252d5a+072f89fe25,g2bbee38e9b+a99b0ab4cd,g2bc492864f+a99b0ab4cd,g2ca4be77d2+c0e3b27cd8,g2cdde0e794+704103fe75,g3156d2b45e+6e87dc994a,g347aa1857d+a99b0ab4cd,g35bb328faa+34a971ddd9,g3a166c0a6a+a99b0ab4cd,g3e281a1b8c+8ec26ec694,g4005a62e65+ba0306790b,g414038480c+9ed5ed841a,g569e0e2b34+cb4faa46ad,g5a97de2502+520531a62c,g717e5f8c0f+29153700a5,g7ede599f99+367733290c,g80478fca09+17051a22cc,g82479be7b0+f2f1ea0a87,g858d7b2824+29153700a5,g8b782ad322+29153700a5,g8cd86fa7b1+05420e7f7d,g9125e01d80+34a971ddd9,ga5288a1d22+e7f674aaf3,gae0086650b+34a971ddd9,gae74b0b5c6+45ef5cdc51,gb58c049af0+ace264a4f2,gc28159a63d+a99b0ab4cd,gcf0d15dbbd+8051a81198,gda6a2b7d83+8051a81198,gdaeeff99f8+7774323b41,gdf4d240d4a+34a971ddd9,ge2409df99d+cb167bac99,ge33fd446bb+29153700a5,ge79ae78c31+a99b0ab4cd,gf0baf85859+890af219f9,gf5289d68f6+9faa5c5784,w.2024.36
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
lsst::gauss2d::EllipseMajor Class Reference

An Ellipse with r_major, axrat and angle values. More...

#include <ellipse.h>

Inheritance diagram for lsst::gauss2d::EllipseMajor:
lsst::gauss2d::Object

Public Member Functions

 EllipseMajor (double r_major, double axrat, double angle, bool degrees=false)
 Construct a new EllipseMajor object with default float values.
 
 EllipseMajor (const Covariance &covar, bool degrees=false)
 
 EllipseMajor (const Ellipse &ellipse, bool degrees=false)
 
double get_area () const
 Return the area of this ellipse, equal to pi*sigma_major*sigma_minor.
 
double get_r_major () const
 Get the major axis length.
 
double get_axrat () const
 Get the axis ratio.
 
double get_angle () const
 Get the position angle in the configured units.
 
double get_angle_degrees () const
 Get the position angle in degrees.
 
double get_angle_radians () const
 Get the position angle in radians.
 
std::array< double, 3 > get_rqa () const
 Get the array of r_major, axrat, angle.
 
bool is_degrees () const
 Return if the units are degrees (true) or radians (false)
 
void set (double r_major, double axrat, double angle)
 
void set_r_major (double r_major)
 
void set_axrat (double axrat)
 
void set_angle (double angle)
 
void set_degrees (bool degrees)
 
void set_rqa (const std::array< double, 3 > &rqa)
 
std::string repr (bool name_keywords=false, std::string_view namespace_separator=Object::CC_NAMESPACE_SEPARATOR) const override
 Return a full, callable string representation of this.
 
std::string str () const override
 Return a brief, human-readable string representation of this.
 
bool operator== (const EllipseMajor &other) const
 
bool operator!= (const EllipseMajor &other) const
 

Static Public Member Functions

static void check (double r_major, double axrat, double angle)
 Check whether the supplied values are valid, throwing if not.
 
static std::string_view null_str (const std::string_view &namespace_separator)
 

Static Public Attributes

static constexpr std::string_view CC_NAMESPACE_SEPARATOR = "::"
 The C++ namespace separator.
 
static constexpr std::string_view NULL_STR_GENERAL = "None"
 
static constexpr std::string_view PY_NAMESPACE_SEPARATOR = "."
 

Detailed Description

An Ellipse with r_major, axrat and angle values.

This ellipse representation is intended for intermediate calculations and does not use an abstract Data class. r_major must be >= 0, and 0 <= axrat <= 1.

Definition at line 337 of file ellipse.h.

Constructor & Destructor Documentation

◆ EllipseMajor() [1/3]

lsst::gauss2d::EllipseMajor::EllipseMajor ( double r_major,
double axrat,
double angle,
bool degrees = false )
explicit

Construct a new EllipseMajor object with default float values.

Parameters
r_majorThe initial r_major value
axratThe initial axrat value
angleThe intial angle value
degreesWhether the angle unit is degrees (true) or radians (false)

Definition at line 361 of file ellipse.cc.

362 : _r_major(r_major), _axrat(axrat), _angle(angle), _degrees(degrees) {
363 EllipseMajor::check(r_major, axrat, angle);
364}
table::Key< double > angle
static void check(double r_major, double axrat, double angle)
Check whether the supplied values are valid, throwing if not.
Definition ellipse.h:352

◆ EllipseMajor() [2/3]

lsst::gauss2d::EllipseMajor::EllipseMajor ( const Covariance & covar,
bool degrees = false )
explicit

Definition at line 366 of file ellipse.cc.

366 : _degrees(degrees) {
367 init(*this, covar, degrees);
368}
void init(EllipseMajor &ellipse, const Covariance &covar, bool degrees)
Definition ellipse.cc:345

◆ EllipseMajor() [3/3]

lsst::gauss2d::EllipseMajor::EllipseMajor ( const Ellipse & ellipse,
bool degrees = false )
explicit

Definition at line 370 of file ellipse.cc.

370 : _degrees(degrees) {
371 init(*this, Covariance(ellipse), degrees);
372}

Member Function Documentation

◆ check()

static void lsst::gauss2d::EllipseMajor::check ( double r_major,
double axrat,
double angle )
inlinestatic

Check whether the supplied values are valid, throwing if not.

Definition at line 352 of file ellipse.h.

352 {
353 if (!(r_major >= 0) || !(axrat >= 0 && axrat <= 1)) {
354 throw std::invalid_argument("Invalid r_major, axrat, angle=" + std::to_string(r_major) + ","
355 + std::to_string(axrat) + "," + std::to_string(angle)
356 + "; r_major >= 0, 1 >= axrat >= 0 required.");
357 }
358 }
T to_string(T... args)

◆ get_angle()

double lsst::gauss2d::EllipseMajor::get_angle ( ) const
inline

Get the position angle in the configured units.

Definition at line 366 of file ellipse.h.

366{ return _angle; }

◆ get_angle_degrees()

double lsst::gauss2d::EllipseMajor::get_angle_degrees ( ) const
inline

Get the position angle in degrees.

Definition at line 368 of file ellipse.h.

368{ return _degrees ? _angle : _angle * M_180_PI; }
const double M_180_PI
Definition ellipse.h:41

◆ get_angle_radians()

double lsst::gauss2d::EllipseMajor::get_angle_radians ( ) const
inline

Get the position angle in radians.

Definition at line 370 of file ellipse.h.

370{ return _degrees ? _angle * M_PI_180 : _angle; }
const double M_PI_180
Definition ellipse.h:40

◆ get_area()

double lsst::gauss2d::EllipseMajor::get_area ( ) const
inline

Return the area of this ellipse, equal to pi*sigma_major*sigma_minor.

Definition at line 360 of file ellipse.h.

360{ return M_PI * _r_major * _r_major * _axrat; }
#define M_PI
Definition ListMatch.cc:31

◆ get_axrat()

double lsst::gauss2d::EllipseMajor::get_axrat ( ) const
inline

Get the axis ratio.

Definition at line 364 of file ellipse.h.

364{ return _axrat; }

◆ get_r_major()

double lsst::gauss2d::EllipseMajor::get_r_major ( ) const
inline

Get the major axis length.

Definition at line 362 of file ellipse.h.

362{ return _r_major; }

◆ get_rqa()

std::array< double, 3 > lsst::gauss2d::EllipseMajor::get_rqa ( ) const
inline

Get the array of r_major, axrat, angle.

Definition at line 372 of file ellipse.h.

372{ return {_r_major, _axrat, _angle}; }

◆ is_degrees()

bool lsst::gauss2d::EllipseMajor::is_degrees ( ) const
inline

Return if the units are degrees (true) or radians (false)

Definition at line 374 of file ellipse.h.

374{ return _degrees; }

◆ null_str()

static std::string_view lsst::gauss2d::Object::null_str ( const std::string_view & namespace_separator)
inlinestaticinherited

Definition at line 49 of file object.h.

49 {
50 return namespace_separator == CC_NAMESPACE_SEPARATOR ? "nullptr" : NULL_STR_GENERAL;
51 }
static constexpr std::string_view CC_NAMESPACE_SEPARATOR
The C++ namespace separator.
Definition object.h:45
static constexpr std::string_view NULL_STR_GENERAL
Definition object.h:46

◆ operator!=()

bool lsst::gauss2d::EllipseMajor::operator!= ( const EllipseMajor & other) const

Definition at line 429 of file ellipse.cc.

429{ return !(*this == other); }

◆ operator==()

bool lsst::gauss2d::EllipseMajor::operator== ( const EllipseMajor & other) const

Definition at line 424 of file ellipse.cc.

424 {
425 return (get_r_major() == other.get_r_major()) && (get_axrat() == other.get_axrat())
426 && (get_angle_degrees() == other.get_angle_degrees());
427}
double get_axrat() const
Get the axis ratio.
Definition ellipse.h:364
double get_r_major() const
Get the major axis length.
Definition ellipse.h:362
double get_angle_degrees() const
Get the position angle in degrees.
Definition ellipse.h:368

◆ repr()

std::string lsst::gauss2d::EllipseMajor::repr ( bool name_keywords = false,
std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR ) const
overridevirtual

Return a full, callable string representation of this.

Parameters
name_keywordsWhether to prefix arguments with "{name}=", where name is the arg name in the header (as with keyword arguments in Python).
namespace_separatorThe string to use to delimit namespaces, i.e. :: in C++ and . in Python.
Returns
A callable string representation of this, which should return an an identical object to this.
Note
The representation with name_keywords=false must be callable in C++. The representation with name_keywords=true should be callable in Python, if there are any bindings.

Implements lsst::gauss2d::Object.

Definition at line 411 of file ellipse.cc.

411 {
412 return type_name_str<EllipseMajor>(false, namespace_separator) + "(" + (name_keywords ? "r_major=" : "")
413 + to_string_float(_r_major) + ", " + (name_keywords ? "axrat=" : "") + to_string_float(_axrat)
414 + ", " + (name_keywords ? "angle=" : "") + to_string_float(_angle) + ", "
415 + (name_keywords ? "degrees=" : "") + to_string_float(_degrees) + ")";
416}
std::string to_string_float(const T value, const int precision=6, const bool scientific=true)
Definition to_string.h:15

◆ set()

void lsst::gauss2d::EllipseMajor::set ( double r_major,
double axrat,
double angle )

Definition at line 374 of file ellipse.cc.

374 {
375 check(r_major, axrat, angle);
376 _r_major = r_major;
377 _axrat = axrat;
378 _angle = angle;
379}

◆ set_angle()

void lsst::gauss2d::EllipseMajor::set_angle ( double angle)

Definition at line 397 of file ellipse.cc.

397{ _angle = angle; }

◆ set_axrat()

void lsst::gauss2d::EllipseMajor::set_axrat ( double axrat)

Definition at line 389 of file ellipse.cc.

389 {
390 if (!(axrat >= 0 && axrat <= 1)) {
391 throw std::invalid_argument("Invalid axrat=" + to_string_float(axrat)
392 + "; 1 >= axrat >= 0 required.");
393 }
394 _axrat = axrat;
395}

◆ set_degrees()

void lsst::gauss2d::EllipseMajor::set_degrees ( bool degrees)

Definition at line 399 of file ellipse.cc.

399 {
400 if (degrees && !_degrees) {
401 _degrees = true;
402 _angle *= M_180_PI;
403 } else if (!degrees && _degrees) {
404 _degrees = false;
405 _angle *= M_PI_180;
406 }
407}

◆ set_r_major()

void lsst::gauss2d::EllipseMajor::set_r_major ( double r_major)

Definition at line 381 of file ellipse.cc.

381 {
382 if (!(r_major >= 0)) {
383 throw std::invalid_argument("Invalid r_major=" + to_string_float(r_major)
384 + "; r_major >= 0 required.");
385 }
386 _r_major = r_major;
387}

◆ set_rqa()

void lsst::gauss2d::EllipseMajor::set_rqa ( const std::array< double, 3 > & rqa)

Definition at line 409 of file ellipse.cc.

409{ this->set(rqa[0], rqa[1], rqa[2]); }
daf::base::PropertySet * set
Definition fits.cc:931

◆ str()

std::string lsst::gauss2d::EllipseMajor::str ( ) const
overridevirtual

Return a brief, human-readable string representation of this.

Implements lsst::gauss2d::Object.

Definition at line 418 of file ellipse.cc.

418 {
419 return type_name_str<EllipseMajor>(true) + "(r_major=" + to_string_float(_r_major)
420 + ", axrat=" + to_string_float(_axrat) + ", angle=" + to_string_float(_angle)
421 + ", degrees=" + to_string_float(_degrees) + ")";
422}

Member Data Documentation

◆ CC_NAMESPACE_SEPARATOR

constexpr std::string_view lsst::gauss2d::Object::CC_NAMESPACE_SEPARATOR = "::"
staticconstexprinherited

The C++ namespace separator.

Definition at line 45 of file object.h.

◆ NULL_STR_GENERAL

constexpr std::string_view lsst::gauss2d::Object::NULL_STR_GENERAL = "None"
staticconstexprinherited

Definition at line 46 of file object.h.

◆ PY_NAMESPACE_SEPARATOR

constexpr std::string_view lsst::gauss2d::Object::PY_NAMESPACE_SEPARATOR = "."
staticconstexprinherited

Definition at line 47 of file object.h.


The documentation for this class was generated from the following files: