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_bounds(position_i, size, peak, delta, bounds):
    is_hit = False
    crash_time = 0.0
    hit_normal = []
    dest_point = bounds["position"]
    dest_size = bounds["size"]
    for i in range(3):
            magnitude = delta[int(i)]
            if (magnitude == 0.0):
                        continue
            sign = 0.0
            if (magnitude > 0.0):
                        sign = 1.0
            b_peak = farthest_axis_sign(dest_point, bounds["max"], i, (1.0 - sign))
            crash_time = ((b_peak - peak[int(i)]) / magnitude)
            if ((crash_time >= 0.0) and (crash_time < 1.0)):
                        if (magnitude > 0.0):
                                        test = (b_peak + 0.5)
                        else:
                                        test = (b_peak - 0.5)
                        test_time = ((test - peak[int(i)]) / magnitude)
                        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 = vector_axis_sign(i, sign)
                                        break
    return is_hit, crash_time, hit_normal
Exemple #3
0
def crash_bounds(position_i, size, peak, delta, bounds):
    is_hit = False
    crash_time = 0.0
    hit_normal = []
    dest_point = bounds["position"]
    dest_size = bounds["size"]
    for i in range(3):
        magnitude = delta[int(i)]
        if (magnitude == 0.0):
            continue
        sign = 0.0
        if (magnitude > 0.0):
            sign = 1.0
        b_peak = farthest_axis_sign(dest_point, bounds["max"], i, (1.0 - sign))
        crash_time = ((b_peak - peak[int(i)]) / magnitude)
        if ((crash_time >= 0.0) and (crash_time < 1.0)):
            if (magnitude > 0.0):
                test = (b_peak + 0.5)
            else:
                test = (b_peak - 0.5)
            test_time = ((test - peak[int(i)]) / magnitude)
            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 = vector_axis_sign(i, sign)
                break
    return is_hit, crash_time, 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