Exemplo n.º 1
0
  def M(self,m,m0,b):
      
      from numpy import nditer, ones
      from collections import deque
      
      r0  = self.args["r0"]
      K   = self.args["K"]

      # Ambartsumian–Chandrasekhar H -function - second-order aproximation:
      H_o2 = vec( lambda x: 1e0/(1e0 - w*x*(r0 + 0.5*(1e0 - 2e0*r0*x)*log((1e0 + x)/(x + TINY)) )) )

      # Double Factorial
      fac = vec( lambda n: reduce(int.__mul__,range(n,0,-2)) )

      # Odd coeficient:
      A = vec( lambda n: (1/n)*(fac(n)/fac(n+1))*(-1)**(0.5*(n+1)) )

      # Pn --> Legendre polynomials
      o = arange(1,order,2)  # odd

      A_b  = A(o)*b
      iP   = 1e0 - sum(A_b*A(o))

      P_m0 = ones(m0.shape)
      P_m  = ones(m0.shape)

      for i, n in enumerate(o):
          P_m0 = P_m0 + A_b[i]*P(n)(m0)
          P_m  = P_m  + A_b[i]*P(n)(m) 
          
      return P_m0*(H_o2(m/K) - 1e0) + P_m*(H_o2(m0/K) - 1e0) + iP*(H_o2(m/K) - 1e0)*(H_o2(m0/K) - 1e0)
    def predict(self, test_X):
        dataset = self.__dataset
        intercept = self.__intercept
        XX_inv = self.__XX_inv
        beta = self.__beta

        train_X = sm.add_constant(
            dataset[:, :-1]) if intercept else dataset[:, :-1]
        test_X = sm.add_constant(vec(test_X)) if intercept else vec(test_X)
        train_Y = dataset[:, -1:]
        train_pred = np.dot(train_X, beta)

        # Confidence interval
        sig = (np.linalg.norm(train_Y - train_pred)**2 /
               (train_X.shape[0] - train_X.shape[1] + 1))**0.5
        s = []
        for row in range(test_X.shape[0]):
            x = test_X[[row], :]
            s.append(sig * (1 + np.dot(np.dot(x, XX_inv), x.T))**0.5)

        s = np.reshape(np.asarray(s), (test_X.shape[0], 1))

        test_pred = np.dot(test_X, beta)
        hi_ci = test_pred + 2 * s
        lo_ci = test_pred - 2 * s

        return test_pred, hi_ci, lo_ci
    def predict(self, test_X):
        dataset = self.__dataset
        intercept = self.__intercept
        XX_inv  = self.__XX_inv
        beta    = self.__beta
        
        train_X = sm.add_constant(dataset[:, :-1]) if intercept else dataset[:, :-1]
        test_X = sm.add_constant(vec(test_X)) if intercept else vec(test_X)
        train_Y = dataset[:, -1:]
        train_pred = np.dot(train_X, beta)
        
        # Confidence interval
        sig = (np.linalg.norm(train_Y-train_pred)**2/(train_X.shape[0]-train_X.shape[1]+1))**0.5
        s = []
        for row in range(test_X.shape[0]):
            x = test_X[[row], :]
            s.append(sig*(1 + np.dot(np.dot(x, XX_inv), x.T))**0.5)
            
        s = np.reshape(np.asarray(s), (test_X.shape[0], 1))

        test_pred = np.dot(test_X, beta)
        hi_ci = test_pred + 2*s
        lo_ci = test_pred - 2*s

        return test_pred, hi_ci, lo_ci
Exemplo n.º 4
0
def active( ground ):
    
    collision = ground.getChild('user').getChild('collision')
    
    res = []
    
    for cp in collision.getChildren():
        dofs = cp.getMechanicalState()

        res.extend( [(vec(p), -vec(f)) 
                     for p, f in zip( dofs.position, dofs.force )
                     if np.dot(f, f) > 0
                 ])

    return res
Exemplo n.º 5
0
def cal00(wave, ebv=0.0, rvp=4.05):
    '''Calculates reddening according to Calzetti's 2000 Paper
    '''

    # Function
    vcal00 = vec(_cal00, 3, 2)

    return vcal00(wave, ebv, rvp)
Exemplo n.º 6
0
def car89(wave, ebv=0.0, rvp=3.1):
    '''Calculates reddening according to Cardelli's 1989 Paper
    '''

    # Function
    vcar89 = vec(_car89, 3, 2)

    return vcar89(wave, ebv, rvp)
Exemplo n.º 7
0
def cal97(wave, ebv=0.0):
    '''Calculates reddening according to Calzetti's 1997 Paper
    '''

    # Function
    vcal97 = vec(_cal97, 2, 2)

    return vcal97(wave, ebv)
Exemplo n.º 8
0
  def p_ray(self,g):

      pg = vec(lambda x : 1 + 0.5*P(2)(cos(x)))

      # Asymmetric Factor:
      qsi = quad(lambda x: pg(x),0,pi)

      b2 = 5e0*qsi**2

      return pg(g) , b2 , qsi
Exemplo n.º 9
0
def main():
    global window, screen, renderups, ship_sprite

    global relief, game_model, cap, ship

    relief = model.Relief("surface_heights.csv")
    ship = model.Spaceship(1000.0, vec([20.0, 0.0]), vec([0.0, 200.0]))
    # cap = captain.BraveCaptain()
    cap = captain.CarefulCaptain()
    game_model = model.Model(relief, ship, cap)

    pygame.init()
    # pygame.mixer.init()
    pygame.font.init()

    ship_sprite = TextSprite(ship)
    renderups = pygame.sprite.RenderUpdates(ship_sprite)
    window = pygame.display.set_mode((1500, 500), 0, 32)
    pygame.display.set_caption("Let's land")
    screen = pygame.display.get_surface()
    start_game()
def hartmann(x):
    outer = 0.0
    for i in range(4):
        inner = 0.0
        for j in range(4):
            xj = x[0, j]
            Aij = A[i, j]
            Pij = P[i, j]
            inner += Aij * (xj - Pij) ** 2

        new = alpha[i] * np.exp(-inner)
        outer += new
    return vec(-1 * (1.1 - outer) / 0.839)
def gaussian_mix(query):
    # Assign multivariate gaussians to be present in the space.
    gaussians = [multivariate_normal(mean=[0.9, 0.1], cov=[[0.05, 0], [0, 0.05]])]
    gaussians.append(multivariate_normal(mean=[0.9, 0.9], cov=[[0.07, 0.01], [0.01, 0.07]]))
    gaussians.append(multivariate_normal(mean=[0.15, 0.7], cov=[[0.03, 0], [0, 0.03]]))
    # Initialize initial value.
    value = 0.0
    # Iterate through each gaussian in the space.
    for j in xrange(len(gaussians)):
        value += gaussians[j].pdf(query)

    # Take the average.
    gaussian_function = value / len(gaussians)
    return vec(gaussian_function)  # vec(np.array([query.ravel(), gaussian_function]).ravel())
def get_logistic_prob(opt_w, features_mat):

    p_y = []
    X_test = features_mat
    W = opt_w

    n = len(X_test)
    for i in range(n):
        # p_i = exp((X_test[i].T).dot(argmin_w)) / (1 + exp((X_test[i].T).dot(argmin_w)))
        p_i = exp((W.T).dot(X_test[i])) / (1 + exp((W.T).dot(X_test[i])))
        p_y.append(p_i)
        # print(p_i)

    p_y = vec(p_y)
    return p_y
Exemplo n.º 13
0
    def __init__(self,
                 G: float,  # гравитационная постоянная
                 collision_distance: float  # всё-таки это не точки
                 ):
        """В начале было... да, а потом тестовая вселенная с пупом мира и двумя камнями"""
        super().__init__(G, collision_distance)

        self.centrum = Body(self, 500.0, vec([0.0, 0.0]), vec([0.0, 0.0]))
        self.p_1 = Body(self, 10.0, vec([50.0, 0.0]), vec([0.0, 15.0]))
        self.p_2 = Body(self, 10.0, vec([50.0, 40.0]), vec([-7.0, 7.0]))
