(Created page with "La question traitée ici concerne le mapping de données dans un espace cyclique. Le traitement d'angle est le premier qui me vient en tête. == base == |--------*-------...")
 
Line 1: Line 1:
 
La question traitée ici concerne le mapping de données dans un espace cyclique. Le traitement d'angle est le premier qui me vient en tête.
 
La question traitée ici concerne le mapping de données dans un espace cyclique. Le traitement d'angle est le premier qui me vient en tête.
 +
 +
= remapping angles =
  
 
== base ==
 
== base ==
Line 7: Line 9:
 
   0        a                b          c              d      2PI
 
   0        a                b          c              d      2PI
 
    
 
    
l'idée est d'écarter 2 valeurs consécutives, b et c par ex, et de rediffuser les 2 autres, a et d, de manière proportionnelle
+
l´idée est d´écarter 2 valeurs consécutives, b et c par ex, et de rediffuser les 2 autres, a et d, de manière proportionnelle
  
 
pour ce faire > calcul du point médian x
 
pour ce faire > calcul du point médian x
Line 20: Line 22:
  
 
   |--------*--------<--------*-----!-----*-------->------*--------|
 
   |--------*--------<--------*-----!-----*-------->------*--------|
   0        a        b'       b    x    c        c'     d      2PI
+
   0        a              b    x    c            d      2PI
  
distance b'x = (c'-b')
+
distance b´x = (-)
 
x = b + bx/2
 
x = b + bx/2
  
