コード例 #1
0
def point_point_distance(p1, p2):
    p1 = vector.Vector(p1)
    p2 = vector.Vector(p2)
    if p1 == p2:
        return 0
    else:
        return (p2 - p1).length()
コード例 #2
0
def main():
    pos1 = vector.Vector(0, 0)
    vel1 = vector.Vector(0, 0)
    acc1 = vector.Vector(0, 0)
    radius1 = 1
    p1 = sized_particle.SizedParticle(pos1, vel1, acc1, radius1)

    pos2 = vector.Vector(3, 3)
    vel2 = vector.Vector(0, 0)
    acc2 = vector.Vector(0, 0)
    radius2 = 1
    p2 = sized_particle.SizedParticle(pos2, vel2, acc2, radius2)

    pos3 = vector.Vector(2, 0)
    pos3 = vector.Vector(20, 0)
    vel3 = vector.Vector(0, 0)
    acc3 = vector.Vector(0, 0)
    radius3 = 1
    p3 = sized_particle.SizedParticle(pos3, vel3, acc3, radius3)

    L = [p1, p2, p3]

    result = resultant_force_by_many_points(L)
    print(result)
    print(result is None)
    print(type(result))

    print(result(p2))
コード例 #3
0
ファイル: tanks.py プロジェクト: dankaki/Mazer-pygame
    def get_vertices_cannon(self):
        # Calculate half of width and half of height used to simplify further processes
        half_width = self.cannon_width / 2

        # Some math used to rotate square around its center
        point1 = vmath.Vector(-half_width, 0).rotate(self.rotation * deg2rad)
        point2 = vmath.Vector(half_width, 0).rotate(self.rotation * deg2rad)
        point3 = vmath.Vector(half_width, -self.cannon_length).rotate(
            self.rotation * deg2rad)
        point4 = vmath.Vector(-half_width, -self.cannon_length).rotate(
            self.rotation * deg2rad)

        # Add back our position
        point1.add(self.position)
        point2.add(self.position)
        point3.add(self.position)
        point4.add(self.position)

        # Convert vectors into array of tuples (positions)
        return [
            point1.to_tuple(),
            point2.to_tuple(),
            point3.to_tuple(),
            point4.to_tuple()
        ]
コード例 #4
0
def _main():
    earth = Body(vector.Vector([5, 5]), vector.Vector([0, 1]), 12)
    print(earth._r[0])
    stddraw.setXscale(0, 10)
    stddraw.setYscale(0, 10)
    earth.draw()
    stddraw.show()
コード例 #5
0
ファイル: tanks.py プロジェクト: dankaki/Mazer-pygame
    def update(self):
        key_pressed = pygame.key.get_pressed()
        if key_pressed[self.key_tuple[1]]:
            self.force.y = self.movement_force
        elif key_pressed[self.key_tuple[0]]:
            self.force.y = -self.movement_force
        else:
            self.force.y = 0

        if key_pressed[self.key_tuple[3]]:
            self.add_rotation(-self.turn_torque * delta_time)
        elif key_pressed[self.key_tuple[2]]:
            self.add_rotation(self.turn_torque * delta_time)

        self.force.add(self.velocity.get_normalized().multiply(
            vmath.Vector(self.mass * gravity_coefficient *
                         friction_coefficient)))

        self.acceleration = self.force.divide_new(vmath.Vector(self.mass))

        self.velocity.add(self.acceleration.multiply(vmath.Vector(delta_time)))

        if self.velocity.get_magnitude() > self.max_velocity:
            self.velocity = self.velocity.get_normalized().multiply(
                vmath.Vector(self.max_velocity))

        self.position.add(
            self.velocity.multiply_new(vmath.Vector(delta_time)).rotate(
                self.rotation * deg2rad))

        self.draw()
コード例 #6
0
ファイル: camera.py プロジェクト: fdkz/flybyrift
    def window_ray(self, x, y):
        """
        return a ray that goes through the given pixel-coordinate,
        in camera-space. NOT normalized.

        return: start, direction (vectors. world-space coordinates)
                ("start" is necessary in case of orthogonal projection)
        """

        if self.mode == self.ORTHOGONAL:

            # TODO: untested
            xx = self.orthox * (float(x) / self.w_pixels - .5)
            yy = self.orthoy * (float(y) / self.h_pixels - .5)

            return vector.Vector((xx, -yy, 0.)), vector.Vector((0., 0., 1.))

        elif self.mode == self.PERSPECTIVE:

            w, h = self.w_pixels, self.h_pixels
            #  TODO: aspect ratio.. or already in tanfov*?
            xx = x - w / 2.
            yy = (y - h / 2.) * w / h * self._tanfovy_2 / self._tanfovx_2
            zz = w / 2. / self._tanfovx_2

            return vector.Vector(), vector.Vector((xx, -yy, zz))

        return None, None
コード例 #7
0
    def move(self):
        moveVector = self.wander()

        if (self._fullCounter > 0):
            moveVector = self.wander()
            self._fullCounter -= 1
        elif (self.findClosestPreyNeighbor() != None):
            moveVector = self.hunt()
        else:
            moveVector = self.wander()
            self._wanderCounter += 1
        originalVector = vector.Vector(self.getx(), self.gety())
        moveVector.scale(PREDATOR_SPEED)
        finalVector = moveVector + originalVector
        finalVectorDirection = vector.Vector(
            finalVector._x - originalVector._x,
            finalVector._y - originalVector._y)

        heading = self._turtle.heading()
        #heading 0 is east and 90 is north while atan2 returns 0 as north
        #and 90 and east, so i convert heading to atan2 degrees
        originalVectorDirection = vector.Vector(
            math.cos(math.radians(heading)), math.sin(math.radians(heading)))
        #uses atan2 to find the finalvector heading
        newAngle = (math.degrees(
            math.atan2(finalVectorDirection._x, finalVectorDirection._y)) -
                    (math.degrees(
                        math.atan2(originalVectorDirection._x,
                                   originalVectorDirection._y))))
        newAngle = self._angle - newAngle
        self._angle = newAngle
        self._turtle.setheading(self._angle)
        if (finalVector._x >= self._world.gety() or finalVector._x <= 0
                or finalVector._y >= self._world.gety()
                or finalVector._y <= 0):
            self._angle = (self._angle + 180) % 360
            self._turtle.setheading(self._angle)

        self._turtle.goto(finalVector._x, finalVector._y)

        del self._world._agents[self.getx(), self.gety()]
        self._x = self._turtle.xcor()
        self._y = self._turtle.ycor()
        self._world._agents[self.getx(), self.gety()] = self

        if (self._starvationCounter >= PREDATOR_STARVATION):
            position = (self.getx(), self.gety())
            self._world._agents[position]._turtle.hideturtle()
            del self._world._agents[position]._turtle
            del self._world._agents[position]

        if (self._birthCounter >= PREDATOR_BIRTH):
            predator = Predator(self._world,
                                self.getx() - 5.1,
                                self.gety() - 5.1)
            self._birthCounter = 0

        self._starvationCounter += 1
        self._birthCounter += 1
コード例 #8
0
ファイル: test_vector.py プロジェクト: pvaddina/recipes
def VecPlusSubMul():
    print("###################################################")
    addRes = vec.Vector([8.218, -9.341]) + vec.Vector([-1.129, 2.111])
    print("Add result = {}".format(addRes))
    subRes = vec.Vector([7.119, 8.215]) - vec.Vector([-8.223, 0.878])
    print("Sub result = {}".format(subRes))
    mulRes = vec.Vector([1.671, -1.012, -0.318]) * 7.41
    print("Mul result = {}".format(mulRes))
コード例 #9
0
def right_angle(v1, v2):
    x = vector.Vector(v1[0], v1[1])
    y = vector.Vector(v2[0], v2[1])
    dot = vector.dot(x, y)
    _angle = math.acos(dot / x.length() / y.length())
    if x[0] * y[1] < y[0] * x[1]:
        _angle = 2 * math.pi - _angle
    return _angle
コード例 #10
0
 def __init__(self,mag=10):
     super(Origin,self).__init__()
     x_vector = vector.Vector(tail=[0,0,0],head=[mag,0,0],color=[1,0,0])
     y_vector = vector.Vector(tail=[0,0,0],head=[0,mag,0],color=[0,1,0])
     z_vector = vector.Vector(tail=[0,0,0],head=[0,0,mag],color=[0,0,1])
     origin_point = fso.Sphere(r=mag/20)
     origin_point.set_color([1,1,0])
     self.add_obj([origin_point,x_vector,y_vector,z_vector])
コード例 #11
0
def walls_collision(sz_particle: sized_particle.SizedParticle, width, height):
    x, y = sz_particle.get_pos().coords()
    vx, vy = sz_particle.get_vel().coords()
    radius = sz_particle.get_radius()
    if x <= radius: return vector.Vector(0, 1)
    if x >= width - radius: return vector.Vector(0, -1)
    if y <= radius: return vector.Vector(-1, 0)
    if y >= height - radius: return vector.Vector(1, 0)
コード例 #12
0
    def test_ReLU_backward(self):
        w = vector.Vector([2.5, 1.5, -0.5])
        res = vector.ReLU_backward(self.v, w)
        self.assertIsInstance(res, vector.Vector)
        assert_allclose(self, res, vector.Vector([-0.5, 1.5, 0.0]))

        with self.assertRaises(ValueError):
            vector.ReLU_backward(self.v, vector.Vector([1.0]))
コード例 #13
0
    def test_add(self):
        w = vector.Vector([0.5, -0.5, -1.5])
        s = self.v + w
        self.assertIsInstance(s, vector.Vector)
        assert_allclose(self, self.v + w, vector.Vector([1.0, 1.0, 1.0]))

        with self.assertRaises(ValueError):
            self.v + vector.Vector([1.0])
コード例 #14
0
def main():
    vetor1 = vector.Vector([8.218,-9.341])
    print(vetor1.plus(vector.Vector([-1.129,2.111])))

    vetor2 = vector.Vector([7.119,8.215])
    print(vetor2.minus(vector.Vector([-8.223,0.878])))

    vetor3 = vector.Vector([1.671,-1.012,-0.318])
    print(vetor3.times_scalar(7.41))
コード例 #15
0
    def collision(self, paddle_pos, target_point, stamina):
        v = [target_point[0] - paddle_pos[0], target_point[1] - paddle_pos[1]]
        mag_v = (v[0] ** 2 + v[1] ** 2) ** (1 / 2)
        unit_v = [v[0] / mag_v, v[1] / mag_v]
        unit_perp = vector.Vector(-unit_v[1], unit_v[0])
        dir_to_ball = vector.Vector(self.position[0] - paddle_pos[0], self.position[1] - paddle_pos[1])
        d = self.dot(dir_to_ball, vector.Vector(unit_v[0], unit_v[1]))
        e = self.dot(dir_to_ball, unit_perp)

        if not pygame.key.get_pressed()[pygame.K_SPACE]:
            self.end = False
            self.stay = False
            if pygame.Rect(self.position[0], self.position[1], 10, 10).colliderect(
                    pygame.Rect(paddle_pos[0] - (stamina / 2), paddle_pos[1] - 5, stamina, 10)):

                if unit_v[1] > 0:
                    if unit_v[0] >= 0:
                        self.direction = [1, -1]
                    if unit_v[0] <= 0:
                        self.direction = [-1, -1]
                    if self.current_powerup == "Heavy":
                        self.bounce = self.bounce + 1
                else:
                    self.direction = unit_v
                    if self.current_powerup == "Heavy":
                        self.bounce = self.bounce + 1

        elif pygame.key.get_pressed()[pygame.K_SPACE]:
            self.end = False
            self.stay = False
            if not (abs(d) > 15 or abs(e) > int(stamina)):
                if unit_v[1] > 0:
                    if unit_v[0] >= 0:
                        self.direction = [1, -1]
                    if unit_v[0] <= 0:
                        self.direction = [-1, -1]
                    if self.current_powerup == "Heavy":
                        self.bounce = self.bounce + 1
                else:
                    self.direction = unit_v
                    if self.current_powerup == "Heavy":
                        self.bounce = self.bounce + 1

        if self.position[0] <= 0:
            self.position[0] = 0
            self.direction = [-1 * self.direction[0], self.direction[1]]
        if self.position[0] + 10 >= self.win.get_width():
            self.position[0] = self.win.get_width() - 10
            self.direction = [-1 * self.direction[0], self.direction[1]]
        if self.position[1] <= 0:
            self.position[1] = 0
            self.direction = [self.direction[0], -1 * self.direction[1]]
        if self.position[1] + 10 >= self.win.get_height():
            # self.position[1] = self.win.get_height() - 10
            # self.direction = [self.direction[0], -1 * self.direction[1]]
            self.life_lost += 1
            self.position = paddle_pos
コード例 #16
0
	def fillBlocks(self):
		### blocks
		import vector
		import block

		self.blocks.append(block.Block(vector.Vector(0.0, 1.75), 1.0, 3.5))
		self.blocks.append(block.Block(vector.Vector(self.field_width / 2.0  + 0.25, self.field_height / 2.0 - 0.5), 0.5, self.field_height + 1.0))
		self.blocks.append(block.Block(vector.Vector(-self.field_width / 2.0 - 0.25, self.field_height / 2.0 - 0.5), 0.5, self.field_height + 1.0))
		self.blocks.append(block.Block(vector.Vector(0.0, -0.5), self.field_width, 1.0))
		self.blocks.append(block.Block(vector.Vector(0.0, self.field_height - 0.25), self.field_width, 0.5))
コード例 #17
0
 def __init__(self):
     
     
     self.rEarth = vector.Vector(1,0,0)
     self.vEarth = vector.Vector(0,2*math.pi,0)
     self.rMars = vector.Vector(1.5,0,0)
     self.vMars = vector.Vector(0,2*math.pi/math.sqrt(1.5),0)
     self.max_steps = 10000
     self. solver = Solver.RK4(0.01)
     self.physics = Physics.CentralGravity(self.solver,G=4*math.pi**2,M=1)
コード例 #18
0
ファイル: sprites.py プロジェクト: wt5ljon/platformGame
 def __init__(self, game):
     pg.sprite.Sprite.__init__(self)
     self.game = game
     self.image = pg.Surface((30, 40))
     self.image.fill(YELLOW)
     self.rect = self.image.get_rect()
     self.rect.center = (WIDTH / 2, HEIGHT / 2)
     self.pos = vec.Vector(WIDTH / 2, HEIGHT / 2)
     self.vel = vec.Vector(0, 0)
     self.acc = vec.Vector(0, 0)
コード例 #19
0
    def move(self):
        moveVector = self.wander()
        if (self.findClosestPredatorNeighbor() != None):
            moveVector = self.flee()
        else:
            self._wanderCounter += 1
            moveVector = self.wander()
        originalVector = vector.Vector(self.getx(), self.gety())
        moveVector.scale(PREY_SPEED)
        finalVector = moveVector + originalVector
        finalVectorDirection = vector.Vector(
            finalVector._x - originalVector._x,
            finalVector._y - originalVector._y)

        heading = self._turtle.heading()
        originalVectorDirection = vector.Vector(
            math.cos(math.radians(heading)), math.sin(math.radians(heading)))
        newAngle = (math.degrees(
            math.atan2(finalVectorDirection._x, finalVectorDirection._y)) -
                    (math.degrees(
                        math.atan2(originalVectorDirection._x,
                                   originalVectorDirection._y))))
        newAngle = self._angle - newAngle
        self._angle = newAngle
        self._turtle.setheading(self._angle)

        if (finalVector._x >= self._world.gety() or finalVector._x <= 0
                or finalVector._y >= self._world.gety()
                or finalVector._y <= 0):
            self._angle = (self._angle + 180) % 360
            self._turtle.setheading(self._angle)

        if finalVector._x >= self._world.gety():
            finalVector.set((2 * self._world.getx()) - finalVector._x,
                            finalVector._y)
        if finalVector._x <= 0:
            finalVector.set(abs(finalVector._x), finalVector._y)
        if finalVector._y >= self._world.gety():
            finalVector.set(finalVector._x,
                            (2 * self._world.gety()) - finalVector._y)
        if finalVector._y <= 0:
            finalVector.set(finalVector._x, abs(finalVector._y))

        self._turtle.goto(finalVector._x, finalVector._y)

        del self._world._agents[self.getx(), self.gety()]
        self._x = self._turtle.xcor()
        self._y = self._turtle.ycor()
        self._world._agents[self.getx(), self.gety()] = self

        if (self._birthCounter >= PREY_BIRTH):
            prey = Prey(self._world, self.getx() - 5.2, self.gety() - 5.2)
            self._birthCounter = 0

        self._birthCounter += 1
コード例 #20
0
    def getBasePoint(self):
        v = self.normalVector.data
        a = v[0]
        b = v[1]

        if a == 0:
            return vector.Vector([0, self.constant / b],
                                 self.normalVector.tolerance)
        else:
            return vector.Vector([self.constant / a, 0],
                                 self.normalVector.tolerance)
コード例 #21
0
 def error_2(self,v0):
     vShip = vector.Vector(0,v0,0)
     rShip = vector.Vector(1,0,0)
     Ship = Body.GravBody(1,rShip,vShip)
     sim = Simulation.OrbitSim(self.stop_1,self.physics,Ship)
     sim.advance()
     time, Ships = sim.get_results()
     r = [[s.position.r for s in ship] for ship in Ships]
     max_r = max(r)
     error = max_r[0] - 1.5 #since r becomes another stupid list of lists
     return error
コード例 #22
0
    def activate(self):
        fact = 1000
        if (self.clock_time / fact) % 4 != 0:
            self.insert_flag = 0

        if (self.clock_time / fact) % 4 == 0:
            if self.insert_flag == 0:
                v1=vector.Vector((20, 200))
                v2=vector.Vector((2.8, 0))
                self.insert_flag = 1
                self.barrels.append(BlueBarrel(v1,v2, v2, globals.bluebarrel_sideways_an, 1))
コード例 #23
0
def separated_by_axis(vertices, bnds, axis):
    d = 0
    for i in range(3):
        v = vector.Vector(0,0,0)
        a,b = bnds[i]
        v[i] = (b-a)/2
        d += abs(v * axis)
    
    bnds_center = vector.Vector(map(sum, bnds)) * 0.5
    projected = map(lambda v: (v - bnds_center) * axis, vertices)
    return min(projected) > d or max(projected) < -d
コード例 #24
0
 def error(theta):
     htarg = 0
     r =  vector.Vector(0,0,0)
     v = vector.Vector(r=100,theta=theta,phi=(math.pi/2))
     particle = Body.GravBody(5,r,v)
     solver =Solver.RK4(0.1)
     physics = Physics.UniformGravity(solver,c=0.1)
     sim = Simulation.TrajectorySim(stop_maker(htarg),physics,particle)
     a,b = sim.get_results()
     y = [p.position.y for p in b]
     E = particle.position.x - max(y)
     return E
コード例 #25
0
ファイル: location_nn.py プロジェクト: Flytte/flytte
def estimate_pose():
    random_position_gen()
    global estimated_pose
    # Upper left corner
    position_arr = [estimated_pose]
    # Upper right corner
    position_arr.append(vector.Vector(position_arr[0].x + 10, position_arr[0].y))
    # Lower left corner
    position_arr.append(vector.Vector(position_arr[0].x, position_arr[0].y - 10))
    # Lower right corner
    position_arr.append(vector.Vector(position_arr[0].x - 10, position_arr[0].y - 10))
    return create_message(position_arr)
コード例 #26
0
 def reset(self, position, standing):
     if standing:
         rectangle = self.standing_rectangle #works cuz implicit
         height = self.width * 2
     else:
         rectangle = self.crouched_rectangle
         height = self.width
     
     rectangle.points[0] = position + vector.Vector(self.width / -2, 0)
     rectangle.points[1] = position + vector.Vector(self.width / 2, 0)
     rectangle.points[2] = position + vector.Vector(self.width / 2, -1 * height)
     rectangle.points[3] = position + vector.Vector(self.width / -2, -1 * height)
コード例 #27
0
ファイル: test_vector.py プロジェクト: pvaddina/recipes
def Task3():
    print("###################################################")
    v1 = vec.Vector([-0.221, 7.437])
    v2 = vec.Vector([8.813, -1.331, -6.247])
    v3 = vec.Vector([5.581, -2.136])
    v4 = vec.Vector([1.996, 3.108, -4.554])
    print(v1.Magnitude())
    print(v2.Magnitude())
    v3.Normalize()
    v4.Normalize()
    print("v3 Normalized = {}".format(v3))
    print("v4 Normalized = {}".format(v4))
コード例 #28
0
 def sim_3(self):
     r1 = vector.Vector(1., 0, 0)
     v1 = vector.Vector(0, 1.1 * math.pi, 0)
     r2 = vector.Vector(-1., 0, 0)
     v2 = vector.Vector(0, -1.1 * math.pi, 0)
     One = Body.GravBody(1., r1, v1)
     Two = Body.GravBody(1., r2, v2)
     Objects = [One, Two]
     sim = Simulation.OrbitSim(physics=self.physics, body=Objects)
     sim.advance(time=10.)
     time, bodies = sim.get_results()
     self.plorbits(bodies)
コード例 #29
0
ファイル: testVectors.py プロジェクト: riddhinm5/myNumpy
def testcase1():
    print('#' * 20)
    print('performing arithmetic operations on vectors')
    print('#' * 20)
    vec1 = v.Vector([8.218, -9.341])
    vec2 = v.Vector([-1.129, 2.111])
    vec3 = v.Vector([7.119, 8.215])
    vec4 = v.Vector([-8.223, 0.878])
    vec5 = v.Vector([1.671, -1.012, -0.318])
    print(vec1 + vec2)
    print(vec3 - vec4)
    print(vec5 * 7.41)
    print('#' * 20)
コード例 #30
0
    def test_normalize3(self):
        # pdb.set_trace()
        v1 = v.Vector([-1, 1, 1])

        v1_normalized = v1.normalize()
        sqrt3 = round(math.sqrt(3), 3)
        expected_vector = v.Vector(
            [round(-1 / sqrt3, 3),
             round(1 / sqrt3, 3),
             round(1 / sqrt3, 3)])

        self.assertEqual(
            v1_normalized, expected_vector,
            "vector {} != {}".format(str(v1_normalized), str(expected_vector)))