Source code for attitude.geom.test_errors

from __future__ import division

import numpy as N
from .util import vector, plane
from .conics import conic
from ..error import asymptotes

same = N.allclose

[docs]def test_conic_errors(): pca_res = N.array([500,300,2])**2 pca_res = 1/pca_res arr = N.identity(4) arr[0,0] = pca_res[0] arr[1,1] = pca_res[1] arr[2,2] = -pca_res[2] arr[3,3] = -1 hyp = conic(arr) assert same(hyp.center(), vector(0,0,0)) assert hyp.is_hyperbolic() # Plotting hyperbolic slice # Get hyperbolic slice on xz plane n = vector(0,1,0) p = plane(n) # Make sure plane is realistic assert same(p.normal(),n) assert same(p.offset(),vector(0,0,0)) h1, rotation, offset = hyp.slice(p) assert h1.is_hyperbolic() d = N.abs(N.diagonal(h1)[:-1]) axes = N.sqrt(1/d) assert same(axes,N.array([500,2])) u = lambda x: N.arcsinh(x/axes[0]) y = lambda x: axes[1]*N.cosh(u(x)) assert y(0) == axes[1] # Plotting asymptotes vec = asymptotes(hyp, n=1000) assert len(vec) == 1000 assert same(vec[0,0], pca_res[0])