1 /* Copyright 2013-2016 CS Systèmes d'Information
2 * Licensed to CS Systèmes d'Information (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * CS licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.orekit.rugged.los;
18
19 import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
20 import org.apache.commons.math3.geometry.euclidean.threed.FieldVector3D;
21 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
22 import org.orekit.rugged.utils.ParametricModel;
23 import org.orekit.time.AbsoluteDate;
24
25 /** Interface representing a line-of-sight which depends on time.
26 * @see org.orekit.rugged.linesensor.LineSensor
27 * @author Luc Maisonobe
28 */
29 public interface TimeDependentLOS extends ParametricModel {
30
31 /** Get the number of pixels.
32 * @return number of pixels
33 */
34 int getNbPixels();
35
36 /** Get the line of sight for a given date.
37 * @param index los pixel index
38 * @param date date
39 * @return line of sight
40 */
41 Vector3D getLOS(int index, AbsoluteDate date);
42
43 /** Get the line of sight and its partial derivatives for a given date.
44 * <p>
45 * This method is used for LOS calibration purposes. It allows to compute
46 * the Jacobian matrix of the LOS with respect to the parameters, which
47 * are typically polynomials coefficients representing rotation angles.
48 * These polynomials can be used for example to model thermo-elastic effects.
49 * </p>
50 * <p>
51 * Note that in order for the partial derivatives to be properly set up, the
52 * {@link #setEstimatedParameters(double[], int, int) setEstimatedParameters}
53 * <em>must</em> have been called at least once before this method and its
54 * {@code start} parameter will be used to ensure the partial derivatives are
55 * ordered in the same way in the returned vector as they were in the set
56 * parameters.
57 * </p>
58 * @param index los pixel index
59 * @param date date
60 * @param parameters current estimate of the adjusted parameters
61 * @return line of sight, and its first partial derivatives with respect to the parameters
62 */
63 FieldVector3D<DerivativeStructure> getLOS(int index, AbsoluteDate date, double[] parameters);
64
65 }