Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] {Merci Sachadee!}Comparer plan 3D
Auteur Message
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Salut, Smile
j'ai des fichiers plus ou moins gros indiquant des points de repère dans un plan 3D noté XYZ.
J'aimerais (mais je suis loin de pouvoir trouver comment faire tout seul) un programme qui compare chaque coordonnées de chaque point de repère, et qui m'indique si un autre point se situe dans un rayon défini par un set/p.

Exemple, je rentre 100, et ça me dit le nom des points se trouvant à moins de 100m de chaque point, si j'ai un point A en 10 10 10, il est à moins de 100m du point B en 0 0 0 je sais pas si vous voyez bien x)
Le logiciel me dira donc,
Code:

le point A est à moins de 100m du point B
le point B est à moins de 100m du point A
le point C n'a pas de point à moins de 100m à la ronde.

Bien sûr si je rentre 2 de rayon, ça dira pas la même chose.

Donc pour chaque fichier, trouver les points se situant dans un rayon défini de chaque point... je sais pas si c'est possible :X

Voici un des fichiers

Code:

  origine:
    x: 0.0
    y: 0.0
    z: 0.0

  1-1:
    x: 547.2948488252281
    y: 64.0
    z: -1567.8837862488836
    yaw: -187.20935
    pitch: 18.4433

  centre:
    x: 625.9900976464434
    y: 64.0
    z: -1489.5639296194947
    yaw: -87.51123
    pitch: 26.272999

  ciel:
    x: 548.5960962694219
    y: 99.0
    z: -1450.3935871603073
    yaw: -257.58255
    pitch: 48.241566

  p:
    x: 681.6999999880791
    y: 63.0
    z: -1465.6788146283243
    yaw: 71.845955
    pitch: 57.613945

  natureJ:
    x: 799.9753881929234
    y: 64.0
    z: -1853.0870220502973
    yaw: -169.11028
    pitch: 9.110529

  p2:
    x: 423.53453631832167
    y: 24.0
    z: -1587.4526109867086
    yaw: -353.85815
    pitch: 23.54997

  p3:
    x: 744.734164451159
    y: 70.0
    z: -1308.227120049815
    yaw: 3.7533798
    pitch: 22.50006

  fus:
    x: 753.3584037778948
    y: 75.0
    z: -1394.6597900694542
    yaw: -151.94632
    pitch: 50.99999

  p4:
    x: 929.6999999880791
    y: 71.0
    z: -1346.457174148437
    yaw: -92.396706
    pitch: 19.20005

  p5:
    x: 541.213149885705
    y: 64.0
    z: -1397.300000011921
    yaw: -7.7112427
    pitch: 7.6730046

  p6:
    x: 852.3000000119209
    y: 65.0
    z: -1880.300000011921
    yaw: -178.26031
    pitch: 12.149968

  rc:
    x: 441.567661506607
    y: 24.0
    z: -1575.055665002242
    yaw: 91.46753
    pitch: -9.150059

  chalet:
    x: 276.78582457213685
    y: 72.0
    z: -1486.760973438587
    yaw: 125.7558
    pitch: 5.569417

  ch3:
    x: 908.1631733613544
    y: 74.0
    z: -1377.4032090902824
    yaw: 88.907036
    pitch: -0.60000926

  ch8:
    x: 908.8545141418972
    y: 78.0
    z: -1373.3344114271888
    yaw: 102.25704
    pitch: -4.0500116

  v:
    x: 614.6219202713179
    y: 39.0
    z: -1616.4909288071658
    yaw: -179.33044
    pitch: 9.900015

  a:
    x: 621.569516289486
    y: 65.0
    z: -1506.518273296067
    yaw: 6.8411407
    pitch: -4.492212

  res:
    x: 266.97905461301696
    y: 79.0
    z: -1499.4452561662329
    yaw: 285.22702
    pitch: 17.550112

  p7:
    x: 733.4053359466938
    y: 65.0
    z: -1461.5567963833753
    yaw: 9.596607
    pitch: 19.950035

  ges:
    x: 320.09180029063725
    y: 72.0
    z: -1508.435384999496
    yaw: 10.705806
    pitch: 1.6500007


Pour pas encore compliquer une tâche tellement complexe, les décimales n'ont pas besoin de figurer dans les calculs, à l'échelle du plan, 0.1 mètre ne représente rien.
Le YAW et le PITCH ne servent pas, puis ce qu'un point n'a pas besoin de rotation.

Pour vous expliquer le code précédent,
Code:

  NOM DU POINT:
    x: coordonnée X
    y: altitude, toujours positive
    z: coordonnée Z, toujours négative
    yaw: on s'en fout
    pitch: on s'en fout

L'origine ne sert pas à grand chose ^^


Merci Wink



Dernière édition par Hugo7 le Dim 1 Fév 2015 - 15:53; édité 1 fois

______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
En gros tu veux un rapport complet de chaque position par rapport au autre label.

1-1
- centre
- ciel
-p
-naturej
-...


Centre
-1-1
-ciel
-p
-natureJ
-...


Ciel
-1-1
-p
-natureJ
-...


etc...

c'est ça ?

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Oui, mais n’apparaîtront que les noms des points à N distance définie via un set/p par exemple

EDIT pas des labels, c'est vraiment des points dans un plan en 3D XYZ




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Une premièr approche,

