Certaines des réponses abordent déjà ce sujet... Je pense que les tableaux non-rectangulaires en termes de stockage de données créerait une complexité presque inimaginable et serait extrêmement propice aux erreurs. J'ai beaucoup d'expérience dans la modélisation de systèmes physiques dont la grille n'est pas rectangulaire (grilles décalées - points de données à mi-bords, etc.). L'indexation est un cauchemar.
Tout d'abord, il y a le problème de la définition de la frontière. Les images sont généralement rectangulaires (encore une fois, c'est une question d'histoire - si nos écrans étaient hexagonaux, les choses seraient un peu plus faciles). Ainsi, même la limite de l'image n'est pas une ligne droite. Mettez-vous le même nombre de pixels dans chaque rangée ? Est-ce que vous alternez pair/impair ? Et... le pixel inférieur gauche est-il à gauche de celui qui le précède, ou à droite ? Vous obtenez immédiatement près de 10 normes différentes, et les programmeurs doivent se souvenir à chaque fois de la façon dont cela se passe (même la différence de rangée-majeur et de colonne-majeur ou la différence d'indexation de haut en bas/bas-haut provoque parfois des erreurs). Cela entraîne l'immense problème de la conversion paysage/portrait (transformation naturelle, qui est triviale sur une grille rectangulaire, mais nécessite une interpolation et est presque nécessairement une procédure avec perte sur une grille hexagonale ou différente). C'est même un problème pour les pixels rectangulaires (rapport d'aspect != 1).
Ensuite, il y a l'instinct naturel des gens pour la disposition rectangulaire. En mathématiques, les matrices ont la même disposition. De même, un cadre de coordonnées cartésiennes est à peu près le plus facile à utiliser et à comprendre dans la plupart des cas généraux. Obtenir l'index d'un pixel à (x,y) est juste x+largeur*y (et non l'inverse - héritage de l'indexation par ligne de balayage). Si la largeur est un multiple de 2, la multiplication n'est même pas nécessaire. Travailler avec des angles non droits entraîne de nombreuses complications qui proviennent de l'algèbre vectorielle, lorsque les vecteurs de base ne sont pas orthogonaux : les rotations ne sont plus de simples superpositions cos/sin. La translation devient bizarre. Cela apporte beaucoup de complexité de calcul (ce serait plusieurs fois plus cher à calculer), et la complexité du code (je me souviens avoir codé l'algorithme de Bresenham une fois, et je n'aimerais vraiment pas essayer de le faire en hexagone).
L'interpolation et l'anticrénelage en général ont beaucoup d'algorithmes qui dépendent de la grille carrée. L'interpolation bilinéaire, par exemple. Toutes les méthodes de traitement basées sur la méthode de Fourier sont également liées à la grille rectangulaire (la FFT est très utile dans le traitement de l'image)... enfin, à moins que vous ne fassiez d'abord des transformations coûteuses et avec perte.
Tout cela montre que données dans la mémoire et les formats de fichiers doivent être stockés sous forme de grille rectangulaire. La façon dont vous l'affichez dépend du périphérique d'affichage/de l'imprimante, mais cela devrait être le problème du pilote. Les données sont censées être indépendantes du périphérique et ne devraient pas supposer quel matériel vous avez. Comme le montrent les messages ci-dessus, il y a de nombreux avantages à utiliser des pixels non rectangulaires, en raison de la physiologie de l'oeil humain et d'autres facteurs plus technologiques - gardez simplement les données sur la grille carrée, ou vous aurez une horde de programmeurs névrosés à qui vous devrez répondre :)
Malgré tout, j'ai eu l'idée d'avoir une disposition circulaire des pixels pour l'intégration dans les cadrans de montres (en faisant des mains des lignes droites). Lorsque j'ai commencé à imaginer à quel point il serait difficile de dessiner quelque chose d'aussi simple qu'une ligne droite qui ne passe pas par le centre, je suis arrivé à un grand nombre des conclusions que je mentionne ci-dessus.