Exemplo n.º 14
0
def get_transition_matrix(time):

    P = []
    t = time

    for i in range(N):
        # print(i)
        init_qw = kron(Cs[0], Ps[i])

        P_i = get_prob_i(t, init_qw)

        P.append(P_i)

    P = vec(P)

    return P
def get_log_likelihood(coeff_vec, features_mat, class_vec):

    w = coeff_vec
    X = features_mat
    y = class_vec

    n = len(X)
    log_like_temp = []
    log_likelihood = []

    for i in range(n):

        log_like = log(1 + exp((X[i].T).dot(w))) - y[i] * (X[i].T).dot(w)
        log_like_temp.append(log_like)

    log_likelihood = vec(sum(log_like_temp, axis=0))

    return log_likelihood
Exemplo n.º 16
0
def gaussian_mix(query):
    # Assign multivariate gaussians to be present in the space.
    gaussians = [
        multivariate_normal(mean=[0.9, 0.1], cov=[[.05, 0], [0, .05]])
    ]
    gaussians.append(
        multivariate_normal(mean=[0.9, 0.9], cov=[[0.07, 0.01], [0.01, .07]]))
    gaussians.append(
        multivariate_normal(mean=[0.15, 0.7], cov=[[.03, 0], [0, .03]]))
    # Initialize initial value.
    value = 0.0
    # Iterate through each gaussian in the space.
    for j in range(len(gaussians)):
        value += gaussians[j].pdf(query)

    # Take the average.
    gaussian_function = value / len(gaussians)
    return vec(gaussian_function
               )  # vec(np.array([query.ravel(), gaussian_function]).ravel())
Exemplo n.º 17
0
    def advance(self, delta_t: float):
        self.position += self.velocity * delta_t
        self.velocity += [0.0, -Spaceship._moon_g * delta_t]

        thrust_vec = vec([0.0, 0.0])
        dm = 0.0

        if self.fuel_mass > 0.0:
            if Spaceship.Thrust.RIGHT & self.thrust:
                thrust_vec += [0.25, 0.0]
                dm += 0.25
            if Spaceship.Thrust.LEFT & self.thrust:
                thrust_vec += [-0.25, 0.0]
                dm += 0.25
            if Spaceship.Thrust.UP & self.thrust:
                thrust_vec += [0.0, 1.0]
                dm += 1.0

        self.velocity += thrust_vec * delta_t * Spaceship._engine_thrust / self.mass
        self.fuel_mass -= Spaceship._engine_mass_per_sec * dm * delta_t
def get_gradient(coeff_vec, features_mat, class_vec):

    w_0 = coeff_vec
    X = features_mat
    y = class_vec

    n = len(X)
    gradient_mat = []
    gradient = []

    for i in range(n):

        # logit = 1 / (1+exp(-(w_0.T).dot(X[i])))
        logit = exp(X[i].T.dot(w_0)) / (1 + exp(X[i].T.dot(w_0)))
        grad = X[i] * logit - y[i] * X[i]
        gradient_mat.append(grad)

    # print(vec(gradient_mat))
    gradient = vec(sum(gradient_mat, axis=0))

    return gradient
 def readCSV(self, infile):
     import csv
     csvr = csv.reader(infile)
     header = next(csvr)
     if 0 != len(header) % 3:
         raise Exception('Incorrect data format in CSV file')
     self.markerLabels = [label[:-2] for label in header[::3]]
     self.frames = []
     for framerow in csvr:
         newFrame = []
         for c in range(0, len(framerow), 3):
             m = Marker()
             try:
                 m.position = vec([float(v) for v in framerow[c:c + 3]])
                 m.confidence = 1.
             except:
                 pass
             newFrame.append(m)
         self.frames.append(newFrame)
     self.startFrame = 0
     self.endFrame = len(self.frames) - 1
     self.scale = 1.
 def readCSV(self, infile):
     import csv
     csvr = csv.reader(infile)
     header = next(csvr)
     if 0 != len(header) % 3:
         raise Exception('Incorrect data format in CSV file')
     self.markerLabels = [label[:-2] for label in header[::3]]
     self.frames = []
     for framerow in csvr:
         newFrame = []
         for c in range(0, len(framerow), 3):
             m = Marker()
             try:
                 m.position = vec([float(v) for v in framerow[c:c + 3]])
                 m.confidence = 1.
             except:
                 pass
             newFrame.append(m)
         self.frames.append(newFrame)
     self.startFrame = 0
     self.endFrame = len(self.frames) - 1
     self.scale = 1.
