TOUTSIMCITIES

Découpage des villes et Création de régions

message posté le 31 mars 2007 à 20h32

Avatar

André

  • membre
  • Pyrénées orientales, France
Et bien, voila un sujet qui m'a appris plein de choses!
(Je me doutais bien aussi que pour faire le découpage des villes, dire "abracadabra" ne suffirait pas [vert]).

Pour le "scale factor", j'ai trouvé ton "post" dans le sujet "SC4Mapper".
Donc, je vais étudier tout ça pour continuer à m'instruire.

Ce n'est pas gagné d'avance car j'ai quitté les études très tôt (je compense depuis par la réflexion et la simple logique). Mais je suis tenace!

Un grand merci pour tes lumières! [ok] [content]

_________________________________________
Tel qui roule radis pervanche pèlera (Jean Tardieu)
La carte n'est pas le territoire (Alfred Korzybski)

message posté le 31 mars 2007 à 20h47(message édité)édité le 1 avr 2007 à 01h03 par HansTrapp68

Avatar

HansTrapp68

  • membre
  • Lautenbach - Alsace
Bon, on passe du schéma RGB décimal en hexadécimal si tu veux bien ainsi que pour les autres qui lirons ce sujet... il n'y a pas de raisons après tout que ceux que ça intéresse n'en profitent pas [cool]

La palette reste la même, nous avons toujours 16,7 millions de couleurs, c'est simplement l'écriture qui est différente puisque nous passons de la base 10 (décimale) en base 16 (hexadécimale).
Base 10: 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 puis 10 - 11 ... etc...
Base 16: 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - A - B - C - D - E - F puis 10 - 11 ... etc...
Bien... par convention, on fait précéder un nombre hexadécimal par le sigle #, sinon on se mélange vite les pinceaux. 10 (en décimal) n'est pas égal à #10 (en hexadécimal). Conséquences:
#A=10, #B=11, #C=12, #D=13 #E=14 et #F=15
Calculons par exemple la valeur de #B3 en décimal. Le premier "chiffre" (#B) représente toujours la "centaine" mais en base 16, le second "chiffre" (#3) représente toujours les "unités", toujours en base 16:
#B3 = (11 x 16) + 3 = 179
Ci dessous, quelques autres exemples:
#2D = (2 x 16) + 13 = 45
#FA = (15 x 16) + 10 = 250

Bon, j'espère que c'est assez clair et que ce n'est pas trop compliqué... Entrainez-vous pour passer du décimal à l'hexadécimal car c'est la base de ce qui va suivre. Vous pouvez vérifier vos résultats à l'aide de la calculatrice fournie sous Windows.

Bien, revenons à nos couleurs et traduisons le RGB en hexadécimal. On reprend la couleur orange soit (200,130,50) en RGB:
Pour traduire la valeur 200 en hexadécimal, il suffit de diviser ce nombre par 16, garder la valeur entière du résultat et rajouter le reste de la division (le tout en base 16), ce qui donne:
200/16 = 12,5 --> on garde 12, soit #C
200 - (12x16 ) = 8, soit #8
d'où 200 = #C8
On calcule 130 en hexadécimal:
130/16 = 8,125 --> on garde 8, soit #8
130 - (8x16) = 2, soit #2
d'où 130 = #82
Pareil pour 50:
50/16 = 3,125 --> on garde #3
50 - (16x3) = 2, soit #2
d'où 50 = #32

