Ë
    y§jÝ  ã                   óT  — d dl Zd dlmZ d dlZd dlZ ee«      j                  d   dz  Z	ej                  j                  de	«      Zej                  j                  e«      Zej                  j!                  e«        G d„ dej"                  «      Zedk(  r ej(                  «        yy)	é    N)ÚPathé   zrepresentations.pyÚrepresentationsc                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚRepresentationTestsc                 ó  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢gt        «      }t        j                  g d¢g d¢g«      }t        j	                  ||t        j
                  g d	¢d
«      t        j                  d«      t        j                  d«      t        j                  dt        «      g d¢d«      }t        j                  |d   «      t        t        j                  |d   «      «      dz     \  }}| j                  |d   ||f   d«       |d   ||f   }| j                  t        j                  |j                  «       d«      «       | j                  t        j                  |d   ||f   |||d      z  d¬«      «       y )N)éÿÿÿÿr	   r   )r   r	   r   ©r   r   r   )r	   r	   r   )r   r	   r   )r   r   r   )r   r   é   )é   é   é   ©r   r   ç      ð?©é   r   r   ©r   r   r   é!   Ú
visibilityr   Úsource_triangler   ÚbarycentricÚxyz_mmgñhãˆµøä>)Úatol)ÚnpÚarrayÚfloatÚrepÚrasterize_viewÚtileÚzerosÚonesÚboolÚargwhereÚlenÚassertEqualÚ
assertTrueÚiscloseÚsumÚallclose)ÚselfÚpÚfÚoutÚyÚxÚbs          õU   /Users/bsk/Downloads/á„†á…©á†¯á„�á…¦á†¨á„‰á…³/ì „ì²˜ë¦¬/tests/test_representations.pyÚ,test_z_buffer_and_barycentric_backprojectionz@RepresentationTests.test_z_buffer_and_barycentric_backprojection   s3  € ä�H‰H’i¢ª²º8ÂGÐLÌUÓSˆÜ�H‰H’gšgÐ&Ó'ˆÜ× Ñ   1¤R§W¡WªX°eÓ%<¼R¿X¹XÀa»[ÌÏÉÐRSËÔUW×U\ÑU\Ð]^Ô_cÓUdÒelÐmoÓpˆÜ�K‰K˜˜LÑ)Ó*¬3¬r¯{©{¸3¸|Ñ;LÓ/MÓ+NÐPQÑ+QÑR‰ˆˆ!Ø×Ñ˜Ð.Ñ/°°!°Ñ4°aÔ8Ø
ˆmÑ
˜Q˜q˜SÑ
!ˆ 4§?¡?´2·:±:¸a¿e¹e»gÀaÓ3HÔ#IØ�‰œŸ™ C¨¡M°!°A°#Ñ$6¸¸A¸aÀ¹d¹G¹È$ÔOÕPó    c                 ó"  — t        j                  dt        ¬«      j                  dd«      t        j                  g d¢d«      t        j
                  d«      t        j
                  d«      t        j
                  dt        «      t        j                  d«      dœ}d|d	   d
<   t        j                  |d«      t        j                  |d«      }}| j                  t        j                  |d   |d   «      «       t        j                  |j                  «       D ��ci c]3  \  }}|t        |t         j                  «      r|j                  r|d d n|“Œ5 c}}d«      }| j!                  |d   d
dd…f   j#                  «       «       | j                  |d   d   «       | j%                  t        |d   d   «      d«       | j!                  |d   d d …dd …f   j#                  «       «       | j!                  |d   j#                  «       «       y c c}}w )NéZ   )Údtypeé   r   r   )r7   r   )Úpos_mmÚnormalÚ	k1_per_mmÚ	k2_per_mmÚcurvature_validÚnormal_turn_degFr<   r   é
   r   r   Úfeature_validé   é	   )r   rA   r/   ©r   r@   ç        Útraining_valid)r   Úaranger   Úreshaper   r!   r"   r    r   Ú