Exemplo n.º 21
0
                    self.bodies[i].apply_force(self.bodies[i].force_induced_by_other(self.bodies[j]))
        for i in range(len(self.bodies)):
            self.bodies[i].advance()
            
    def add_body(self, b: Body):
        self.bodies.append(b)

        
if __name__ == '__main__':

    dimensions = int(input("How many dimensions do you live in?" + '\n'))
    
    un = UniverseWithDimensionsAndBodies(dimensions, 50, 3.08)
    
    bodies_hit_the_floor = [
        Body(un, 100.0, vec([0.0, 0.0]), vec([0.0, -15.0])),
        Body(un, 100.0, vec([20.0, 0.0]), vec([0.0, 15.0])),
        Body(un, 100.0, vec([10.0, 10.0]), vec([-15.0, 0.0])),
        Body(un, 100.0, vec([10.0, -10.0]), vec([15.0, 0.0]))
    ]
    
    for i in range(len(bodies_hit_the_floor)):
    	un.add_body(bodies_hit_the_floor[i])

    MODEL_DELTA_T = 0.01
    TIME_TO_MODEL = 5

    positions: Union[List[List[float]]] = [[[0 for i in range(int(TIME_TO_MODEL / MODEL_DELTA_T))] for a in range(len(un.bodies))], [[0 for i in range(int(TIME_TO_MODEL / MODEL_DELTA_T))] for a in range(len(un.bodies))]]
    
    for stepn in range(int(TIME_TO_MODEL / MODEL_DELTA_T)):
        for i in range(len(un.bodies)):
Exemplo n.º 22
0
import model
import captain


def trackship(m: model.Model) -> List[vec]:
    poss = []
    while m.step():
        poss.append(m.spaceship.position.copy())
    return poss


if __name__ == '__main__':
    rel = model.Relief("surface_heights.csv")

    m = model.Model(rel,
                    model.Spaceship(1000.0, vec([20.0, 0.0]), vec([0.0,
                                                                   200.0])),
                    captain.CarefulCaptain()
                    # captain.BraveCaptain()
                    )

    xs = np.arange(0.0, rel.get_width())
    plt.plot(xs, [rel.get_height(x) for x in xs])

    poss = trackship(m)
    tx, ty = tuple(zip(*poss))
    plt.plot(tx, ty)

    plt.show()
import numpy as np
from numpy import atleast_2d as vec

alpha = [1.0, 1.2, 3.0, 3.2]
A = vec([[10, 3, 17, 3.5, 1.7, 8],
     [0.05, 10, 17, 0.1, 8, 14],
     [3, 3.5, 1.7, 10, 17, 8],
     [17, 8, 0.05, 10, 0.1, 14]])
P = 10 ** (-4) * vec([[1312, 1696, 5569, 124, 8283, 5886],
                      [2329, 4135, 8307, 3736, 1004, 9991],
                      [2348, 1451, 3522, 2883, 3047, 6650],
                      [4047, 8828, 8732, 5743, 1091, 381]])