Que devient notre couleur orange dans tout celà [fou] ?
(200,130,50) en RGB nous donne #C88232
Une couleur donnée en RGB est traduite de manière suivante en hexadécimal:
- les deux premiers "chiffres" (#C8) représentent le rouge
- les deux suivants (#82) représentent le vert
- les deux derniers (#32), le ? ...... je vous écoute ? .... le bleu bien sur [oeil]

La conséquence immédiate de ce qui précède pour les couleurs fondamentales est la suivante. Calculons 255 en hexadécimal:
255/16 = 15,93 --> on garde 15, soit #F
255 - (15x16) = 15, soit #F
d'où 255 = #FF
Le rouge fondamental (255,0,0) en RGB devient donc #FF0000
Le vert fondamental (0,255,0) devient #00FF00 et le bleu fondamental (0,0,255) devient #0000FF

Ca te rappelle quelque chose André ?

La suite bientôt, le temps de me chercher une bonne bière...
a+

L'intelligence artificielle n'a aucune chance face à la stupidité naturelle
Partez à la découverte des châteaux-forts en Alsace
Le site de Marie-Line

message posté le 31 mars 2007 à 21h13(message édité)édité le 31 mars 2007 à 21h15 par André

Avatar

André

  • membre
  • Pyrénées orientales, France
Citation
Bon, on passe du schéma RGB décimal en hexadécimal si tu veux bien...
Bien sûr (tant que j'arrive à suivre... et que tu es volontaire)!

Citation
Bon, j'espère que c'est assez clair et que ce n'est pas trop compliqué...
Jusque là ça va (une fois accepté l'idée qu'une "centaine" en hexa n'est pas égale à 10x10)

Citation
Ca te rappelle quelque chose André ?
Effectivement, tout s'éclaire.

Citation
La suite bientôt, le temps de me chercher une bonne bière...

Et mois un cachet d'aspirine! [vert]
a+

_________________________________________
Tel qui roule radis pervanche pèlera (Jean Tardieu)
La carte n'est pas le territoire (Alfred Korzybski)

message posté le 31 mars 2007 à 21h47(message édité)édité le 1 avr 2007 à 03h33 par HansTrapp68

Avatar

HansTrapp68

  • membre
  • Lautenbach - Alsace
Passons aux niveaux de gris, c'est relativement simple comme sujet.

Dans la palette des gris, R=G=V. (10,10,10) par exemple, c'est du gris. (50,26,67) c'est pas du gris. Si on passe en hexadécimal, #A0A0A0, c'est du gris, #321A43 c'est pas du gris.
Conséquence: il n'existe que 256 valeurs de gris de (0,0,0) soit #000000, à (255,255,255) soit #FFFFFF.
#808080, soit (128,128,128) représente un gris "moyen". Il faut également savoir que #000000 (aucune des 3 couleurs RGB) c'est du noir fondamental et que #FFFFFF (toutes les couleurs RGB) c'est du blanc fondamental.

Lorsque l'on génère une région sous SC4, la formule de base suivante s'applique:
Altitude = 3 x (Valeur décimale du niveau de gris) - 250
En mathématiques, c'est l'équation d'une droite (y=ax+b). Les conséquences sont les suivantes:
Un noir fondamental #000000 ou (0,0,0) nous donne:
- Altitude = 3 x 0 - 250 = -250 mètres
Un gris moyen #808080 ou (128,128,128) nous donne:
- Altitude = 3 x 128 - 250 = 134 mètres
Un blanc fondamental #FFFFFF ou (255,255,255) nous donne:
- Altitude = 3 x 255 - 250 = 515 mètres

Donc, avec cette formule de base, on ne peux avoir que 515 mètres d'altitude au maximum, d'où l'idée de "jouer" sur la pente de la droite, càd le facteur a de l'équation y=ax+b

Citation
...ce serait de savoir à quoi sert la fonction "scale factor"


Le "Scale factor" permet de modifier la valeur de "a". Avec un "Scale factor" de 1000m par exemple, la valeur maximale de l'altitude pour le blanc est de 1000m au lieu des 512 par défaut. C'est ce que Wouanagaine a intégré dans le SC4Mapper et le SC4Terraformer.

Si l'on change le "Scale factor" l'ensemble des altitudes change puisque l'on redéfinit la valeur de la pente de la droite. Il faut donc recalculer "a" pour obtenir un tableau de correspondance. Cela revient à résoudre une équation du premier degré, en partant toujours sur le blanc fondamental. Exemple avec un scale factor de 1000m:
a x 255 - 250 = 1000 <=> a = (1000+250)/255 = 4,902

Conséquence, avec un gris "moyen" #808080 ou (128,128,128) en RGB et un scale factor de 1000m le calcul devient:
- Altitude = 4,902 x 128 - 250 = 377 mètres
... à comparer avec les 134 mètres obtenus sans modifier le scale factor !

Par cet artifice, l'échelle d'altitude des niveaux de gris devient donc beaucoup plus importante mais au détriment de la finesse de la carte puisque initialement une différence d'un niveau de gris représente 3 mètres de différence en altitude et avec un scale factor de 1000m, pratiquement 5 mètres.

Citation
J'aimerais aussi savoir s'il existe un tableau de correspondances altitudes / niveaux de gris

Oui, ça existe sur mon disque dur [content]
André --> Je veux bien te le faire parvenir au format Excel ou autre, envoie moi un e-mail.
a+

L'intelligence artificielle n'a aucune chance face à la stupidité naturelle
Partez à la découverte des châteaux-forts en Alsace
Le site de Marie-Line

message posté le 31 mars 2007 à 22h36(message édité)édité le 31 mars 2007 à 22h36 par André

Avatar

André

  • membre
  • Pyrénées orientales, France
Citation
c'est relativement simple comme sujet
Si tu le dis! [yeux]
Citation
càd le facteur a de l'équation y=ax+b
Là, ça se complique un peu.
Mais comme ça m'a fait beaucoup de réflexion dans la même journée, je vais souffler et manger un peu.
Je relirais ce "post" + tard ou demain. [fou]

En attendant, je t'envoies un MP.

_________________________________________
Tel qui roule radis pervanche pèlera (Jean Tardieu)
La carte n'est pas le territoire (Alfred Korzybski)

message posté le 2 avr 2007 à 03h17(message édité)édité le 2 avr 2007 à 03h33 par André

Avatar

André

  • membre
  • Pyrénées orientales, France
Ouf, c'est compris!

Je vais quand même garder ces explications dans un coin parce que je ne suis pas sur de tout retenir.

En tout cas, il en ressort (entre autres) que pour faire des cartes en finesse, il faut utiliser le scale factor correspondant à l'altitude maximale de la région que l'on veut réaliser.

Questions restantes [vert] (si ça te fais: [diable] ou: [grrr], n'hésites pas à: [carton]) :

1) A quoi sert "import.dat" dans "scale factor" de SC4Map

2) Tu m'as appris à faire une région avec "grayscale image".
Qu'en est-il des 3 autres méthodes (SC4M, 16bit PNG et RGB image) ?

3) Dans le SC4TF, l'altitude que l'on définit avec l'outil de zone "draw", ainsi que celle indiquée par le curseur correspond je présume à un "Scale factor" de 515m ?
Ou définit-on celui que l'on a utilisé pour créer sa région ?

En te remerciant!




_________________________________________
Tel qui roule radis pervanche pèlera (Jean Tardieu)
La carte n'est pas le territoire (Alfred Korzybski)

message posté le 2 avr 2007 à 14h08

w

wouanagaine

  • membre
  • Paris
Merci beauoup a Hans, franchement tu fais un boulot tiptop !

Citation
Jusque là ça va (une fois accepté l'idée qu'une "centaine" en hexa n'est pas égale à 10x10)

ben si :)
#100 = #10*#10

Citation
A quoi sert "import.dat" dans "scale factor" de SC4Map

En fait j'ai mis les noms des plugins qui sont généralement donnés par les créateurs de cartes dans leur readme ( quand ils en font un ), ca permet de pas ce prendre la tete a rechercher quelle valeur réelle on doit mettre dans le scaleFactor

Citation
2) Tu m'as appris à faire une région avec "grayscale image".
Qu'en est-il des 3 autres méthodes (SC4M, 16bit PNG et RGB image) ?

Courage :), surtout pour le RGB
Le probleme des formats 8 bit ( grayscale image ), c'est que tu ne peux faire que 256 altitudes differentes. chaque niveau etant distant du ScaleFactor, ce qui permet pas vraiment d'atteindre une précision délirante .
Grosso modo, Avec les format SC4M, 16bit PNG et RGB, au lieu d'avoir 256 niveaux differents, tu en as 65536., on a plus besoin de scaleFactor, car la précision est de 0.1m ( 10 cm ).
Ca permet donc de faire des maps tres précises
le SC4M est le format interne a SC4TF, donc c'est avec SC4TF que tu peux les faire
le 16 bit PNG est un format en niveau de gris mais sur 65536 gris, malheureusement seul Photoshop CS 1&2 peuvent l'ecrire, d'autre soft peuvent le lire mais ils le convertissent en 8 bit ( 256 niveaux ) et donc on perd tout l'interet
Pour pallier le probleme de l'édition des 16 bit png, et permettre aux possesseur de softs moins cher que Photoshop de faire quand meme de l'édition de carte, Moganite et moi meme avons inventé le RGB image, chaque channel ( Rouge Vert Bleu ) represente une hauteur. C'est un poil compliqué et si tu veux des précisions, il faut que je me replonge dans la doc

Citation
3) Dans le SC4TF, l'altitude que l'on définit avec l'outil de zone "draw", ainsi que celle indiquée par le curseur correspond je présume à un "Scale factor" de 515m ?
Ou définit-on celui que l'on a utilisé pour créer sa région ?

Pas du tout, ou alors je comprends pas bien ta question
si tu demandes un "draw" a 1000m, ca dessinera a 1000m, quelque soit ton scaleFactor, une fois que tu as importer ton image 8bit, tu peux oublier le scaleFactor, il ne sert qu'au moment de l'import





message posté le 3 avr 2007 à 02h20(message édité)édité le 3 avr 2007 à 03h01 par HansTrapp68

Avatar

HansTrapp68

  • membre
  • Lautenbach - Alsace
Bonsoir,

... ben je crois que Wouanagaine a répondu à tes questions [oeil]...

Je reviens rapidement et mathématiquement sur la question de la "centaine" en hexadécimal. Le nombre "100" reste toujours une "centaine" quelque soit la base dans laquelle on travaille, c'est toujours 10x10. Démonstration:
16 = #10 (ce qui signifie que 16 en décimal est égal à #10 en hexadécimal)
Calculons 256 en hexadécimal:
256/16=16 --> on garde 16 soit #10 d'où #10x#10=#100, soit en décimal 16x16=256

On pourrait se poser la question du pourquoi de l'hexadécimal et surtout pourquoi les informaticiens compliquent les choses simples et ne comptent pas jusqu'à 9, puis 10 et 100 (en décimal) comme tout le monde....

Allez, on se lâche un peu sur une autre base, la base 2 ou binaire (ça n'a plus grand chose à voir avec le sujet initial, mais bon un peu de culture informatique générale, ça ne fait pas de mal [vert]).
En électricité, dans un conducteur, soit le courant passe (=1) soit il ne passe pas (=0). Si j'ai 2 conducteurs, je vais pouvoir effectuer les combinaisons suivantes:
00 --> aucun courant ne passe dans les deux fils
01 --> le courant passe dans le conducteur n°2 mais pas dans le n°1
10 --> le courant passe dans le conducteur n°1 mais pas dans le n°2
11 --> le courant passe dans les 2 conducteurs
Bien, avec 2 fils conducteurs, je peux donc réaliser 4 combinaisons mathématiques, soit 2 à la puissance 2 combinaisons (=2x2 combinaisons).
Que se passe t-il si je dispose de 8 fils conducteurs et combien de combinaisons vais-je pouvoir effectuer ? ...ben...
00000000
00000001
00000011
... etc... jusqu'à... (faut pas se planter en ne pas oublier un "0" ou un "1")...
11111111
Le nombre de combinaisons sera égal à 2 puissance 8 soit 2x2x2x2x2x2x2=256 combinaisons.
En informatique, on appelle le fil conducteur un bit (ou byte en anglais). La combinaison de 8 fils conducteurs porte le nom de "mot" ou plus couramment le nom d'octet (du chiffre 8).

Je reviens rapidement sur le calcul en binaire. Il faut simplement s'imaginer que le chiffre "2" n'existe pas (le courant passe ou ne passe pas donc que des "0" ou des "1"):
0 en binaire = 0 en décimal
1 en binaire = 1 en décimal
10 en binaire = 0+(1x2) = 2 en décimal (hé oui on est en base 2 donc 2=10)
11 en binaire = 1+(1x2) = 3 en décimal
100 en binaire = 0+(0x2)+(1x2x2)=4 en décimal
101 en binaire = 1+(0x2)+(1x2x2)=5 en décimal
...
1010 en binaire = 0+(1x2)+(0x2x2)+(1x2x2x2)=10 en décimal
1011 en binaire = 1+(1x2)+(0x2x2)+(1x2x2x2)=11 en décimal

Sur les deux derniers exemples ci-dessus il n'y a que 4 fils conducteurs soit 4 bits... Si on passe sur un octet, ça devient franchement la galère [fou]:
01101011
=1+(1x2)+(0x2x2)+(1x2x2x2)+(0x2x2x2x2)+(1x2x2x2x2x2)+(1x2x2x2x2x2x2)+(0x2x2x2x2x2x2x2)
=1+2+0+8+0+32+64+0=107 (en décimal)

Bon on va simplifier les choses en passant en hexadécimal [oeil]...
J'ai un octet: 01101011
Je le sépare en deux: 01101011= 0110 & 1011 ("&" ne signifie pas "+", c'est ce que l'on appelle un opérateur de concaténation)
0110=0+(1x2)+(1x2x2)+(0x2x2x2)=0+2+4+0=6=#6
1011=1+(1x2)+(0x2x2)+(1x2x2x2)=1+2+0+8=11=#B
01101011=#6B

C'est beaucoup plus simple non ? Pas convaincu....passons en 16 bits alors... lol..
Je vous fais grâce du calcul suivant en binaire:
1001011010110101 = 38581 en décimal (ben oui avec 16 bit on a 2 puissance 16 combinaisons soit 65536 possibilités)
On reprend notre concaténation, c'est à dire que je vais séparer mon nombre qui fait 2 mots, soit 2 octets soit 16 bits en un octet de parité faible & un octet de parité forte:
1001011010110101=10010110&10110101
Soit en hexadécimal:
10010110=#96 (octet de parité faible)
10110101=#B5 (octet de parité forte)
Donc 1001011010110101 en binaire est égal à 38581 en décimal et #96B5 en hexadécimal.

Génial l'hexadécimal, non ?

Pour conclure:
Wouanagaine a écrit
le 16 bit PNG est un format en niveau de gris mais sur 65536 gris

... c'est très intéressant, je ne savais pas... Je pensais que le PNG était simplement un format propriétaire qui permettait de combiner les avantages du GIF et du JPG, c'est à dire 16,7 millions de couleurs + un arrière plan transparent. Si effectivement ce format supporte 65536 niveaux de gris et que le SC4Map les intègre.... [cool]
Tu peux nous en dire + sur ce sujet ?
Merci
a+

L'intelligence artificielle n'a aucune chance face à la stupidité naturelle
Partez à la découverte des châteaux-forts en Alsace
Le site de Marie-Line

message posté le 3 avr 2007 à 03h38

w

wouanagaine

  • membre
  • Paris
Citation
Pour conclure:
Citation de Wouanagaine

le 16 bit PNG est un format en niveau de gris mais sur 65536 gris

... c'est très intéressant, je ne savais pas... Je pensais que le PNG était simplement un format propriétaire qui permettait de combiner les avantages du GIF et du JPG, c'est à dire 16,7 millions de couleurs + un arrière plan transparent. Si effectivement ce format supporte 65536 niveaux de gris et que le SC4Map les intègre....
Tu peux nous en dire + sur ce sujet ?
Merci
a+

Ce que tu decris est le PNG 'normal', en couleur. Avec des channels R G B + alpha ( pas obligatoire ), et avec une compression sans perte ( contrairement au jpg )
Ce que j'utilise est un autre format nettement moins courant, puisque comme je le dis, à ma conaissance seul Photoshop est capable de le lire et de l'écrire
dans ce format , un seul channel Gris, sur 16 bits, ce qui est de toute façon impossible a "voir" vu que nos ecrans ne nous restituent que du gris sur 8 bits. et meme si ils nous restituaient 65535 gris differents, nos yeux ne pourrai pas les distinguer. Deja 256 gris c'est pas evident.
Donc en réumé oui, SC4Mapper et SC4TF integre le png 16bit. Le SC4M c'est a peu pres la meme chose a part qu'il integre le config.bmp et la carte en 16bits
Et je pense que les outils comme GlobalMapper, integre des sorties en png 16 bits, d'ou l'interet quand tu veux faire une region réelle est que tu as un DEM suffisement précis






message posté le 3 avr 2007 à 04h52(message édité)édité le 3 avr 2007 à 05h01 par André

Avatar

André

  • membre
  • Pyrénées orientales, France
Bonsoir,

Citation
ben si :) #100 = #10*#10
Citation
Le nombre "100" reste toujours une "centaine" quelque soit la base dans laquelle on travaille

Ça me fait penser aux langues étrangères. Quand on apprend une langue, on a tendance à traduire littéralement, selon notre système de pensée.
Alors que le sens d'un mot ne peut être véritablement compris qu'à partir de la base culturelle qui l'a généré (Sans parler de la personne qui le prononce, celle qui l'entend, le cadre, etc.).
Selon la langue que j'ai appris (le décimal), #10*#10 = 256
Alors qu'en pensant en hexadécimal, #10*#10 = #100. Ce qui est bien une "centaine".

Citation
1001011010110101 en binaire est égal à 38581 en décimal et #96B5 en hexadécimal


Ouf, on revient de loin! Imagine qu'on ait que le binaire... [vert]

Citation
si tu demandes un "draw" a 1000m, ça dessinera a 1000m, quelque soit ton scaleFactor

Compris! [ok]

Citation
le 16 bit PNG est un format en niveau de gris mais sur 65536 gris, malheureusement seul Photoshop CS 1&2 peuvent l'écrire


Je ne sais pas ce qu'est Photoshop CS 1&2. Je dispose de Photoshop 7.0. Il sauvegarde en PNG mais je ne sais pas si c'est le format dont tu parles, ni si c'est en 16 bits.
Quoi qu'il en soit, le fait que ce format supporte 65536 niveaux de gris et qu'il permette une précision de 10 cm sur les cartes mérite qu'on s'y intéresse.

Pour le "RGB image", cela peut m'intéresser si mon Photoshop ne permet pas le PNG 16 bits (dis le moi si tu le sais) et ça peut aussi intéresser d'autres personnes. Ceci dit, je ne projette pas dans l'immédiat de reproduire dans le détail une région existante. Donc, ça peut attendre.

PS: quel est cet outil: GlobalMapper?

Merci à vous deux! [content]

_________________________________________
Tel qui roule radis pervanche pèlera (Jean Tardieu)
La carte n'est pas le territoire (Alfred Korzybski)