Exemplo n.º 1
0
def do_etendue_via_imager(conj_type,
                          imager,
                          etendue_inputs,
                          etendue_grid,
                          n_0=1,
                          n_k=1):
    imager_inputs = {}
    li = dict2d.num_items_by_type(etendue_inputs, fld_ape_set, obj_img_set)
    if li['field'] == 1:
        row = dict2d.row(etendue_inputs, 'field')
        obj_img_key = 'object' if len(row['object']) else 'image'
        do_field_via_imager(conj_type,
                            imager,
                            etendue_inputs,
                            obj_img_key,
                            etendue_grid,
                            n_0=n_0,
                            n_k=n_k)

    if li['aperture'] == 1:
        row = dict2d.row(etendue_inputs, 'aperture')
        obj_img_key = 'object' if len(row['object']) else 'image'
        do_aperture_via_imager(conj_type, imager, etendue_inputs, obj_img_key,
                               etendue_grid)

    if li['field'] == 2 or li['aperture'] == 2:
        fld_ape_key = 'field' if li['field'] == 2 else 'aperture'
        # solve for imager
        imager_inputs = do_etendue_to_imager(fld_ape_key,
                                             etendue_inputs,
                                             etendue_grid,
                                             n_0=n_0,
                                             n_k=n_k)

    return imager_inputs
Exemplo n.º 2
0
 def partition_defined(self):
     """ which partition defines the imager or None """
     num_imager_inputs = len(self.imager_inputs)
     li = dict2d.num_items_by_type(self.etendue_inputs,
                                   fld_ape_set, obj_img_set)
     num_field_inputs = li['field']
     num_aperture_inputs = li['aperture']
     partitions = {'imager': num_imager_inputs,
                   'field': num_field_inputs,
                   'aperture': num_aperture_inputs}
     self.partitions = partitions
     max_partition = max(partitions, key=partitions.get)
     max_num_inputs = partitions[max_partition]
     return max_partition if max_num_inputs == 2 else None, max_num_inputs