5/5 (9 avis)
Snippet vu 21 622 fois - Téléchargée 24 fois
private Polygon regularPolygonEllipse(Point pCenter, Dimension pSizeOut, Dimension pSizeIn, int iSidesNumber) { int [] xpoints = new int[iSidesNumber * 2]; // Les différents points de l'ellipse int [] ypoints = new int[iSidesNumber * 2]; double delta = Math.PI * 2 / iSidesNumber; // L'angle de référence entre 2 pointes de l'étoile double angle = 0; for ( int i = 0; i < iSidesNumber; i++ ) { if (pSizeIn.width != pSizeOut.width && pSizeIn.height != pSizeOut.height) { // Si la hauteur ou la largeur des 2 elipses sont différents, alors on trace une étoile angle = delta * i + Math.PI / 2; // l'angle sur lequel on se base est augmenté du delta de référence xpoints[i * 2] = (int)(pSizeOut.width * Math.cos(angle) + 0.5) + pCenter.x; // on calcule les coordoonées en x du prochain point du polygone = largeur de l'elipse externe * cos(angle) + x du centre ypoints[i * 2] = pCenter.y - (int)(pSizeOut.height * Math.sin(angle) + 0.5); // on calcule les coordoonées en y du prochain point du polygone = hauteur de l'elipse externe * cos(angle) + y du centre angle += delta / 2; // on refait de même avec un angle légérement augmenté (la moitié de l'angle de référence) afin d'obtenir une étoile xpoints[i * 2 + 1] = (int)(pSizeIn.width * Math.cos(angle) + 0.5) + pCenter.x; ypoints[i * 2 + 1] = pCenter.y - (int)(pSizeIn.height * Math.sin(angle) + 0.5); } else { // sinon, on trace un polygône régulier angle = delta * i + Math.PI / 2; xpoints[i] = (int)(pSizeOut.width * Math.cos(angle) + 0.5) + pCenter.x; ypoints[i] = pCenter.y - (int)(pSizeOut.height * Math.sin(angle) + 0.5); } } return new Polygon(xpoints, ypoints, (pSizeIn.width != pSizeOut.width && pSizeIn.height != pSizeOut.height) ? iSidesNumber * 2 : iSidesNumber); }
8 juil. 2006 à 09:17
-avoir un rapport d'homothétie différent en x et y pour les 2 ellipses.
-au lieu d'avoir seulement 2 ellipses en avoir 3 ou 4. àfin des tailles de pointe différente.
7 juil. 2006 à 14:06
7 juil. 2006 à 14:02
7 juil. 2006 à 14:02
7 juil. 2006 à 13:26
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.