Ce que vous pouvez faire est de lancer l'objet graphique g vers un objet 2D grphics. Par exemple:
Graphics2D g2 = (Graphics2D) g;
vous permettra d'utiliser les outils inclus dans le package Graphics2D, que vous devrez importer. Ensuite, vous pouvez créer le triangle:
Polygon tri = new Polygon(new int[] {40, 20, 80}, new int[] {100, 20, 100}, 3);
Ensuite, vous devez tourner le triangle THETA
degrés vers la droite arround son centre et créer, rempli:
g2.rotate(Math.toRadians(THETA), (140/3), (220/3));
g2.fill(tri);
Cela va créer le triangle spécifié par les coordonnées {40, 20, 80} et {100, 20, 100}, pivotés par THETA
degrés. La raison pour laquelle j'ai spécifié les 2 paramètres supplémentaires de rotation est parce qu'elle tournerait autour de (0, 0) si elles n'étaient pas spécifiées. 140/3
est simplement la moyenne des coordonnées x, et 220/3
est la moyenne des coordonnées y. Si vous connaissez bien votre géométrie, vous reconnaîtrez cela comme le centroïde d'un triangle. Si vous tournez de la même quantité à chaque fois, vous pouvez simplement convertir THETA
en radians à la main. Il y a cependant une autre façon de le faire. Vous pouvez faire pivoter chaque point autour du centroïde du triangle, puis dessiner le polygone défini par ces points. Pour ce faire, il est plus facile de dériver une formule à partir de la matrice de rotation générale. Parce que c'est Stack Overflow, je ne peux pas vous montrer très facilement la dérivation de la formule sans le support de LaTex. À la fin, le point (x, y)
peut être tourné autour du centre du triangle (xc, yc)
, par THETA
degrés. en utilisant la formule rX = ((x - xc) * cos(THETA)) - ((y - yc) * sin(THETA) + xc
pour obtenir la coordonnée x du point pivoté, et rY = ((x - xc) * sin(THETA)) + ((y - yc) * cos(THETA)) + yc
. Je crois que vous pouvez adapter cela à Java, mais si vous avez besoin d'aide, dites-moi. Rappelez-vous, Math.cos()
et Math.sin()
prennent leur paramètre en radians, pas en degrés. Vous aurez également besoin de l'arrondir, car le Math.toRadians()
ne renverra pas une valeur exacte, donc la plupart des valeurs fournies à Math.cos()
ou Math.sin()
seront évaluées à 0.
'fillPolygon' remplira la forme avec votre couleur. –
Alors, qu'est-ce que j'ai besoin de coder? Désolé, je suis un noob total :( – ZanicL3
'g.drawPolygon' dessine un contour. Couleurs' g.fillPolygon' dans cette ligne Si vous lisez le [documentation] (http://docs.oracle.com/javase/8/ docs/api/java/awt/Graphics.html) vous pouvez voir cette méthode. –