Shadow Cache#

  • Shadow Cache Density
  • Cache Entry at $a = 215^\circ$, $h = -32^\circ$
[Taichi] Starting on arch=arm64
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 40, in load_finfo
    poly = PC3TYPE(0.0)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1436, in __call__
    return self._instantiate(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1530, in _instantiate
    return self._instantiate_in_python_scope(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1517, in _instantiate_in_python_scope
    return Matrix(

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 42, in load_finfo
    FINFOFIELD[i].vi = P3STRUCT(polygon=poly, k=num_verts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 634, in __call__
    data = dtype(data)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1451, in __call__
    return self._instantiate(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1530, in _instantiate
    return self._instantiate_in_python_scope(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1517, in _instantiate_in_python_scope
    return Matrix(

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 42, in load_finfo
    FINFOFIELD[i].vi = P3STRUCT(polygon=poly, k=num_verts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 640, in __call__
    struct = self.cast(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 767, in cast
    entries[k] = dtype(struct._Struct__entries[k])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1451, in __call__
    return self._instantiate(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1530, in _instantiate
    return self._instantiate_in_python_scope(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1517, in _instantiate_in_python_scope
    return Matrix(

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 42, in load_finfo
    FINFOFIELD[i].vi = P3STRUCT(polygon=poly, k=num_verts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 43, in load_finfo
    FINFOFIELD[i].fn = POINT3TYPE(*fn.astype(np.float32))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 44, in load_finfo
    FINFOFIELD[i].fc = POINT3TYPE(*fc.astype(np.float32))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/13-attitude-2024/plot_cache.py", line 38, in <module>
    ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 45, in load_finfo
    FINFOFIELD[i].a = _poly_area_r3(vi)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
[[  0   0   0  35 192   0 702   0   0   0   0 120   0 115]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0]
 [  0  34   0   0 221   0   0   0 735   0   0 124   0 118]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0]
 [  0  20   0  21   0   0   0   0   0   0   0 228   0 228]
 [  0 342   0 343   0   0   0   0   0   0   0   0  63  63]
 [  0   0   0 223   0   0   0   0   0   0 163 163 163 163]
 [  0 375   0 393   0   0   0   0   0   0 228   0 228   0]
 [  0 222   0   0   0   0   0   0   0   0 161 161 161 161]
 [  0 329   0 337   0   0   0   0   0   0  63  63   0   0]
 [  0 116   0 118   0 355   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0 355   0   0   0   0   0   0   0   0]
 [  0 113   0 114   0   0   0   0   0 355   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0 355   0   0   0   0]]
9342
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 1 0 0 1 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 1 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 1 0 0 0 0]]

import sys

sys.path.append('/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip')
import matplotlib.pyplot as plt
import numpy as np
import taichi as ti
import ticlip

import mirage.vis as mrv


def azel_to_ij(naz: int, nel: int, az: float, el: float):
    i = int(np.floor(az / (np.pi * 2) * (naz - 1)))
    j = int(np.floor((el + np.pi / 2) / np.pi * (nel - 1)))
    return i, j


def ij_to_az_el(naz: int, nel: int, i: int, j: int) -> np.ndarray:
    az = i / naz * ti.math.pi * 2
    el = j / nel * ti.math.pi - ti.math.pi / 2
    return np.array((az, el))


ti.init(
    arch=ti.cpu,
    cfg_optimization=False,
    opt_level=1,
    fast_math=False,
    advanced_optimization=False,
)

obj_path = '/Users/liamrobinson/Documents/maintained-research/mirage-models/accurate_sats/box_wing_antenna_quad.obj'
ticlip.load_finfo(obj_path)

naz, nel = 75, 50
cache = ticlip.gen_cache(naz, nel)
cache_np = cache.to_numpy(dtype=np.uint32)
assert np.allclose(
    0.0, np.trace(cache_np, axis1=-1, axis2=-2).sum()
)  # Make sure that no face is ever shadowing itself

print(cache_np.sum(axis=0).sum(axis=0))
cache_sum = cache_np.sum(axis=2).sum(axis=2)
print(cache_sum.sum())

deg_start = (215, -32)
az, el = np.deg2rad(deg_start)
i, j = azel_to_ij(naz, nel, az, el)
azel_start = np.rad2deg(ij_to_az_el(naz, nel, i, j))
# print(ij_to_az_el(naz, nel, i, j))

azmax = az + 2 * np.pi / naz
elmax = el + np.pi / nel
extent = np.rad2deg(([az, azmax, el, elmax]))

plt.figure(figsize=(6, 4))

im = ticlip.plot_cache(cache)

a1 = plt.gca()
a1.add_patch(
    plt.Rectangle(
        azel_start,
        width=360 / naz,
        height=180 / nel,
        fill=False,
        edgecolor='red',
        linewidth=2,
    )
)
plt.title('Shadow Cache Density')
plt.xlabel('Azimuth ($a$) [deg]')
plt.ylabel('Elevation ($h$) [deg]')
plt.colorbar(im, label='Number of Self-Shadowing Faces', cax=mrv.get_cbar_ax())
plt.tight_layout()

plt.figure(figsize=(4, 4))

plt.gca().set_aspect(1)
print(cache_np[i, j, :, :])
plt.imshow(
    cache_np[i, j, :, :], cmap='gray_r', alpha=cache_np[i, j, :, :].astype(np.float32)
)
old_lims = (-0.5, cache_np.shape[3] - 0.5)

plt.vlines(np.arange(cache_np.shape[3] + 1) - 0.5, *old_lims, color='gray')
plt.hlines(np.arange(cache_np.shape[3] + 1) - 0.5, *old_lims, color='gray')
plt.xlim(old_lims)
plt.ylim(old_lims)
plt.scatter(np.nan, np.nan, c='k', label='Self-Shadowing')
plt.title(rf'Cache Entry at $a = {deg_start[0]}^\circ$, $h = {deg_start[1]}^\circ$')
plt.xlabel('Shadowed facet index')
plt.ylabel('Shadowing facet index')
plt.xticks(list(range(cache_np.shape[3])))
plt.yticks(list(range(cache_np.shape[3])))

plt.tight_layout()
plt.show()

Total running time of the script: (0 minutes 1.796 seconds)

Gallery generated by Sphinx-Gallery