コード例 #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
コード例 #3
0
    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
コード例 #4
0
ファイル: contact.py プロジェクト: maxime-tournier/pouf
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
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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
コード例 #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()
コード例 #10
0
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)
コード例 #11
0
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
コード例 #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]))
コード例 #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
コード例 #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())
コード例 #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
コード例 #19
0
 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.
コード例 #20
0
 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.
コード例 #21
0
ファイル: kepler_2.py プロジェクト: gunalex11/repository_1
                    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)):
コード例 #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()
コード例 #23
0
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
コード例 #24
0
def m(x):
    return vec(-3*x*(1.5+3*x)*(3*x-1.5)*(3*x-2))
コード例 #25
0
 def land(self):
     self.velocity = vec([0.0, 0.0])
     self.navigates = False
コード例 #26
0
ファイル: model.py プロジェクト: maxime-tournier/ik-server
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
コード例 #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()
コード例 #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
コード例 #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)
コード例 #30
0
def m(x):
    return vec(-3*x*(1.5+3*x)*(3*x-1.5)*(3*x-2))
コード例 #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]
コード例 #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)

コード例 #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
コード例 #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()