Closed GoogleCodeExporter closed 8 years ago
Current implementation of plot_ia/ea methods in ReachContinuous is incorrect as
it plots the ellipsoidal tubes instead of reach tube approximated by these
tubes.
Please
1) study plot_ia/ea method of legacy "reach" class and make sure that you
understand how they work. The idea is that plot_ia plots a convex hull of
ellipsoidal tubes union, while plot_ea plots an intersection of ellipsoidal
tubes.
2) Create two methods in EllTubeProj class - plotInt and plotExt. These methods
should a) use the internal/external tubes stored in the relation
b) use relation plotter
c) be implemented without a code copy-pasting. legacy plot_ia/ea methods are
quite similar (though there are differences). Thus when implementing plotInt
and plotExt methods in EllTubeProj you need to make sure that these methods
call the same private method that contains the most of the source code.
3) Make plot_ia/ea methods of ReachContinuous call plotInt and plotExt of
ellTubeRel stored in reach object.
4)plot_ea and plot_ia methods in elltool.reach.ReachContinuous have to be
implemented in a such way that allows 'hold on' and 'hold off' functions work
correctly.
For example, if you run 'ell_demo3' you will find that axes provided by plot
methods ignore 'hold on' right now. This needs to be fixed.
Original comment by heartofm...@gmail.com
on 19 May 2013 at 6:42
1) In rhomat function please use gras.gen.sqrtpos instead of sqrt as the latter
can produce complex values when Q has close-to-zero eigen values which results
in (l,Ql) being slightly-negative. sqrtpos deals with such situations correctly.
2) in plotExt
a) can calcGrid only once and use
nPlot2dPoints
nPlot3dPoints
properties instead of constnants. Default values are taken from
xml configuration edited via elltool.editconf.
If you need to change the default values - create a patch for xml configuraiton (you can
use already exisisting patches as example).
b) The way you form allEllMat is suboptimal, use the following technique:
allEllMat=cat(4,self.QArray{:});
This way the forth dimension will corresond to tube index.
If you need the tube index to be the first - use shiftdim afterwards
And please remove all arrayfun calls, they are not needed.
c) I do not understand what you need "allEll2Mat = allEllMat(:,:,:,end);" for.
The reason is that cut will produce a tube with length(timeVec)=1 so end=1.
I suggest you just throw an exception if length(timeVec) is not equal to 1
d) What you do with arrayfun and getEll3Mat is just swapping dimensions.
This can be done via a single call of shiftdim.
e) Even ellipsoids with trace(aMat) need to be displayed as patch objects
with just one vertex and one facet. This is needed for both simplifying writing
the tests
and being able to see even such empty-interior ellipsoids in plot browser.
d) I still not sure that support-function based algorithm is a good idea because
of the reasons described a few days ago. I suggest you write a simple test
that tries to visualize an ellipsoid with bad-conditioned matrix,
diag(10,0.1,0.1) for instance.
You will see how badly the support function algorithm works for such cases.
e) Please start writing the tests in parallel with implementation. I really
believe that
it will save your time.
Original comment by heartofm...@gmail.com
on 14 Jun 2013 at 6:54
Update for 1)
Please have a look at fSingleRhoForOneEll subfunction in ellipsoid.rho - I
believe that this code needs to be moved to rhomat and rho needs to be made to
use rhomat.
Also, after moving rhomat from ellipsoid class to a separate package you
haven't fixed all references as there are many places in ellipsoid class that
use this function. Since this function is separate now it needs to be covered
with tests, they can be simple but still, we need them. Finally, please change
an order of input arguments in this function:
(shapeMat,dirsMat,absTol,centerVec). This way we can make both absTol and
centerVec optional and you won't need to write "zeros(size(tempEll,1),1)" which
is suboptimal.
Original comment by heartofm...@gmail.com
on 14 Jun 2013 at 7:06
How does showDiscrete work?
Original comment by heartofm...@gmail.com
on 25 Jun 2013 at 12:29
if showDiscrete is true, after displaying all tube (1 object) drawing
ellipsoids in every moment with red color(1 object for all ellipsoids).
Original comment by lubi...@gmail.com
on 25 Jun 2013 at 12:32
Original comment by lubi...@gmail.com
on 29 Jun 2013 at 8:41
Original comment by lubi...@gmail.com
on 29 Jun 2013 at 11:17
Original comment by lubi...@gmail.com
on 1 Jul 2013 at 4:41
ReadyForReintegration status is only for me to use.
I investigated the failure of one of the tests and provided an answer via
email.
Also, I found a few problems with variable names, going to use google code
review mechanics to mark them (you should received a notification).
Original comment by heartofm...@gmail.com
on 1 Jul 2013 at 6:46
Btw - have you added the tests for labels? If so - please tell me where I can
find them.
Original comment by heartofm...@gmail.com
on 1 Jul 2013 at 6:47
plotByEa/plotByIa shold be documented in IReach so that both ReachContinuous
and ReachDiscrete inherit those documentations. There is already a documentaion
for plotIa/Ea but it is a bit outdates as color and other properties no longer
passed as a structure. Thus please fix the help headers for plotIa/Ea in IReach
and then use them to write the docs in plotByIa/Ea. At the end use help ....
ReachDiscrete.plotByEa/Ia to make sure that the help is inherited correct.y
Original comment by heartofm...@gmail.com
on 1 Jul 2013 at 7:34
One more thing - plotByEa/Ia for ReachDiscrete should pass 'showDiscrete' =
true. To do that I think you need to make protByApprox "protected" instead of
public as right now. Then you need to overwrite plotByApprox in ReachDiscrete
passing showDiscrete=true into plotIa/Ea. When doing so please avoid
copy-pasting the code of plotByApprox from AReach, instead of please
parametrize plotByApprox with showDiscrete property (or just optional
parameter) and pass showDiscrete from the overwritten version of plotByApporox
into AReach.plotByApporx. Also, please create
elltool.reach.test.mlunit.DiscreteReachPlotTestCase inherited from
elltool.reach.test.mlunit.ReachPlotTestCase and add a special test there what
checks for presence of discrete patch in plObj. In run_discrete_tests please
make sure the replace elltool.reach.test.mlunit.ReachPlotTestCase with
elltool.reach.test.mlunit.DiscreteReachPlotTestCase
Original comment by heartofm...@gmail.com
on 1 Jul 2013 at 7:41
Original comment by lubi...@gmail.com
on 2 Sep 2013 at 2:06
Details were sent via email
Original comment by heartofm...@gmail.com
on 3 Sep 2013 at 9:10
Original comment by lubi...@gmail.com
on 7 Sep 2013 at 8:01
Original comment by heartofm...@gmail.com
on 9 Sep 2013 at 9:29
Original issue reported on code.google.com by
heartofm...@gmail.com
on 19 May 2013 at 2:38