def hartmann(x):
    outer = 0.0
    for i in range(4):
        inner = 0.0
        for j in range(4):
            xj = x[0, j]
            Aij = A[i, j]
            Pij = P[i, j]
            inner += Aij * (xj - Pij) ** 2

        new = alpha[i] * np.exp(-inner)
        outer += new
    return vec(-1 * (1.1 - outer) / 0.839)


if __name__ == "__main__":
    print alpha
Exemplo n.º 24
0
def m(x):
    return vec(-3*x*(1.5+3*x)*(3*x-1.5)*(3*x-2))
Exemplo n.º 25
0
 def land(self):
     self.velocity = vec([0.0, 0.0])
     self.navigates = False
Exemplo n.º 26
0
def skeleton(scale = 1):
    vol = scale * scale * scale

    # TODO scale masses

    head = {
        'mass': vol * 5,
        'dim': scale * vec([0.25, 0.25, 0.25]),
    }


    upperback = {
        'mass': vol * 10,
        'dim': scale * vec([0.4, 0.4, 0.25])
    }

    lowerback = {
        'mass': vol * 10,
        'dim': scale * vec([0.3, 0.25, 0.25])
    }

    femur =  {
        'mass': vol * 7,
        'dim': scale * vec([0.2, 0.5, 0.2]),
    }


    tibia =  {
        'mass': vol * 5,
        'dim': scale * vec([0.10, 0.4, 0.1])
    }

    arm = {
        'mass': vol * 4,
        'dim': scale * vec([0.1, 0.3, 0.10])
    }

    forearm =  {
        'mass': vol * 3,
        'dim': scale * vec([0.1, 0.5, 0.1])
    }

    foot = {
        'mass': vol * 2,
        'dim': scale * vec([0.1, 0.3, 0.1])
    }

    stiffness = 1e2
    compliance = 1 / stiffness
    hard = 1e-8

    def hip(side):

        sign = 1 if side == 'left' else -1

        return {
            "coords": [['lowerback', [sign * lowerback['dim'][0] / 2,
                                      - lowerback['dim'][1] / 2,
                                      0]],

                       ['femur_{}'.format(side), [0,
                                                  femur['dim'][1] / 2,
                                                  0]]],
            "rest": Quaternion(),
            "compliance": compliance
        }


    def shoulder(side):
        sign = 1 if side == 'left' else -1

        return {
            "coords": [['upperback', [sign * (1.2 * upperback['dim'][0]) / 2,
                                      upperback['dim'][1] / 2,
                                  0]],
                       ['arm_{}'.format(side), [0, arm['dim'][1] / 2, 0]]],

            "rest": Quaternion.exp( sign * math.pi / 6.0 * basis(2, 3)),
            "compliance": compliance
        }


    def elbow(side):
        return  {
            "coords": [['arm_{}'.format(side), [0,
                                                -arm['dim'][1] / 2,
                                                0]],
                       ['forearm_{}'.format(side), [0,
                                                    forearm['dim'][1] / 2,
                                                    0]]],
            "rest": Quaternion.exp( -math.pi / 6 * basis(0, 3) ),
            "compliance": [compliance, hard, hard]
        }

    def knee(side):
        return {
            "coords": [['femur_{}'.format(side), [0,
                                                  -femur['dim'][1] / 2,
                                                  0]],
                       ['tibia_{}'.format(side), [0,
                                                  tibia['dim'][1] / 2,
                                                  0]]],
            "rest": Quaternion.exp( math.pi / 6 * basis(0, 3) ),
            "compliance": [compliance, hard, hard]
        }

    # TODO finer ?
    def ankle(side):
        return {
            "coords": [['tibia_{}'.format(side), [0,
                                                  -tibia['dim'][1] / 2,
                                                  0]],
                       ['foot_{}'.format(side), [0,
                                                 foot['dim'][1] / 2,
                                                 0]]],
            "rest": Quaternion.exp( -math.pi /2  * basis(0, 3) ),
            "compliance": compliance
        }

    def spine():
        return {
            "coords": [['upperback', [0,
                                                  -upperback['dim'][1] / 2,
                                                  0]],
                       ['lowerback', [0,
                                      lowerback['dim'][1] / 2,
                                      0]]],
            "rest": Quaternion(),
            "compliance": 1e-3
        }

    def neck():
        return {
            "coords": [['head', [0, -head['dim'][1] / 2, 0]],
                       ['upperback', [0, upperback['dim'][1] / 2, 0]]],
            "rest": Quaternion(),
            "compliance": compliance
        }


    skeleton = {

        'body': {

            'head': head,
            'upperback': upperback,
            'lowerback': lowerback,

            'femur_left': femur,
            'femur_right': femur,

            'tibia_left': tibia,
            'tibia_right': tibia,

            'arm_left': arm,
            'arm_right': arm,

            'forearm_left': forearm,
            'forearm_right': forearm,

            'foot_left': foot,
            'foot_right': foot
        },


        'joint': {

            'neck': neck(),

            'shoulder_left': shoulder('left'),
            'shoulder_right': shoulder('right'),

            'elbow_left': elbow('left'),
            'elbow_right': elbow('right'),

            'hip_left': hip('left'),
            'hip_right': hip('right'),

            'knee_left': knee('left'),
            'knee_right': knee('right'),

            'ankle_left': ankle('left'),
            'ankle_right': ankle('right'),

            'spine': spine(),
        }
    }
    return skeleton
Exemplo n.º 27
0
        super().__init__()
        self.G = G
        self.k = k
        self.collision_distance = collision_distance

    def gravity_flow_dencity_per_1_1(self, dist):
        if dist > self.collision_distance:
            return self.G / dist
        else:
            return -self.k / dist


u = Universe3D(MODEL_G, COLLISION_COEFFICIENT, COLLISION_DISTANCE)

bodies = [
    MaterialPoint(u, 35000., vec([0., 0.]), vec([0., 0.])),
    MaterialPoint(u, 10., vec([100., 0.]), vec([0., -10.])),
    MaterialPoint(u, 10., vec([0., 100.]), vec([15., 0.]))
]

steps = int(TIME_TO_MODEL / MODEL_DELTA_T)
for stepn in range(steps):
    u.model_step()

plt.gca().set_aspect('equal')

for b in bodies:
    plt.plot(*tuple(map(list, zip(*b.ptrace))))

plt.show()
Exemplo n.º 28
0
def skeleton(scale=1):
    vol = scale * scale * scale

    # TODO scale masses

    head = {
        'mass': vol * 5,
        'dim': scale * vec([0.25, 0.25, 0.25]),
    }

    upperback = {'mass': vol * 10, 'dim': scale * vec([0.4, 0.4, 0.25])}

    lowerback = {'mass': vol * 10, 'dim': scale * vec([0.3, 0.25, 0.25])}

    femur = {
        'mass': vol * 7,
        'dim': scale * vec([0.2, 0.5, 0.2]),
    }

    tibia = {'mass': vol * 5, 'dim': scale * vec([0.10, 0.4, 0.1])}

    arm = {'mass': vol * 4, 'dim': scale * vec([0.1, 0.3, 0.10])}

    forearm = {'mass': vol * 3, 'dim': scale * vec([0.1, 0.5, 0.1])}

    foot = {'mass': vol * 2, 'dim': scale * vec([0.1, 0.3, 0.1])}

    stiffness = 1e2
    compliance = 1 / stiffness
    hard = 1e-8

    def hip(side):

        sign = 1 if side == 'left' else -1

        return {
            "coords": [[
                'lowerback',
                [sign * lowerback['dim'][0] / 2, -lowerback['dim'][1] / 2, 0]
            ], ['femur_{}'.format(side), [0, femur['dim'][1] / 2, 0]]],
            "rest":
            Quaternion(),
            "compliance":
            compliance
        }

    def shoulder(side):
        sign = 1 if side == 'left' else -1

        return {
            "coords": [[
                'upperback',
                [
                    sign * (1.2 * upperback['dim'][0]) / 2,
                    upperback['dim'][1] / 2, 0
                ]
            ], ['arm_{}'.format(side), [0, arm['dim'][1] / 2, 0]]],
            "rest":
            Quaternion.exp(sign * math.pi / 6.0 * basis(2, 3)),
            "compliance":
            compliance
        }

    def elbow(side):
        return {
            "coords":
            [['arm_{}'.format(side), [0, -arm['dim'][1] / 2, 0]],
             ['forearm_{}'.format(side), [0, forearm['dim'][1] / 2, 0]]],
            "rest":
            Quaternion.exp(-math.pi / 6 * basis(0, 3)),
            "compliance": [compliance, hard, hard]
        }

    def knee(side):
        return {
            "coords": [['femur_{}'.format(side), [0, -femur['dim'][1] / 2, 0]],
                       ['tibia_{}'.format(side), [0, tibia['dim'][1] / 2, 0]]],
            "rest":
            Quaternion.exp(math.pi / 6 * basis(0, 3)),
            "compliance": [compliance, hard, hard]
        }

    # TODO finer ?
    def ankle(side):
        return {
            "coords": [['tibia_{}'.format(side), [0, -tibia['dim'][1] / 2, 0]],
                       ['foot_{}'.format(side), [0, foot['dim'][1] / 2, 0]]],
            "rest":
            Quaternion.exp(-math.pi / 2 * basis(0, 3)),
            "compliance":
            compliance
        }

    def spine():
        return {
            "coords": [['upperback', [0, -upperback['dim'][1] / 2, 0]],
                       ['lowerback', [0, lowerback['dim'][1] / 2, 0]]],
            "rest":
            Quaternion(),
            "compliance":
            1e-3
        }

    def neck():
        return {
            "coords": [['head', [0, -head['dim'][1] / 2, 0]],
                       ['upperback', [0, upperback['dim'][1] / 2, 0]]],
            "rest":
            Quaternion(),
            "compliance":
            compliance
        }

    skeleton = {
        'body': {
            'head': head,
            'upperback': upperback,
            'lowerback': lowerback,
            'femur_left': femur,
            'femur_right': femur,
            'tibia_left': tibia,
            'tibia_right': tibia,
            'arm_left': arm,
            'arm_right': arm,
            'forearm_left': forearm,
            'forearm_right': forearm,
            'foot_left': foot,
            'foot_right': foot
        },
        'joint': {
            'neck': neck(),
            'shoulder_left': shoulder('left'),
            'shoulder_right': shoulder('right'),
            'elbow_left': elbow('left'),
            'elbow_right': elbow('right'),
            'hip_left': hip('left'),
            'hip_right': hip('right'),
            'knee_left': knee('left'),
            'knee_right': knee('right'),
            'ankle_left': ankle('left'),
            'ankle_right': ankle('right'),
            'spine': spine(),
        }
    }
    return skeleton