on a donc perdu (b'x - bx) radians
+
on a donc perdu (b´x - bx) radians
  
 
   |----*---------|----*---------|----*---------|
 
   |----*---------|----*---------|----*---------|
-2PI  a'       0    a        2PI  a''     4PI
+
-2PI        0    a        2PI  a´´     4PI
  
ce qu'il ne faut pas oublier: l'espace est cyclique > a' ~ a ~ a''
+
ce qu´il ne faut pas oublier: l´espace est cyclique > ~ a ~ a´´
  
 
on peut descendre en négatif et passer 2PI sans que ça pose de réel problème
 
on peut descendre en négatif et passer 2PI sans que ça pose de réel problème
  
 
   |---!--------*-----------*-----*----------*-----|---!--------*
 
   |---!--------*-----------*-----*----------*-----|---!--------*
   0  x'       a          b    c          d    2PI  x        a'
+
   0        a          b    c          d    2PI  x       
 
       3        11          22    27        37  42  45      53
 
       3        11          22    27        37  42  45      53
  
l'angle entre d et a est à plusieurs positions simultanément
+
l´angle entre d et a est à plusieurs positions simultanément
 
pour son calcul: ( d + a ) / 2 - ( 37 + 11 ) -> 48!!!!, divisé par 2, on arrive à 24, donc pas du tout où il faut!
 
pour son calcul: ( d + a ) / 2 - ( 37 + 11 ) -> 48!!!!, divisé par 2, on arrive à 24, donc pas du tout où il faut!
 
il faut ajouter 42 à a => 53, et là: (37+57)/2, 90/2 => 45 paf!
 
il faut ajouter 42 à a => 53, et là: (37+57)/2, 90/2 => 45 paf!
Line 55: Line 57:
 
               a      |  c  b          |      d     
 
               a      |  c  b          |      d     
 
               11    |  19  22        |      37
 
               11    |  19  22        |      37
   0                  |' |  |          |
+
   0                  |´ |  |          |
 
                     |  \  |          |
 
                     |  \  |          |
                     a'   c' b'         d'
+
                       c´ b´        
 
                   16  20.9  22.8      32
 
                   16  20.9  22.8      32
  
? b'
+
?
  
 
distance_b
 
distance_b
Line 70: Line 72:
 
     distance_b = b - a => 11
 
     distance_b = b - a => 11
 
     distance_init = d - a => 26
 
     distance_init = d - a => 26
     distance_new = d' - a' => 16
+
     distance_new = - => 16
 
     percent_b = distance_b / distance_init = > 0.423076923
 
     percent_b = distance_b / distance_init = > 0.423076923
     out_b = a' + percent_b * distance_new (6.769230769) => 22.769230769
+
     out_b = + percent_b * distance_new (6.769230769) => 22.769230769
 
return out_b
 
return out_b
  
pour c'
+
pour
 
si c < d:
 
si c < d:
 
     distance_c = b - a => 8
 
     distance_c = b - a => 8
 
     distance_init = d - a => 26
 
     distance_init = d - a => 26
     distance_new = d' - a' => 16
+
     distance_new = - => 16
 
     percent_b = distance_c / distance_init = > 0.307692308
 
     percent_b = distance_c / distance_init = > 0.307692308
     out_b = a' + percent_b * distance_new (4.923076923) => 20.923076923
+
     out_b = + percent_b * distance_new (4.923076923) => 20.923076923
 
return out_b
 
return out_b
  
 
le process semble ok pour les angles compris entre a et d
 
le process semble ok pour les angles compris entre a et d
dans la méthode, d est le point d'entrée
+
dans la méthode, d est le point d´entrée

Revision as of 13:38, 30 August 2017

La question traitée ici concerne le mapping de données dans un espace cyclique. Le traitement d'angle est le premier qui me vient en tête.

remapping angles

base

 |--------*-----------------*-----------*--------------*--------|
 0        a                 b           c              d       2PI
 

l´idée est d´écarter 2 valeurs consécutives, b et c par ex, et de rediffuser les 2 autres, a et d, de manière proportionnelle

pour ce faire > calcul du point médian x

 |--------*-----------------*-----!-----*--------------*--------|
 0        a                 b     x     c              d       2PI

distance bx = (c-b) x = b + bx/2

le remap spécifie les nouvelles valeurs de b et de c

 |--------*--------<--------*-----!-----*-------->------*--------|
 0        a        b´       b     x     c        c´     d       2PI

distance b´x = (c´-b´) x = b + bx/2

on a donc perdu (b´x - bx) radians

 |----*---------|----*---------|----*---------|

-2PI a´ 0 a 2PI a´´ 4PI

ce qu´il ne faut pas oublier: l´espace est cyclique > a´ ~ a ~ a´´

on peut descendre en négatif et passer 2PI sans que ça pose de réel problème

 |---!--------*-----------*-----*----------*-----|---!--------*
 0   x´       a           b     c          d    2PI  x        a´
     3        11          22    27         37   42   45       53

l´angle entre d et a est à plusieurs positions simultanément pour son calcul: ( d + a ) / 2 - ( 37 + 11 ) -> 48!!!!, divisé par 2, on arrive à 24, donc pas du tout où il faut! il faut ajouter 42 à a => 53, et là: (37+57)/2, 90/2 => 45 paf! si a < d,

   a += 2PI

center = (d+a)/2

remap method()

dans le remap, je demande un recalcul de b dans les bornes d > a vers d-5, a + 5

   a, in, out, in_to, out_to
   b, 11, 37,  16,    32
 |-----------*--->--*---*---*----------*---<--*-----|
 0           |      |   |   |          |      |    2PI
             a      |   c   b          |      d    
             11     |   19  22         |      37
 0                  |´  |   |          |
                    |   \   |          |
                   a´    c´ b´         d´
                  16  20.9  22.8       32

? b´

distance_b distance_init distance_new percent_b out_b si b < d:

   distance_b = b - a => 11
   distance_init = d - a => 26
   distance_new = d´ - a´ => 16
   percent_b = distance_b / distance_init = > 0.423076923
   out_b = a´ + percent_b * distance_new (6.769230769) => 22.769230769

return out_b

pour c´ si c < d:

   distance_c = b - a => 8
   distance_init = d - a => 26
   distance_new = d´ - a´ => 16
   percent_b = distance_c / distance_init = > 0.307692308
   out_b = a´ + percent_b * distance_new (4.923076923) => 20.923076923

return out_b

le process semble ok pour les angles compris entre a et d dans la méthode, d est le point d´entrée

online identity ∋ [ social ∋ [mastodon♥, twitter®, facebook®, diaspora, linkedin®] ∥ repos ∋ [github®, gitlab♥, bitbucket®, sourceforge] ∥ media ∋ [itch.io®, vimeo®, peertube♥, twitch.tv®, tumblr®] ∥ communities ∋ [godotengine♥, openprocessing, stackoverflow, threejs]]