cad_pointsr&   Úarray_equalÚitemsÚ
isinstanceÚndarrayÚndimÚassertFalseÚanyr%   )r*   ÚcadÚar0   ÚkÚvÚones          r1   Ú=test_sampling_is_deterministic_and_missing_masks_are_explicitzQRepresentationTests.test_sampling_is_deterministic_and_missing_masks_are_explicit   sþ  € Ü—i‘i ¬Ô/×7Ñ7¸¸1Ó=ÄrÇwÁwÊxÐX^ÓG_Ôln×lsÑlsÐtvÓlwô  EG÷  ELñ  ELð  MOó  EPô  ce÷  cjñ  cjð  kmô  nró  csô  FH÷  FNñ  FNð  OQó  FRñ  SˆØ$)ˆÐÑ˜qÑ!Ü�N‰N˜3˜rÓ"¤3§>¡>°#°bÓ#9ˆ!ˆØ�‰œŸ™ qÐ):Ñ';¸AÐ>OÑ<PÓQÔRä�N‰NÐ_b×_hÑ_hÔ_jÔkÑ_jÑX[ÐXYÐZ[˜A¬
°1´R·Z±ZÔ(@ÀQÇVÂV˜q  !™uÐQRÑRÐ_jÒkÐmnÓoˆØ×Ñ˜˜_Ñ-¨a°°!°¨eÑ4×8Ñ8Ó:Ô;Ø�‰˜˜OÑ,¨SÑ1Ô2Ø×Ñœ˜s 3™x¨™}Ó-¨sÔ3Ø×Ñ˜˜?Ñ+ªA¨b©c¨EÑ2×6Ñ6Ó8Ô9Ø×Ñ˜Ð+Ñ,×0Ñ0Ó2Õ3ùó ls   Ä8H
c                 óü  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢gt        «      t        j                  g d¢d«      t        j                  g d	¢«      t        j                  g d	¢«      t        j                  g d
¢t        «      t        j
                  d«      t        j                  ddgddgddgg«      dœ}t        j                  |d«      }| j                  t        |d   «      d«       | j                  |d   xr |d    «       | j                  |d   d d …df   j                  «       dk(  xr |d   d d …dd …f   j                  «        «       | j                  t        |d   d   «      t        j                  d«      d¬«       | j                  t        |d   d   «      dd¬«       | j                  |d   d   xr |d   d   xr |d   d   «       | j                  t        |d   «      d d¬«       y )!N©r   r   r   )çš™™™™™¹?r   r   )r   rW   r   )rW   rW   r   )çš™™™™™É?rW   r   )rW   rX   r   r   r   )r   g      ð¿r   ç      Y@rY   rY   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r8   r9   r:   r;   r<   r=   ÚfaceÚ	grid_dims)r   r   r   Úsurface_onlyÚsolid_occupancyr/   r?   rA   )r   r   ©ÚplacesrB   r   )r   é   Úvoxel_pitch_mmrX   )r   r   r   r   r"   r    r   Úsurface_voxelsr%   Útupler&   ÚminrN   ÚassertAlmostEqualÚsqrt)r*   rO   rR   s      r1   ÚNtest_surface_voxel_aggregation_is_surface_only_keeps_pitch_and_ignores_invalidzbRepresentationTests.test_surface_voxel_aggregation_is_surface_only_keeps_pitch_and_ignores_invalid$   se  € ô —h‘h¢ª²º)ÂIÊiÐXÔY^Ó_Ôik×ipÑipÒqyÐzó  jAô  NP÷  NVñ  NVò  Wqó  Nrô  A÷  Gñ  Gò  Hbó  cô  vx÷  v~ñ  v~ò  Lô  MQó  vRô  eg÷  emñ  emð  noó  epô  xz÷  x@ñ  x@ð  CDð  EFð  BGð  IJð  KLð  HMð  OPð  QRð  NSð  ATó  xUñ  VˆÜ
×
Ñ
˜S Ó
#ˆØ×Ñœ˜q ™~Ó.°Ô8Ø�‰˜˜.Ñ)ÒF°!Ð4EÑ2FÐ.FÔGØ�‰˜˜#™šq ˜s™Ÿ™Ó)¨QÑ.ÒU°q¸Ñ7IÊ!ÈAÉBÈ$Ñ7O×7SÑ7SÓ7UÐ3UÔVØ×Ñœu Q s¡V¨C¡[Ó1´2·7±7¸1³:ÀaÐÔHØ×Ñœu Q s¡V¨C¡[Ó1°3¸qÐÔAØ�‰˜˜/Ñ*¨3Ñ/Òg°A°oÑ4FÀsÑ4KÒgÐPQÐRaÑPbÐcfÑPgÔhØ×Ñœu QÐ'7Ñ%8Ó9¸2ÀaÐÕHr3   c           
      óŒ  — t        j                  g d¢g d¢g d¢gt        «      }|t        j                  g d¢d«      t        j                  dgdgdgg«      t        j                  g d	¢«      t        j                  g d	¢«      t        j                  g d
¢t        «      t        j
                  d«      dœ}t        j                  ||d   |d   t        j                  d«      t        j                  d«      |d   g d¢d«      }|d   }| j                  t        |d   |d   z
  «      t        |d   |d   z
  «      d¬«       t        j                  |d«      }| j                  |d   j                  dt        t        j                  «      ddf«       | j                  |d   j                  |d   j                  «       | j                  |d   d d …dd …f   j!                  «       «       | j                  |d   d d …dd…f   j!                  «       «       | j#                  t        j$                  |d   «      j'                  «       «       y )NrV   )r>   r   r   r
   r   )r   r   r   r   r   )r   r   g     ÀX@)r   r   r   r   )r8   r9   rZ   r:   r;   r<   r=   rZ   r9   r<   r   é@   Úorthographic_bounds_uw_mmr   r^   é    r/   r   r?   é   r@   rA   )r   r   r   r   r"   r    r   r   r!   re   Úmake_multiviewr%   Úshaper$   ÚIMAGE_FEATURE_NAMESrM   rN   r&   ÚisfiniteÚall)r*   r+   rO   Úrawr0   Úmvs         r1   Ú3test_image_contract_masks_and_physical_screen_scalezGRepresentationTests.test_image_contract_masks_and_physical_screen_scale1   s  € Ü
