LSST Applications 28.0.0,g04a91732dc+39818242a5,g07dc498a13+fb7087bc2f,g1409bbee79+fb7087bc2f,g1a7e361dbc+fb7087bc2f,g1fd858c14a+9df69a7481,g2f761dc78e+ee57be4232,g33399d78f5+cf93122263,g35bb328faa+e55fef2c71,g3bd4b5ce2c+ef8ce2d39b,g3dabb73f91+b2cce74dd5,g53246c7159+e55fef2c71,g60b5630c4e+ee57be4232,g78460c75b0+8427c4cc8f,g786e29fd12+307f82e6af,g8534526c7b+8e1c6b434f,g89139ef638+fb7087bc2f,g8b49a6ea8e+ee57be4232,g9125e01d80+e55fef2c71,g989de1cb63+fb7087bc2f,g9f33ca652e+f0b312e6e5,gaaedd4e678+fb7087bc2f,gabe3b4be73+9c0c3c7524,gb1101e3267+d435cc4fc1,gb58c049af0+28045f66fd,gca43fec769+e55fef2c71,gcb3d4e2347+ddf8d02623,gce7788e931+df5c03e1ec,gcf25f946ba+cf93122263,gd6cbbdb0b4+f6e5445f66,gdd34b64689+048800d0b1,gdd9490a0bf+839504dd15,gde0f65d7ad+4bc93f0fff,ge278dab8ac+b4c2c8faf7,geab183fbe5+ee57be4232,gec3dcf77f0+e7bc33f3ea,gecb8035dfe+1f480bec5e,gf58bf46354+e55fef2c71,gfe7187db8c+5ba3c588d8
LSST Data Management Base Package
Loading...
Searching...
No Matches
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 type_name_str(bool strip_namespace=false, std::string_view namespace_str=detail::NAMESPACE_SEPARATOR)
Get a string representation of an arbitrary C++ type, potentially modifying its namespace prefix.
Definition type_name.h:104
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

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

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

Definition at line 46 of file object.h.

◆ PY_NAMESPACE_SEPARATOR

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: