resqpy 5.1.1__tar.gz → 5.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {resqpy-5.1.1 → resqpy-5.1.2}/PKG-INFO +1 -1
- {resqpy-5.1.1 → resqpy-5.1.2}/pyproject.toml +1 -1
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/__init__.py +1 -1
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/vector_utilities.py +18 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/LICENSE +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/README.md +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/crs.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_faults.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_coarsened_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_common.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_copy_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_drape_to_surface.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_extract_box.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_extract_box_for_well.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_gather_ensemble.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_interpolated_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_refined_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_tilted_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_unsplit_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_zonal_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/fault/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/fault/_gcs_functions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/fault/_grid_connection_set.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_cell_properties.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_connection_sets.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_create_grid_xml.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_defined_geometry.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_extract_functions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_face_functions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_faults.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_grid_types.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_intervals_info.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_pillars.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_pixel_maps.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_points_functions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_regular_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_transmissibility.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_write_nexus_corp.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_xyz.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_find_faces.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_grid_skin.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_grid_surface.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/_common.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/_polyline.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/_polyline_set.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_catalogue.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_context.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_forestry.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_grids.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_hdf5.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_model.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_xml.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/_multiprocessing.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/ab_toolbox.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/base.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/box_utilities.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/class_dict.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/consolidation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/data/build.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/data/properties.json +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/dataframe.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/exceptions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/factors.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/fine_coarse.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/grid_functions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/intersection.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/keyword_files.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/load_data.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/point_inclusion.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/random_seed.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/read_nexus_fault.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/relperm.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/simple_lines.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/time.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/trademark.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/transmission.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/triangulation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/uuid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/vdb.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/volume.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/wellspec_keywords.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/write_data.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/write_hdf5.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/xml_et.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/xml_namespaces.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/zmap_reader.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/_utils.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/boundary_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/boundary_feature_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/earth_model_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/fault_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/fluid_boundary_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/frontier_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/generic_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/genetic_boundary_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geobody_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geobody_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geologic_unit_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/horizon_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/organization_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/structural_organization_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/tectonic_boundary_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/wellbore_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/wellbore_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_add_part.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_create_xml.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_get_attributes.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_support.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_property.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/attribute_property_set.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/grid_property_collection.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/property_collection.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/property_common.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/property_kind.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/string_lookup.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_interval_property.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_interval_property_collection.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_log.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_log_collection.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_add_ab_properties.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_add_surfaces.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_grid_from_cp.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_import_nexus.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_binary_contact_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_strata_common.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_column.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_base_surface.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_combined_surface.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_mesh.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_pointset.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_surface.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_tri_mesh.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_tri_mesh_stencil.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_triangulated_patch.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_any_time_series.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_from_nexus_summary.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_functions.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_geologic_time_series.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_time_duration.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_time_series.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_hexa_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_prism_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_pyramid_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_tetra_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_unstructured_grid.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/weights_and_measures/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/weights_and_measures/nexus_units.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/__init__.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_blocked_well.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_deviation_survey.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_md_datum.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_trajectory.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_wellbore_frame.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_wellbore_marker.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_wellbore_marker_frame.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/blocked_well_frame.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/well_object_funcs.py +0 -0
- {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/well_utils.py +0 -0
@@ -1363,6 +1363,24 @@ def triangle_normal_vector_numba(points): # pragma: no cover
|
|
1363
1363
|
return v / np.linalg.norm(v)
|
1364
1364
|
|
1365
1365
|
|
1366
|
+
@njit
|
1367
|
+
def triangles_normal_vectors(t: np.ndarray, p: np.ndarray) -> np.ndarray: # pragma: no cover
|
1368
|
+
"""For a triangulated set, return an array of unit normal vectors (one per triangle).
|
1369
|
+
|
1370
|
+
note:
|
1371
|
+
resulting vectors implicitly assume that xy & z units are the same; if this is not the case, adjust vectors
|
1372
|
+
afterwards as required
|
1373
|
+
"""
|
1374
|
+
nv = np.empty((len(t), 3), dtype = np.float64)
|
1375
|
+
v = np.zeros(3, dtype = np.float64)
|
1376
|
+
for ti in range(len(t)):
|
1377
|
+
v[:] = np.cross(p[t[ti, 0]] - p[t[ti, 1]], p[t[ti, 0]] - p[t[ti, 2]])
|
1378
|
+
if v[2] < 0.0:
|
1379
|
+
v[:] = -v
|
1380
|
+
nv[ti, :] = v / np.linalg.norm(v)
|
1381
|
+
return nv
|
1382
|
+
|
1383
|
+
|
1366
1384
|
def in_circumcircle(a, b, c, d):
|
1367
1385
|
"""Returns True if point d lies within the circumcircle pf ccw points a, b, c, projected onto xy plane.
|
1368
1386
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|