test et dis moi si c'est cela qu'il te faut :

Le fichier contenant tes valeurs et : Input.txt

Code:

::SachaDee 2015

@echo off&cls&color f9
setlocal enabledelayedexpansion
del sortie.log 2>nul
del sortie1.log 2>nul

set /p "$limit=Entre la limite maximum : "


::Récuperation des label existant

Echo -^> [Recuperation des labels]
  set $l1=
for /f "tokens=1,2 delims=:" %%a in (input.txt) do (
  set $t1=%%a
  set $t2=%%b
  if not defined $t2 set $l1=!$l1!,!$t1: =!
)

echo ----^>!$l1:~1!
Echo -^> [Recuperation des labels] OK
call:aff

::Mise des Labels dans un array -> ##$label[[x][y][z]]
Echo.-^> [Creation des Arrays]

for %%a in (!$l1:~1!) do (
  set "$sw=0"
  for /f "tokens=1,2 delims=:" %%b in (input.txt) do (
      set "$ligne=%%b"
      if "!$ligne: =!"=="%%a" set "$sw=1"
      if !$sw!==1 if "!$ligne: =!"=="x" for /f "tokens=1 delims=." %%x in ('echo %%c') do set ##$%%a[1]=%%x
      if !$sw!==1 if "!$ligne: =!"=="y" for /f "tokens=1 delims=." %%x in ('echo %%c') do set ##$%%a[2]=%%x
      if !$sw!==1 if "!$ligne: =!"=="z" (
         for /f "tokens=1 delims=." %%x in ('echo %%c') do set ##$%%a[3]=%%x
         set $sw=0)
  )
echo ----^> %%a !##$%%a[1]! !##$%%a[2]! !##$%%a[3]!

)
set ##$
Echo -^> [Creation des Arrays] OK
call:aff

::Comparaison des points de chaque labels X Y Z
Echo.-^> [Comparaison des point de chaque label]

for %%a in (!$l1:~1!) do (
  for %%b in (!$l1:~1!) do (
    echo ----^> Comparaison de %%a contre %%b
    set /a $difx=!##$%%a[1]!-!##$%%b[1]!
    set /a $dify=!##$%%a[2]!-!##$%%b[2]!
    set /a $difz=!##$%%a[3]:-=!-!##$%%b[3]:-=!
    set $difx=!$difx:-=!
    set $dify=!$dify:-=!
    set $difz=!$difz:-=!
    set /a $c+=1

  if !$difx! GEQ %$limit% (echo Difference depassé entre [%%a] et [%%b] en x : !$difx!>>sortie.log
    ) else (echo OK entre [%%a] et [%%b] en x : !$difx!>>sortie1.log)

    if !$dify! GEQ %$limit% (echo Difference depassé entre [%%a] et [%%b] en y : !$dify!>>sortie.log
    ) else  (echo OK entre [%%a] et [%%b] en y : !$dify!>>sortie1.log)
   
    if !$difz! GEQ %$limit% (echo Difference depassé entre [%%a] et [%%b] en z : !$difz!>>sortie.log
    ) else  (echo OK entre [%%a] et [%%b] en z : !$difz!>>sortie1.log)

  )
)
Echo.-^> [Comparaison des point de chaque label] OK
echo.
Echo. By SachaDee - 2015

start notepad sortie.log
start notepad sortie1.log
exit/b
:aff
Echo.
Echo. //
Echo. //-----------------------------------------------------------
Echo. //
Echo.



Ici je test chaque point. Maintenant si il te faut traiter la difference cumulée sur la profondeur et la hauteur il suffit d'additioner les 3 éléments
et de faire le test.

Okay



Dernière édition par sachadee le Dim 1 Fév 2015 - 12:49; édité 1 fois

______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Merci Shocked
Okay

EDIT: comment on fait pour que ça dise quand la limite n'est pas dépassée? Laughing




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Code:
    if !$difx! GEQ %$limit% (echo Difference depassé entre [%%a] et [%%b] en x : !$difx!>>sortie.log
    ) else (echo OK entre [%%a] et [%%b] en x : !$difx!>>sortie1.log)

    if !$dify! GEQ %$limit% (echo Difference depassé entre [%%a] et [%%b] en y : !$dify!>>sortie.log
    ) else  (OK entre [%%a] et [%%b] en y : !$dify!>>sortie1.log)
   
    if !$difz! GEQ %$limit% (echo Difference depassé entre [%%a] et [%%b] en z : !$difz!>>sortie.log
    ) else  (OK entre [%%a] et [%%b] en z : !$difz!>>sortie1.log)



Ça va te créer un sortie1.log qui contient les élement OK. Faudrait rajouter un filtre pour qu'il ne test pas les élements
sur eux-même.

Mais c'est un détail que tu pourras facilement adapter si nécessaire.

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Voilà Hugo code corrigé et debugger (partie des valeurs négative).

Fait des tests sur 2 ou 3 labels dans tous les sens pour voir si le comportement est OK.

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
OMG super ça marche merci Surprised




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Simple question pour Hugo : ça va te servir à quoi Laughing




______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Ah ah.... mystèèèère... Laughing




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Le format de fichier est en YAML ?




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R] {Merci Sachadee!}Comparer plan 3D 
Oui




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Message [R] {Merci Sachadee!}Comparer plan 3D 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch