[Discussion] Life is peripheral, World Interface scanRegion [Discussion]

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Discussion] Life is peripheral, World Interface scanRegion [Discussion]

Message par skypop le Jeu 22 Sep - 23:26

Tout d'abord, je salue la dernière MAJ, qui harmonise les fonctionnalités entre le mode local et serveur.
De plus, le World Interface se voit augmenter d'une nouvelle fonction qui sera certainement très efficace :
WorldInterface.scanRegion()
getMethod(\"scanRegion") a écrit:scanRegion(X, Y, Z, dX, dY, dZ)
scanRegion(Number,Number,Number,Number,Number,Number)
This function return blocks informations between two points
Elle retourne une table de tous les blocs contenus dans la zone définie, et pour chaque le même éventail de données retourné par la fonction getBlockInfos().
Les blocs d'air (minecraft:air) ne sont pas rajoutés dans la table (ce qui réduit utilement le volume)

Enfin, si l'on est familier du paramétrage x1, y1, z1, x2, y2, z2 qui est employé par bon nombre de commandes Minecraft, il y a un risque de confusion.
Dans les commandes minecraft, les coordonnées 1 et 2 sont inclues dans la zone, ce n'est pas le cas avec scanRegion.

Par exemple :
Code:
> wi = peripheral.find("WorldInterface")
> wi.scanRegion(1,1,1, 1,2,1)
{}
Dans le cas où X == dX, Y==dY ou Z==dZ on pourrait supposer que la zone scannée serait un bloc, une colonne ou un plan.
Or la zone définie mesure 0 d'épaisseur, elle ne peut donc pas contenir de bloc.

Avec comme paramètres X=1 , Y=1, Z=1, dX=2, dY=2, dZ=2
On supposerait simplement scanner un volume de 2x2x2, or la zone définie ne contiens qu'un seul bloc. Les coordonnées dX, dY et dZ définissent la limite de la zone et ne sont pas incluses. La zone définie est un cube de 1x1x1

scanRegion reste tout à fait fonctionnel et exploitable.
Je suppose juste qu'elle serait plus claire et abordable si elle suivait le même principe que les commandes minecraft.
Quand on visualise à un espace, on l'imagine d'un bord à l'autre, d'un point A à B. On n'inclue pas différemment un bord d'un autre.

Pour être parfaitement maîtrisée, telle quelle, il faut pouvoir délimiter la zone, et déduire des coordonnée, lesquelles sont inclue ou exclues, et s'il s'agit de coordonnées négatives veiller à ne pas les arrondir dans le mauvais sens...
Le paramétrage actuel de cette fonction n'est pas insensé. Mais cette particularité n'apporte que la possibilité de scanner des zones d'une largeur, hauteur, ou profondeur de 0, ce qui est inutile.
avatar
skypop

Messages : 94
Date d'inscription : 25/07/2016

Revenir en haut Aller en bas

Re: [Discussion] Life is peripheral, World Interface scanRegion [Discussion]

Message par Shiranuit le Ven 23 Sep - 18:06

skypop a écrit:Le paramétrage actuel de cette fonction n'est pas insensé. Mais cette particularité n'apporte que la possibilité de scanner des zones d'une largeur, hauteur, ou profondeur de 0, ce qui est inutile.

Je ne vois pas ou tu veux en venir
avatar
Shiranuit

Messages : 155
Date d'inscription : 02/04/2016
Age : 16

Revenir en haut Aller en bas

Re: [Discussion] Life is peripheral, World Interface scanRegion [Discussion]

Message par skypop le Sam 24 Sep - 0:55

J'ai compris ça en m'employant à scanner un chunk. J'ai donc indiqué les coordonnées de 2 coins d'un chunk. à l'arrivé, je trouve les données pour un volume de 15x15x15, au lieu de 16x16x16 que j'attendais. Est-ce que j'ai fait une erreur ?

Peut être que ce sera plus clair avec un dessin :



C'est deux approches différentes, les deux sont cohérentes. En fait, il est question de contexte.
La première approche est adaptée pour définir ou mesurer des distances.
L'autre est adaptée à la mesure d'espaces.

à priori le paramètre de getRegion() est un espace défini. Si on l'utilise, c'est dans l'intention de scanner un volume.
Un volume ou une surface se mesure en terme de largeur/hauteur etc. pas en terme de distance.
On pourrait dire que largeur et distance, c'est des mots, c'est du pareil au même... Mais ce n'est pas le cas, et en pratique on ne s'y tromperait pas. Si par exemple tu as une caisse et que tu veux savoir si elle peut passer une porte, tu compare la largeur mesurée d'un bout à l'autre de la caisse, et la largeur de la porte d'un montant à l'autre.

Enfin, supposons un bloc situé aux coordonnées X 125, Y 64, Z 256.
Si l'on exécute getRegion(125, 64, 256, 125, 64, 256) ça retourne une table vide.
Est-ce que c'est cohérent ? En quoi c'est utile ? Je pense que c'est contre-intuitif, et inapproprié. (Dans la mesure où sur minecraft on compte en blocs.)
avatar
skypop

Messages : 94
Date d'inscription : 25/07/2016

Revenir en haut Aller en bas

Re: [Discussion] Life is peripheral, World Interface scanRegion [Discussion]

Message par Shiranuit le Sam 24 Sep - 11:40

Ok, je comprend mieu je vais corriger ça
avatar
Shiranuit

Messages : 155
Date d'inscription : 02/04/2016
Age : 16

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum