Isis 3 Programmer Reference
Todo List
Module Geometry

Develop two different pages for API vs. Programmer documentation. 2004-11-03

Make "std" namespace invisible... probably not gonna happen

Develop two different pages for API vs. Programmer documentation. 2004-11-03

Make "std" namespace invisible... probably not gonna happen

Class Isis::Affine

Allow the programmer to apply scale and shear.

Write multiplaction method (operator*) for Affine * Affine.

Class Isis::AlphaCube
2005-04-06 Add coded example.
Member Isis::AlphaCube::ComputeSlope ()
Why the +0.5 and -0.5?
Member Isis::Application::GetEnviromentInfo ()

Replace printenv commands with c library getenv

Class Isis::Basis1VariableFunction

Add coded example

Class Isis::BasisFunction

Add coded example

Class Isis::Blob
Write class description, history, etc.
Class Isis::Brick
2005-02-28 Jeff Anderson - add coded and implementation examples to class documentation
Member Isis::BundleAdjust::fileName (int index)
: probably don't need this, can get from BundleObservation
Member Isis::BundleAdjust::flagOutliers ()
How should we handle points with few measures.
Member Isis::BundleAdjust::init (Progress *progress=0)

remove printf statements

answer comments with questions, TODO, ???, and !!!

Member Isis::BundleAdjust::initializeNormalEquationsMatrix ()
Ken Currently we are explicitly setting the start column for each block in the normal equations matrix below. I think it should be possible (and relatively easy) to make the m_sparseNormals smart enough to set the start column of a column block automatically when it is added to the matrix.
Member Isis::BundleAdjust::solveCholeskyBR ()
make solveCholesky return a BundleSolutionInfo object and delete this placeholder ???
Member Isis::BundleLidarRangeConstraint::errorPropagation ()
need more documentation on technical aspects of approach.
Class Isis::BundleObservationSolveSettings

Figure out why solve degree and num coefficients does not match solve option.

Determine whether xml stuff needs a Project pointer.

Determine which XmlStackedHandlerReader constructor is preferred.

Member Isis::BundleObservationSolveSettings::operator= (const BundleObservationSolveSettings &src)
Check this (assignment operator)
Member Isis::BundleObservationSolveSettings::save (QXmlStreamWriter &stream, const Project *project) const
Does xml stuff need project???
Class Isis::BundleObservationSolveSettings::XmlHandler
To be docuemnted if XML handler code is used for serialization.
Member Isis::BundleObservationSolveSettings::XmlHandler::characters (const QString &ch)
Document if we use Xml handlers for serialization.
Member Isis::BundleObservationSolveSettings::XmlHandler::endElement (const QString &namespaceURI, const QString &localName, const QString &qName)
Document if we use Xml handlers for serialization.
Member Isis::BundleObservationSolveSettings::XmlHandler::startElement (const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
Document if we decide to use Xml handlers for serialization
Member Isis::BundleObservationSolveSettings::XmlHandler::XmlHandler (BundleObservationSolveSettings *settings, Project *project)
Does xml stuff need project???
Member Isis::BundleObservationViewWorkOrder::execute ()
When BundleObservation is serialized, get the BundleObservation and pass into Directory::addBundleObservationView.
Class Isis::BundleSettings

Determine which XmlStackedHandlerReader constructor is preferred

Determine which XmlStackedHandler needs a Project pointer (see constructors)

Determine whether QList<BundleObservationSolveSettings> m_observationSolveSettings should be a list of pointers, or a pointer to a list, or a pointer to a list of pointers, etc...

Determine whether QList< QPair< MaximumLikelihoodWFunctions::Model, double > > m_maximumLikelihood should be a list of pointers, or a pointer to a list, or a pointer to a list of pointers, etc...

TargetBody information is not being serialized. A determination needs to be made as to where it will be stored.

Member Isis::BundleSolutionInfo::outputHeader (std::ofstream &fpOut)
Determine how multiple sensor solve settings should be output.
Class Isis::Camera
Finish documentation.
Member Isis::Camera::ComputeAzimuth (const double lat, const double lon)
Write PushState and PopState method to ensure the internals of the class are set based on SetImage or SetGround
Member Isis::Camera::SpacecraftAzimuth ()
Get appropriate radius at the subscraft point
Member Isis::Camera::SunAzimuth ()
Get appropriate radius at the subsolar point
Member Isis::CameraDistortionMap::SetDistortion (int naifIkCode)

Generalize to read variable number of coefficients

Add latex equation to the documentation

Member Isis::CameraDistortionMap::SetFocalPlane (double dx, double dy)
Generalize polynomial equation
Member Isis::CameraDistortionMap::SetUndistortedFocalPlane (double ux, double uy)

Generalize polynomial equation

Figure out a better solution for divergence condition

Member Isis::CameraSkyMap::SetSky (const double ra, const double dec)

what happens if we are looking behind the focal plane?????

what happens if we are looking parallel to the focal plane??

can lookC[2] == zero imply parallel

can this all be solved by restricting the physical size of the focal plane?

Member Isis::Chip::Read (Cube &cube, const int band)
We could modify the affine class to return the coefficients and then compute the derivative of the change in cube sample and line with respect to chip sample or line. The change might make the geom run a bit faster.
Class Isis::ControlMeasureEditWidget
Re-think design of the change made on 2012-07-26. The linking was put into updateLeftPositionLabel because it was the fastest solution, but should this be put somewhere else.
Member Isis::ControlPoint::constraintStatus
Eventually add x, y, and z. Instead we made generic coordinates
Member Isis::ControlPoint::SetAprioriSurfacePoint (SurfacePoint aprioriSP)
This method needs to be revisited. It will set the constraint status based on the sigmas and override the existing status.
Class Isis::ControlPointEdit
Re-think design of the change made on 2012-07-26. The linking was put into updateLeftPositionLabel because it was the fastest solution, but should this be put somewhere else.
Member Isis::CSMSkyMap::SetSky (const double ra, const double dec)

what happens if we are looking behind the focal plane?????

what happens if we are looking parallel to the focal plane??

can lookC[2] == zero imply parallel

can this all be solved by restricting the physical size of the focal plane?

Class Isis::CTXCamera

Allow the programmer to apply scale and shear.

Write multiplaction method (operator*) for Affine * Affine.

Class Isis::Cube

There are undocumented methods and private variables in the Cube class. Also, it needs an example.

Class Isis::CubeDataThread
Add state recording/reverting functionality
Union Isis::DBL_UNION
2005-02-15 Kris Becker - finish class documentation
Member Isis::Directory::initializeActions ()
2017-02-14 Tracie Sucharski - As far as I can tell the created menus are never used. Instead of creating menus to use the addAction method, can't we simply create actions and add them to the member variables which save the list of actions for each menu?
Class Isis::EndianSwapper

This class needs an example.

Class Isis::ExportPdsTable
This class is currently only exporting BINARY format PDS tables. Implementation may be added later to export ASCII PDS tables.
Class Isis::FileName

This class needs an example.

Class Isis::FilterWidget
Add type safety to filter types.
Class Isis::Footprint2DViewWorkOrder
Some thought should probably be given to whether we actually want view WorkOrders to be saved in the history.
Class Isis::FramingCamera
Implement more functionality in this class and abstract away from the children
Class Isis::Histogram

This class needs an example.

Class Isis::History
This class needs documentation.
Member Isis::Hyb2OncDistortionMap::SetFocalPlane (double dx, double dy)
Generalize polynomial equation
Member Isis::Hyb2OncDistortionMap::SetUndistortedFocalPlane (double ux, double uy)

Generalize polynomial equation

Figure out a better solution for divergence condition

Class Isis::ImportPdsTable
The binary table import methods were written after the ascii table import. The class should be better organized so that the programmer does not need to know which methods to call based on INTERCHANGE_FORMAT. The program should take care of this internally.
Class Isis::Interpolator

This class needs an example.

Member Isis::Interpolator::BiLinear (const double isamp, const double iline, const double buf[])
Add a
Member Isis::Interpolator::CubicConvolution (const double isamp, const double iline, const double buf[])
Add a
Member Isis::Interpolator::Interpolate (const double isamp, const double iline, const double buf[])
Add a
Member Isis::Interpolator::NearestNeighbor (const double isamp, const double iline, const double buf[])
Add a
Member Isis::JP2Importer::getPixel (int s, int l) const
This design was created before it was determined that JPEG 2000 does not have a traditional pixel representation used to get color components, so this is somewhat of a hack.
Member Isis::JunoDistortionMap::SetFocalPlane (double dx, double dy)
Generalize polynomial equation
Member Isis::KaguyaTcCameraDistortionMap::SetUndistortedFocalPlane (double ux, double uy)

Generalize polynomial equation

Figure out a better solution for divergence condition

Class Isis::LinearAlgebra

document methods (a) add naif routine names to documentation where appropriate, (b) clean up comments within methods, (3) use naif documentation where appropriate

add links to naif documentation web pages???

add proper scopes

implement norm2 (L2 norm)?

implement trace?

common validate errors - vector size match, 3x3 matrix, 3D vector

what is more expensive - unitize vector and compare to 1 or isOrthogonal?

rename local variables m2q and q2m

implement qdq2av (Quaternion and quaternion derivative to angular velocity)?

implement qxq (Quaternion times quaternion)?

implement qderiv (Quadratic derivative)?

When converting quaternion, axis-angle, Euler angle to rot matrix, should we verify that the matrix is valid (is a rotation matrix)???

isQuaternion???

should we throw error in q2m if q = 0???

q2m - why check if sharpen when q is not unit if it is required to be a unit? throw an error?

axisar - throw error if axis is origin? If we rotate about about origin, then we get a zero matrix - not a rotation... except maybe trivially... (or do we get identity??? indicating no rotation)

double check all indexing on code copied from NAIF - indices should reverse col/row order and subtract 1

Class Isis::LineEquation
Add constructor with arguments (double slope, double intercept) Add method to double y = EvaluateLine( double x )
Class Isis::LineScanCamera
Implement more functionality in this class and abstract away from the children
Member Isis::LineScanCameraSkyMap::SetSky (const double ra, const double dec)

what happens if we are looking behind the focal plane?????

what happens if we are looking parallel to the focal plane??

can lookC[2] == zero imply parallel

can this all be solved by restricting the physical size of the focal plane?

Member Isis::LroNarrowAngleDistortionMap::SetFocalPlane (const double dx, const double dy)
Generalize polynomial equation
Member Isis::LroWideAngleCameraDistortionMap::SetFocalPlane (const double dx, const double dy)
Generalize polynomial equation
Member Isis::LroWideAngleCameraDistortionMap::SetUndistortedFocalPlane (const double ux, const double uy)

Generalize polynomial equation

Figure out a better solution for divergence condition

Member Isis::MarciDistortionMap::SetFocalPlane (const double dx, const double dy)
Generalize polynomial equation
Member Isis::MarciDistortionMap::SetUndistortedFocalPlane (const double ux, const double uy)

Generalize polynomial equation

Figure out a better solution for divergence condition

Class Isis::MultivariateStatistics

This class needs an example.

For the below methods we will need to compute log x, loy y, sumx3, sumx4,sumx2y: void ExponentialRegression (double &a, double &b) const; void PowerRegression (double &a, double &b) const; void parabolicRegression (double &a, double &b, double &c);

Member Isis::MultivariateStatistics::RemoveData (const double *x, const double *y, const unsigned int count)
The description for param y doesn't make sense here. -Leah
Class Isis::NaifDskShape
Remove Model from name to match other derived classes
Class Isis::ObservationNumber
This is only a temporary version. The code needs to be modified to use a PVL file to determine which keywords to use to create the Serial Number
Class Isis::PolynomialBivariate

2005-03-11 Jeff Anderson - add coded and implementation examples to class documentation

Class Isis::Preference

The Preference class needs private methods & variables documented. The documentation shows methods that don't exist in the code. It also needs an example.

Class Isis::ProcessByTile
2005-02-08 Jeff Anderson - add coded example, and implementation example to class documentation
Class Isis::ProcessExport

2005-02-09 Stuart Sides - write documentation for CreateWorldFile method

2005-02-09 Jeff Anderson - add coded example to class file and implementation examples

Class Isis::ProcessImportPds

2005-02-09 Finish documentation-lots of holes with variable definitions in .h file and .cpp methods, and insert implementation example

Class Isis::ProcessMapMosaic

2005-02-11 Stuart Sides - add coded example and implementation example to class documentation

Class Isis::ProcessRubberSheet
2005-02-11 Stuart Sides - finish documentation and add coded and implementation example to class documentation
Class Isis::Projection
Continue to modify Projection class to comply with coding standards. Some of these include, but may not be limited to remove "Get" from methods GetX and GetY, change methods to lower camel case, add methods for RelativeScaleFactorLatitude and RelativeScaleFactorLongitude (see LambertAzimuthalEqualArea.cpp).
Class Isis::PushFrameCamera
Implement more functionality in this class and abstract away from the children
Class Isis::PvlGroup
2005-04-04 Needs coded example.
Class Isis::PvlSequence
Add PvlSequence(PvlKeyword) constructor so that we can code PvlSequence s = k; where k is a PvlKeyword.
Class Isis::PvlToken
2005-02-14 Jeff Anderson - add coded and implemetation example to class documentation
Class Isis::PvlTokenizer
2005-02-14 Jeff Anderson - finish class documentation and add coded and implementation examples
Class Isis::PvlToPvlTranslationManager
2005-02-15 Stuart Sides - add coded example and implementation example to class documentation, and finish documentation.
Class Isis::PvlTranslationTable
2005-02-15 Stuart Sides - add coded and implementation example to class documentation and finish documentation for protected methods and variable
Member Isis::QnetNavTool::aprioriDialog ()
This method should be temporary until the control point editor comes online. If this stick around, needs to be re-designed- put in a separate class??
Class Isis::QnetPointMeasureFilter
Add ability to filter points without a Reference.
Member Isis::QnetTool::createToolBarWidget (QStackedWidget *parent)
Find a way to enable Show Nav Button even when there are no images open in the main window.
Class Isis::QuickFilter

2005-02-15 Jeff Anderson - add coded example to class documentation

2005-05-23 Jeff Anderson - Unlikely but we may have issues with 2GB+ cubes. It's unlikely because the boxcar size would have to have more than 2^32-1 pixels.

Class Isis::RadarCamera
Implement more functionality in this class and abstract away from the children
Class Isis::RingPlaneProjection
Continue to modify Projection class to comply with coding standards. Some of these include, but may not be limited to remove "Get" from methods GetX and GetY, change methods to lower camel case, add methods for RelativeScaleFactorLatitude and RelativeScaleFactorLongitude (see LambertAzimuthalEqualArea.cpp).
Class Isis::SerialNumber
This is only a temporary version. The code needs to be modified to use a PVL file to determine which keywords to use to create the Serial Number
Class Isis::SpiceRotation

Downsize using Hermite cubic spline and allow Nadir tables to be downsized again.

Consider making this a base class with child classes based on frame type or storage type (polynomial, polynomial over cache, cache, etc.)

Class Isis::Statistics

2005-02-07 Deborah Lee Soltesz - add example using cube data to the class documentation

2015-08-13 Jeannie Backer - Clean up header and implementation files once serialization is implemented. (Remove xml, data stream, hdf, etc)

Class Isis::SurfaceModel
Add plot and/or visualize method
Class Isis::TableField
Finish class documentation
Class Isis::TableRecord
Finish class documentation
Member Isis::TaylorCameraDistortionMap::SetFocalPlane (const double dx, const double dy)

Review the tolerance and maximum iterations of the root- finding algorithm.

Review the handling of non-convergence of the root-finding algorithm.

Add error handling for near-zero determinant.

Class Isis::TextFile
2005-02-16 Glenn Bennett - add coded and implementation examples, and finish documentation
Class Isis::ThemisVisCamera
2014-08-22 Jeannie Backer - THEMIS cameras do not appear to import a ReferenceBand keyword neither in the thm2isis source code nor in its translation tables. In this camera model, BandEphemerisTimeOffset() does a check for HasReferenceBand(), which will always be false since ReferenceBand doesn't exist. We should consider removing this unnecessary check from the camera model or import a ReferenceBand upon ingestion.
Class Isis::TiffImporter

Read chunks of the image into memory at a time, not the entire image.

Add all ISIS projection to the convertProjection member.

Member Isis::TiffImporter::convertProjection () const
Generalize this and make it work for all ISIS projections (preferably without changes when new projections are added to ISIS)
Class Isis::TileManager
2005-05-23 Jeff Anderson - There could be problems with 2GB files if the tile size is very small, 1x1, 2x1, 1x2. Should we worry about this?
Class Isis::TProjection

Continue to modify Projection class to comply with coding standards. Some of these include, but may not be limited to remove "Get" from methods GetX and GetY, change methods to lower camel case, add methods for RelativeScaleFactorLatitude and RelativeScaleFactorLongitude (see LambertAzimuthalEqualArea.cpp).

Class Isis::Transform
2005-02-22 Stuart Sides - finish documentation
Class Isis::UniversalGroundMap

Jeff Anderson - Finish Class Documentation

Class Isis::WorldMapper
2005-02-22 Jeff Anderson - add coded example to class documentation
Class IsisAml

This class needs an example.

Member IsisAml::IsisAml (const QString &xmlfile)
This namespace needs documentation.