Exemple #1
0
def some_other():
    vectors = vectors_component(delta)
    unit_vectors = vectors_component_unit(delta)
    for i in range(int(len(vectors))):
            vector = vectors[int(i)]
            unit_vector = unit_vectors[int(i)]
            vector_inv = array_scaled(vector, -1.0)
            child_start = point_farthest(position, max, vector_inv)
            crash_time = time_denorm_point_plane(peak, child_start, vector)
            if ((crash_time >= 0.0) and (crash_time < 1.0)):
                        child_end = sum_arrays(child_start, unit_vector)
                        end_time = time_denorm_point_plane(peak, child_end, vector)
                        if (crash_time == end_time):
                                        print json.dumps(["Error crash_bounds crash_time same as end_time", child_start, child_end], cls=SyrupEncoder)
                        elif (crash_time > end_time):
                                        print json.dumps(["Error end_time greater than crash_time", crash_time, end_time], cls=SyrupEncoder)
                        else:
                                        test_time = ((crash_time + end_time) / 2.0)
                                        test_position = sum_arrays(position_i, array_scaled(delta, test_time))
                                        test_max = sum_arrays_3(test_position, size)
                                        if is_overlap_cuboids(test_position, size, test_max, dest_point, dest_size, bounds["max"]):
                                                            crash_time = crash_time
                                                            is_hit = True
                                                            hit_normal = unit_vector
                                                            break
    return 
Exemple #2
0
def crash_things(thing_id, position_i, position_f, size, max, things):
    final = []
    hit_thing = {}
    hit_normal = []
    delta = subtract_arrays_3(position_f, position_i)
    delta_inv = array_scaled(delta, -1.0)
    peak = point_farthest(position_i, max, delta)
    e_position, e_size = bounds_cuboids(
        [cuboid_new(position_i, size),
         cuboid_new(position_f, size)])
    extent = cuboid_cached_new(e_position, e_size)
    min_time = 1.0
    hit_thing = None
    for thing in things:
        if (thing["id"] == thing_id):
            continue
        is_hit, thing_min_time, thing_hit_normal = crash_one(
            delta, delta_inv, position_i, size, peak, extent, thing)
        if is_hit:
            if (thing_min_time < min_time):
                min_time = thing_min_time
                hit_thing = thing
                hit_normal = thing_hit_normal
    scale = array_scaled(delta, min_time)
    final = sum_arrays(position_i, scale)
    return final, hit_thing, hit_normal
Exemple #3
0
def crash_things(thing_id, position_i, position_f, size, max, things):
    final = []
    hit_thing = {}
    hit_normal = []
    delta = subtract_arrays_3(position_f, position_i)
    delta_inv = array_scaled(delta, -1.0)
    peak = point_farthest(position_i, max, delta)
    e_position, e_size = bounds_cuboids([cuboid_new(position_i, size), cuboid_new(position_f, size)])
    extent = cuboid_cached_new(e_position, e_size)
    min_time = 1.0
    hit_thing = None
    for thing in things:
            if (thing["id"] == thing_id):
                        continue
            is_hit, thing_min_time, thing_hit_normal = crash_one(delta, delta_inv, position_i, size, peak, extent, thing)
            if is_hit:
                        if (thing_min_time < min_time):
                                        min_time = thing_min_time
                                        hit_thing = thing
                                        hit_normal = thing_hit_normal
    scale = array_scaled(delta, min_time)
    final = sum_arrays(position_i, scale)
    return final, hit_thing, hit_normal
Exemple #4
0
def some_other():
    vectors = vectors_component(delta)
    unit_vectors = vectors_component_unit(delta)
    for i in range(int(len(vectors))):
        vector = vectors[int(i)]
        unit_vector = unit_vectors[int(i)]
        vector_inv = array_scaled(vector, -1.0)
        child_start = point_farthest(position, max, vector_inv)
        crash_time = time_denorm_point_plane(peak, child_start, vector)
        if ((crash_time >= 0.0) and (crash_time < 1.0)):
            child_end = sum_arrays(child_start, unit_vector)
            end_time = time_denorm_point_plane(peak, child_end, vector)
            if (crash_time == end_time):
                print json.dumps([
                    "Error crash_bounds crash_time same as end_time",
                    child_start, child_end
                ],
                                 cls=SyrupEncoder)
            elif (crash_time > end_time):
                print json.dumps([
                    "Error end_time greater than crash_time", crash_time,
                    end_time
                ],
                                 cls=SyrupEncoder)
            else:
                test_time = ((crash_time + end_time) / 2.0)
                test_position = sum_arrays(position_i,
                                           array_scaled(delta, test_time))
                test_max = sum_arrays_3(test_position, size)
                if is_overlap_cuboids(test_position, size, test_max,
                                      dest_point, dest_size, bounds["max"]):
                    crash_time = crash_time
                    is_hit = True
                    hit_normal = unit_vector
                    break
    return