�(‰(’GšH¢WÐ-¬eÓ
4ˆØ¤§¡ª°%Ó!8ÄÇÁÈ1È#ÈqÈcÐSTÐRUÈÓ@WÔdf×dlÑdlÒmxÓdyô  GI÷  GOñ  GOò  P[ó  G\ô  oq÷  owñ  owò  xô  @Dó  oEô  XZ÷  X`ñ  X`ð  abó  Xcñ  dˆÜ×Ñ˜q  V¡¨S°©]¼2¿7¹7À1»:ÄbÇgÁgÈaÃjÐQTÐUfÑQgÒhoÐprÓsˆØ
Ð)Ñ
*ˆØ×Ñœu Q q¡T¨!¨A©$¡YÓ/´°q¸±t¸A¸a¹D±yÓ1AÈ!ÐÔLÜ×Ñ˜c "Ó%ˆØ×Ñ˜˜C™Ÿ™¨¬3¬s×/FÑ/FÓ+GÈÈ2Ð(NÔOØ×Ñ˜˜OÑ,×2Ñ2°B°s±G·M±MÔBØ×Ñ˜˜OÑ,ªQ¨r©s¨UÑ3×7Ñ7Ó9Ô:Ø×Ñ˜˜OÑ,ªQ¨q°¨s¨UÑ3×7Ñ7Ó9Ô:Ø�‰œŸ™ B s¡GÓ,×0Ñ0Ó2Õ3r3   c                 óÎ  — t         j                  t        j                  g d¢«      t        j                  dgdgdgg«      «      }| j	                  |d   d   dk(  xr |d   d   dk  «       | j                  t        «      5  t         j                  t        j                  d	t        j                  g«      t        j                  d
gdgg«      «       d d d «       y # 1 sw Y   y xY w)N)rC   r   ç       @g      $@g       @g      @Úmaxr   r>   Úcooling_rate_per_srC   r   rv   )r   Úthermal_history_featuresr   r   r&   ÚassertRaisesÚ
ValueErrorÚnan)r*   r/   s     r1   Ú@test_thermal_requires_real_history_and_has_stated_rate_semanticszTRepresentationTests.test_thermal_requires_real_history_and_has_stated_rate_semantics>   s¹   € Ü
×
&Ñ
&¤r§x¡x²
Ó';¼B¿H¹HÀsÀeÈRÈDÐRTÐQUÐEVÓ<WÓ
XˆØ�‰˜˜%™ ™ rÑ)ÒL¨aÐ0DÑ.EÀaÑ.HÈ1Ñ.LÔMØ×ÑœzÕ*¬C×,HÑ,HÌÏÉÐSUÔVX×V\ÑV\ÐR]ÓI^Ô_a×_gÑ_gÐjlÐimÐoqÐnrÐhsÓ_tÔ,u×*×*Ñ*ús   ÂACÃC$c                 ó\  — t         j                  t        j                  g d¢g«      «      \  }}| j	                  |dd d…f   j                  «       «       | j                  |ddd …f   j                  «       «       | j	                  t        j                  |«      j                  «       «       y )N)r   rv   g      @r   r   )	r   Úestimate_scan_featuresr   r   r&   rq   rM   rN   rp   )r*   r/   Úvalids      r1   Ú+test_degenerate_scan_neighborhood_is_maskedz?RepresentationTests.test_degenerate_scan_neighborhood_is_maskedC   s|   € Ü×+Ñ+¬B¯H©H²j°\Ó,BÓC‰ˆˆ5Ø�‰˜˜a   ˜d™Ÿ™Ó)Ô*Ø×Ñ˜˜q ¡˜t™Ÿ™Ó*Ô+Ø�‰œŸ™ A›×*Ñ*Ó,Õ-r3   N)	Ú__name__Ú
__module__Ú__qualname__r2   rT   rg   rt   r}   r�   © r3   r1   r   r      s#   „ òQò4òIò4òvó
.r3   r   Ú__main__)Úimportlib.utilÚ	importlibÚpathlibr   ÚunittestÚnumpyr   Ú__file__ÚparentsÚMODULEÚutilÚspec_from_file_locationÚspecÚmodule_from_specr   ÚloaderÚexec_moduleÚTestCaser   r‚   Úmainr…   r3   r1   Ú<module>r—      s”   ðÛ Ý Û ã á	ˆh‹×	Ñ	 Ñ	"Ð%9Ñ	9€Ø‡~�~×-Ñ-Ð.?ÀÓH€Ø‡n�n×%Ñ% dÓ+€¨T¯[©[×-DÑ-DÀSÔ-Iô;.˜(×+Ñ+ô ;.ð| ˆzÒØ€H‡M�M…Oð r3   