Exemplo n.º 29
0
# Date: 02/20/2019, Wednesday
# Author: Minwoo Bae ([email protected])
# Institute: The Department of Computer Science and Engineering, UCONN
###########################################################################################################################
import numpy as np
#kron: Kronecker product (kron): matrix tensor matrix
from numpy import sqrt, dot, outer, reshape, kron, append, insert
from numpy import transpose as T
from numpy import tensordot as tensor
from numpy.linalg import inv
from numpy.linalg import norm
from numpy import array as vec
from numpy import eye as id

# Hadamard operator:
H = (1 / sqrt(2)) * vec([[1, 1], [1, -1]])
h = vec([[1, 1], [1, -1]])

# COIN operators:
COIN = vec([[1, 0], [0, 1]])


# Creates a standard basis matrix:
def get_pos_space(time):
    t = time
    if t == 0:
        dim = 2
        pos_basis = id(dim, dim, 0, dtype=float)
    else:
        dim = 2 * abs(t) + 1
        pos_basis = id(dim, dim, 0, dtype=float)
Exemplo n.º 30
0
def m(x):
    return vec(-3*x*(1.5+3*x)*(3*x-1.5)*(3*x-2))
Exemplo n.º 31
0
        if dist > self.collision_distance:
            # Ситуация с обычным потоком поля — просто притяжение
            return self.G / dist
        else:
            # Отталкивание при соударении (притяжение убираем).
            # К гравитации не относится, т.к. имеет скорее электростатическую
            # природу, так что это sort of hack.
            # Никаких конкретных законов не реализует, просто нечто отрицательное =)
            return -self.k / dist


