La façon la plus simple que je vois c'est remplir pixel par pixel.
Nan, il peut aussi utiliser des lignes ...
Sally Le 22/08/2003 à 13:19 Les rectangles (ou lignes, pour faire plaisir à nEUrOO) ont le droit de se recouvrir les uns les autres ?

« Le bonheur, c'est une carte de bibliothèque ! » —
The gostak distims the doshes.Membrane fondatrice de la confrérie des
artistes flous.
L'univers est-il un
dodécaèdre de Poincaré ?
(``
·\ powaaaaaaaaa ! #love#
Sally Le 22/08/2003 à 13:38 Ben ça m'a pas l'air d'un problème simple tout ça... :-\

« Le bonheur, c'est une carte de bibliothèque ! » —
The gostak distims the doshes.Membrane fondatrice de la confrérie des
artistes flous.
L'univers est-il un
dodécaèdre de Poincaré ?
(``
·\ powaaaaaaaaa ! #love#
utilise que des lignes horizontale .. sera plus rapide et pê plus simple
Sally Le 22/08/2003 à 14:11 oui, ou que des lignes verticales (suivant les cas), c'est aussi ce à quoi je pensais...
je ne sais pas si c'est la meilleure solution dans tous les cas, ça ne me semble pas évident, mais le contraire ne l'est pas non plus...
En tous cas, si pour certains cas il existe une meilleure solution elle n'est vraisemblablement pas facile à déterminer, donc tout dépend ce que tu veux (tiens-tu absolument à avoir une solution vraiment minimale quitte à utiliser beaucoup de temps de calcul, ou préfères-tu avoir une solution toute simple qui n'est peut-être pas toujours la meilleure ?)

« Le bonheur, c'est une carte de bibliothèque ! » —
The gostak distims the doshes.Membrane fondatrice de la confrérie des
artistes flous.
L'univers est-il un
dodécaèdre de Poincaré ?
(``
·\ powaaaaaaaaa ! #love#
J'ai essayé avec des lignes horizontales et je gagne deja bcp de temps, mais ce que je cherche c'est remplir avec un minimum de lignes/rectangles.
Ils peuvent se recouvrir, mais par contre l'algo ne doit pas utiliser de buffer (d'apres mes essais, une boucle sur tt les pixels d'un ecran prend bien 5 sec en js).
J'ai penser à une fct recursive : si on enleve le + gros rectangle contenu dans un triangle, il reste 3 triangles plus petits...et ainsi de suite.
Pour l'instant c'est la concatenation de tout les < div> prend tout le temps, les calculs sont effectués en 15ms et la concatenantion de < div> en 2s !! (suivant le nb de ligne du triangle().
Sur de plus gros objets j'ai 50ms de calcul pour 60 secondes de concatenation.!!
Si l'algo est compliqué il me fera quand même gagner du temps. (un carré de 100 px remplace 100 lignes de < div> )
Merci nEUrOO c'est sympas, mais j'ai essayé avec des hlines, ce qu'il me faut maintenant, c'est une idée de départ pour commender mon algo.
Comment determiner le + gros rectangle contenu ds un triangle?
Sally Le 22/08/2003 à 14:47 Oui, la question est : est-ce mieux que de tout remplir avec seulement des lignes ?
Personnellement j'en doute (enfin je suis sûre que ce n'est pas mieux en général, mais ça l'est peut-être dans certains cas particuliers (?))

« Le bonheur, c'est une carte de bibliothèque ! » —
The gostak distims the doshes.Membrane fondatrice de la confrérie des
artistes flous.
L'univers est-il un
dodécaèdre de Poincaré ?
(``
·\ powaaaaaaaaa ! #love#
Non, la question est: comment avoir moins de < div> ?
J'ai bien essayé de remplir avec des lignes, mais ca rame car y'a trop de < div>, donc je cherche à reduire le nb de < div> pas forcement le temps de calcul.
Tu peux gagner en utilisant des rectangles de plus d'un pixel de hauteur si tes triangles sont presque verticaux/horizontaux, mais à part ça c'est difficile de trouver une méthode qui ne soit pas dépendante du navigateur, de l'OS ou de la carte graphique (parce que je pense que tu ne connais pas la forme qu'aura une ligne donnée au pixel près - cela dit toutes les versions d'IE se comportent probablement pareil). Si tu connais exactement la méthode de tracé de ligne utilisée par ton système, alors tu devrais pouvoir gagner en vitesse un facteur 4 sans trop de problème : tu peux tracer ton triangle comme si la résolution était moindre (disons 5x plus petite), puis tu peux 'adoucir' les bords en dessinant une série de lignes sur le côté (un peu plus de 5 par côté). Evidemment, il faut tracer un paquet de lignes pour qu'il n'y ait pas des pixels qui restent, mais ça dépend bcp de la routine de tracé de ligne...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
je pense que le but est de réduire le nombre de < div > générés, tout en ayant un temps de calcul raisonnable.
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Ca ne change rien... si on se limite à des rectangles à bords horizontaux et verticaux, un triangle avec une arête à 45° ne peut pas être rempli de manière plus efficace qu'avec des lignes horizontales...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Oui, mais au bout d'un moment, ca ne se verra pas.
Et ca permet d'utiliser un minimum d'élément <div>
OK, alors ce que tu dis revient tout simplement à diminuer la résolution du rendu... Pas besoin d'algo récursif pour ça.
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
hmm... à moins que je n'ai pas bien compris la question, je pense que tu veux remplir un triangle au pixel près (ou à 2 pixels près si tu veux accélérer)
Donc, par exemple, comment ferais-tu avec la méthode du gros rectangle pour le rectangle (0,0)-(8,8)-(16,0) ? Parce que je crois que tu es obligé d'avoir au moins 9 < div > si tu veux remplir au pixel près...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
on peut dessiner avec javascript ???