>
> beowulf zhang <
beowulf.zhang@gmail.com> a écrit :
>
> > Very good! Thank you...
> >
> > I konw the m language of Matlab support java programming now, but I
> > was failure to test the orekit examples. I want to know whether anyone
> > are interesting testing the orekit examples in Matlab or not.
>
> If you want to test these examples, I would be interested to know if
> they work.
> We could set up some wiki pages (yes, we know, the wiki is quite empty
> for now) showing how to interface with several scripting languages.
>
> Luc
>
> >
> >
> > 2011/5/17, Petrus Hyvönen <
petrus.hyvonen@gmail.com>:
> >> Hi all,
> >>
> >> I was playing around with the idea of using Python for mission design, and
> >> found Jython and the orekit library. As new to both Python and Java, I had
> >> some initial troubles of getting things to work, primary the access to
> >> orekit-data, what was current dir and javapaths etc. I am now using Eclipse
> >> with pydev extension, and can add the orekit jars and orekit-data to the
> >> eclipse project.
> >>
> >> As an exercise I took the liberty to translate a few of the orekit examples
> >> from java to jython, and copy them below as it could be of interest for
> >> others. I have been exploring scipy before (based on regular python) and it
> >> contains very good plotting and array routines, which is not available in
> >> jython. So next step would be to find a suitable java plotting and arrays
> >> library to be able to represent the results.
> >>
> >> Regards
> >> /Petrus
> >>
> >> First, a jython translation of the SlaveMode.java:
> >> __________________________________________
> >>
> >> # -*- coding: utf-8 -*-
> >> '''
> >> /* Copyright 2002-2010 CS Communication & Systèmes
> >> * Licensed to CS Communication & Systèmes (CS) under one or more
> >> * contributor license agreements. See the NOTICE file distributed with
> >> * this work for additional information regarding copyright ownership.
> >> * CS licenses this file to You under the Apache License, Version 2.0
> >> * (the "License"); you may not use this file except in compliance with
> >> * the License. You may obtain a copy of the License at
> >> *
> >> *
http://www.apache.org/licenses/LICENSE-2.0
> >> *
> >> * Unless required by applicable law or agreed to in writing, software
> >> * distributed under the License is distributed on an "AS IS" BASIS,
> >> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >> * See the License for the specific language governing permissions and
> >> * limitations under the License.
> >> */
> >>
> >> Translated from SlaveMode.java to jython by Petrus Hyvönen 2011-05-04
> >> '''
> >>
> >> # orekit.jar,orekit-data.zip and commons-maths in CLASSPATH through eclipse
> >> project
> >> import java, os
> >>
> >> from org.orekit.errors import OrekitException
> >> from org.orekit.frames import Frame
> >> from org.orekit.frames import FramesFactory
> >> from org.orekit.orbits import KeplerianOrbit
> >> from org.orekit.orbits import Orbit
> >> from org.orekit.propagation import SpacecraftState
> >> from org.orekit.propagation.analytical import KeplerianPropagator
> >> from org.orekit.data import DataProvidersManager
> >> from org.orekit.data import ZipJarCrawler
> >> from org.orekit.time import AbsoluteDate
> >> from org.orekit.time import TimeScalesFactory
> >>
> >> from math import radians
> >>
> >> # Configure Orekit. The file orekit-data.zip must be in current dir
> >> DM = DataProvidersManager.getInstance()
> >> crawler=ZipJarCrawler("orekit-data.zip")
> >> DM.clearProviders()
> >> DM.addProvider(crawler)
> >>
> >> #Initial orbit parameters
> >> a = 24396159 # semi major axis in meters
> >> e = 0.72831215 # eccentricity
> >> i = radians(7.0)# inclination
> >> omega = radians(180) # perigee argument
> >> raan = radians(261) #right ascension of ascending node
> >> lM = 0.0 # mean anomaly
> >>
> >> #Inertial frame
> >> inertialFrame = FramesFactory.getEME2000()
> >>
> >> #Initial date in UTC time scale
> >> utc = TimeScalesFactory.getUTC();
> >> initialDate = AbsoluteDate(2004, 01, 01, 23, 30, 00.000, utc)
> >>
> >> #gravitation coefficient
> >> mu = 3.986004415e+14
> >>
> >> #Orbit construction as Keplerian
> >> initialOrbit = KeplerianOrbit(a, e, i, omega, raan, lM,
> >> KeplerianOrbit.MEAN_ANOMALY,
> >> inertialFrame, initialDate, mu)
> >>
> >> #Simple extrapolation with Keplerian motion
> >> kepler = KeplerianPropagator(initialOrbit)
> >>
> >> #Set the propagator to slave mode (could be omitted as it is the default
> >> mode)
> >> kepler.setSlaveMode()
> >>
> >> #Overall duration in seconds for extrapolation
> >> duration = 90*60.0
> >>
> >> #Stop date
> >> finalDate = AbsoluteDate(initialDate, duration, utc)
> >>
> >> #Step duration in seconds
> >> stepT = 30.0
> >>
> >> #Extrapolation loop
> >> cpt = 1
> >> extrapDate = initialDate
> >> while extrapDate.compareTo(finalDate) <= 0:
> >> currentState = kepler.propagate(extrapDate)
> >> print "step %d: time %s %s" % (cpt, currentState.getDate(),
> >> currentState.getOrbit())
> >> extrapDate = AbsoluteDate(extrapDate, stepT, utc)
> >> cpt=cpt+1
> >>
> >>
> >> ____________________________
> >>
> >> An interesting example of jython inheritance of java class:
> >> _____________________________
> >>
> >>
> >> # -*- coding: utf-8 -*-
> >> '''
> >> /* Copyright 2002-2010 CS Communication & Syst?mes
> >> * Licensed to CS Communication & Syst?mes (CS) under one or more
> >> * contributor license agreements. See the NOTICE file distributed with
> >> * this work for additional information regarding copyright ownership.
> >> * CS licenses this file to You under the Apache License, Version 2.0
> >> * (the "License"); you may not use this file except in compliance with
> >> * the License. You may obtain a copy of the License at
> >> *
> >> *
http://www.apache.org/licenses/LICENSE-2.0
> >> *
> >> * Unless required by applicable law or agreed to in writing, software
> >> * distributed under the License is distributed on an "AS IS" BASIS,
> >> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >> * See the License for the specific language governing permissions and
> >> * limitations under the License.
> >> */
> >>
> >> Translated from SlaveMode.java to jython by Petrus Hyv?nen 2011-05-04
> >> '''
> >> # orekit and common maths in CLASSPATH through eclipse project
> >> import java, os
> >>
> >> from org.orekit.data import DataProvidersManager
> >> from org.orekit.data import ZipJarCrawler
> >> from org.apache.commons.math.geometry import Vector3D
> >> from org.orekit.bodies import BodyShape
> >> from org.orekit.bodies import GeodeticPoint
> >> from org.orekit.bodies import OneAxisEllipsoid
> >> from org.orekit.errors import OrekitException;
> >> from org.orekit.frames import Frame
> >> from org.orekit.frames import FramesFactory
> >> from org.orekit.frames import TopocentricFrame
> >> from org.orekit.orbits import KeplerianOrbit
> >> from org.orekit.orbits import Orbit
> >> from org.orekit.propagation import Propagator
> >> from org.orekit.propagation import SpacecraftState
> >> from org.orekit.propagation.analytical import KeplerianPropagator
> >> from org.orekit.propagation.events import ElevationDetector
> >> from org.orekit.propagation.events import EventDetector
> >> from org.orekit.time import AbsoluteDate
> >> from org.orekit.time import TimeScalesFactory
> >> from org.orekit.utils import PVCoordinates
> >>
> >> from math import degrees, radians, pi
> >>
> >> # Configure Orekit
> >> DM = DataProvidersManager.getInstance()
> >> crawler=ZipJarCrawler("orekit-data.zip")
> >> DM.clearProviders()
> >> DM.addProvider(crawler)
> >>
> >> # Initial state definition: date, orbit
> >> initialDate = AbsoluteDate(2004, 01, 01, 23, 30, 00.000,
> >> TimeScalesFactory.getUTC())
> >> mu = 3.986004415e+14
> >> inertialFrame = FramesFactory.getEME2000() # inertial frame for orbit
> >> definition
> >> position = Vector3D
(-6142438.668, 3492467.560, -25767.25680)
> >> velocity = Vector3D
(505.8479685, 942.7809215, 7435.922231)
> >> pvCoordinates = PVCoordinates(position, velocity)
> >> initialOrbit = KeplerianOrbit(pvCoordinates, inertialFrame, initialDate, mu)
> >>
> >> # Propagator : consider a simple keplerian motion (could be more elaborate)
> >> kepler = KeplerianPropagator(initialOrbit)
> >>
> >> #Earth and frame
> >> ae = 6378137.0 # // equatorial radius in meter
> >> f = 1.0 / 298.257223563 #; // flattening
> >> ITRF2005 = FramesFactory.getITRF2005() #; // terrestrial frame at an
> >> arbitrary date
> >> earth = OneAxisEllipsoid(ae, f, ITRF2005)
> >>
> >> # Station
> >> longitude = radians(45.0)
> >> latitude = radians(25.0)
> >> altitude = 0.0
> >> station1 = GeodeticPoint(latitude, longitude, altitude)
> >> sta1Frame = TopocentricFrame(earth, station1, "station1")
> >>
> >> # Event definition
> >> maxcheck = 1.0
> >> elevation = radians(5.0)
> >>
> >>
> >> class VisibilityDetector(ElevationDetector):
> >> # Class for handling the eventOccured java. Example of subclassing
> >> # a java class in jython
> >> def __init__(self, maxCheck, elevation, topo):
> >> ElevationDetector.__init__(self,maxCheck, elevation, topo)
> >>
> >> def eventOccurred(self, s, increasing):
> >> if (increasing):
> >> print "Visibility on", self.topocentricFrame.getName(),"begins
> >> at" , s.getDate()
> >> else:
> >> print "Visibility on", self.topocentricFrame.getName(), "ends
> >> at" , s.getDate()
> >> return self.CONTINUE
> >>
> >> sta1Visi = VisibilityDetector(maxcheck, elevation, sta1Frame)
> >>
> >> #Add event to be detected
> >> kepler.addEventDetector(sta1Visi)
> >>
> >> #Propagate from the initial date to the first raising or for the fixed
> >> duration
> >> finalState = kepler.propagate(initialDate.shiftedBy(1500.0))
> >>
> >> print "Final state : " , finalState.getDate().durationFrom(initialDate)
> >>
> >> _________________________________
> >>
> >>
> >>
> >
> >
>
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>