u = Universe2D(MODEL_G, COLLISION_COEFFICIENT, COLLISION_DISTANCE)
# u = Universe2D(MODEL_G, 20, 4)

bodies = [
    MaterialPoint(u, 10050., vec([0., 0.]), vec([0., 0.])),
    MaterialPoint(u, 100., vec([150., 0.]), vec([0., -10.])),
    MaterialPoint(u, 100., vec([0., 150.]), vec([15., 0.])),
]

steps = int(TIME_TO_MODEL / MODEL_DELTA_T)
for stepn in range(steps):
    u.model_step()

plt.gca().set_aspect('equal')

for b in bodies:
    # Вот так понятно
    # t = b.ptrace
    # xs = [p[0] for p in t]
    # ys = [p[1] for p in t]
Exemplo n.º 32
0
###########################################################################################################################
import numpy as np
#kron: Kronecker product (kron): matrix tensor matrix
from numpy import sqrt, dot, outer, reshape, kron, append, insert, sum, matmul, add
from numpy import transpose as T
from numpy import tensordot as tensor
from numpy.linalg import inv
from numpy.linalg import norm
from numpy import array as vec
from numpy import eye as id
import heatmaps as ht
import matplotlib
import matplotlib.pyplot as plt

# Hadamard operator:
Hm = (1 / sqrt(2)) * vec([[1, 1], [1, -1]])

# Coin operator (Hm tensor Hm):
C = kron(Hm, Hm)

# COIN space:
Cs = vec([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])

# Position space:
Ps = vec([[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0],
          [0, 0, 0, 0, 1]])

deg = len(Cs)
N = len(Ps)

Exemplo n.º 33
0
from numpy import array as vec

va = vec([1, 2])
vb = vec([3, 3])

print(va + vb)

S1 = 0.5 * (va + vb)
print(S1)

print(3 * va)  # reálny súčin
print(va * vb)  # vektorový súčin
print(va.dot(vb))  # skalárny súčin
Exemplo n.º 34
0
                    self.bodies[i].apply_force( self.bodies[i].force_induced_by_other( self.bodies[j] ) )
                    
        for i in range( len(self.bodies ) ):
            self.bodies[i].advance()

if __name__ == '__main__':

    dimensions = int(input("Dimensions?" + '\n'))

    un = UniverseWithDimensionsAndBodies(dimensions, 50, 3.0)

    MODEL_DELTA_T = 0.01
    TIME_TO_MODEL = 2
    
    bodies = [
        Body(un, 100.0, vec([0.0, 0.0]), vec([0.0, -5.0])),
        Body(un, 100.0, vec([10.0, 0.0]), vec([0.0, 5.0]))
    ]

    for i in range(len(bodies)):
        un.add_body(bodies[i])

    x=[ [ 0 for n in range( int(TIME_TO_MODEL/MODEL_DELTA_T) )] for i in range(len(un.bodies)) ]
    y=[ [ 0 for n in range( int(TIME_TO_MODEL/MODEL_DELTA_T) )] for i in range(len(un.bodies)) ]
   
    for i in range( len(un.bodies) ):
        for j in range(int(TIME_TO_MODEL/MODEL_DELTA_T)):
            x[0][i] = un.bodies[i].position[0]
            y[1][i] = un.bodies[i].position[1]
            un.model_step()