Coordinnées d'un pt dans une ellipse

Répondre
Partager Rechercher
Citation :
Publié par G.Skilled
OP : tu as eu comment cette image ?

j'ai fixé l'angle sur des fraction de pi et j'ai screen.

voila comment je dessine le contour de mon pad:

Code:
draw_primitive_begin(pr_linestrip)
draw_vertex_color(oriX+devX*cos(angle+padSize*4/4),oriY-devY*sin(angle+padSize*4/4),outlineColor,outlineAlpha)                          //1
draw_vertex_color(oriX+devX*cos(angle+padSize*3/4),oriY-devY*sin(angle+padSize*3/4),outlineColor,outlineAlpha)                          //2                   
draw_vertex_color(oriX+devX*cos(angle+padSize*2/4),oriY-devY*sin(angle+padSize*2/4),outlineColor,outlineAlpha)                          //3
draw_vertex_color(oriX+devX*cos(angle+padSize*1/4),oriY-devY*sin(angle+padSize*1/4),outlineColor,outlineAlpha)                          //4
draw_vertex_color(oriX+devX*cos(angle),oriY-devY*sin(angle),outlineColor,outlineAlpha)                                                  //5               
draw_vertex_color(oriX+devX*cos(angle-padSize*1/4),oriY-devY*sin(angle-padSize*1/4),outlineColor,outlineAlpha)                          //6
draw_vertex_color(oriX+devX*cos(angle-padSize*2/4),oriY-devY*sin(angle-padSize*2/4),outlineColor,outlineAlpha)                          //7
draw_vertex_color(oriX+devX*cos(angle-padSize*3/4),oriY-devY*sin(angle-padSize*3/4),outlineColor,outlineAlpha)                          //8
draw_vertex_color(oriX+devX*cos(angle-padSize*4/4),oriY-devY*sin(angle-padSize*4/4),outlineColor,outlineAlpha)                          //9                                       
draw_vertex_color(oriX+devX*cos(angle-padSize),oriY-devY*sin(angle-padSize),outlineColor,outlineAlpha)                                  //10
draw_vertex_color(oriX+(devX-padHeight)*cos(angle-padSize*4/4),oriY-(devY-padHeight)*sin(angle-padSize*4/4),outlineColor,outlineAlpha)  //11
draw_vertex_color(oriX+(devX-padHeight)*cos(angle-padSize*3/4),oriY-(devY-padHeight)*sin(angle-padSize*3/4),outlineColor,outlineAlpha)  //12
draw_vertex_color(oriX+(devX-padHeight)*cos(angle-padSize*2/4),oriY-(devY-padHeight)*sin(angle-padSize*2/4),outlineColor,outlineAlpha)  //13
draw_vertex_color(oriX+(devX-padHeight)*cos(angle-padSize*1/4),oriY-(devY-padHeight)*sin(angle-padSize*1/4),outlineColor,outlineAlpha)  //14
draw_vertex_color(oriX+(devX-padHeight)*cos(angle),oriY-(devY-padHeight)*sin(angle),outlineColor,outlineAlpha)                          //15
draw_vertex_color(oriX+(devX-padHeight)*cos(angle+padSize*1/4),oriY-(devY-padHeight)*sin(angle+padSize*1/4),outlineColor,outlineAlpha)  //16
draw_vertex_color(oriX+(devX-padHeight)*cos(angle+padSize*2/4),oriY-(devY-padHeight)*sin(angle+padSize*2/4),outlineColor,outlineAlpha)  //17
draw_vertex_color(oriX+(devX-padHeight)*cos(angle+padSize*3/4),oriY-(devY-padHeight)*sin(angle+padSize*3/4),outlineColor,outlineAlpha)  //18
draw_vertex_color(oriX+(devX-padHeight)*cos(angle+padSize*4/4),oriY-(devY-padHeight)*sin(angle+padSize*4/4),outlineColor,outlineAlpha)  //19
draw_vertex_color(oriX+devX*cos(angle+padSize*4/4),oriY-devY*sin(angle+padSize*4/4),outlineColor,outlineAlpha)                          //1         
draw_primitive_end()
avec oriX et oriY pour le centre de rotation, devX et devY pour les diametres des cercles, padHeigh pour l'epaisseur de mon pad, padSize pour sa largeur (vu qu'elle est destinée a varier)
les 4 coins de la figure en rouge. premier pt et dernier sont les memes
Ah ben alors tu les as tes segments, et effectivement ça correspond aux coordonnées indiquées par Assurancetourix (je sais pas pourquoi j'avais l'impression que ce segment passerait par l'origine).
Enfin presque car tu tournes dans le sens horaire, en associant devX à -devY.

Pour le segment à angle+padSize par exemple les deux points sont :
x1 = oriX + devX.cos(angle+padSize) et y1 = oriY -devY.sin(angle+padSize)
x2 = oriX + (devX-padHeight).cos(angle+padSize) et y2 = oriY-(devY-padHeight).sin(angle+padSize)

et (x,y) est du bon côté si : (x-x1)(y1-y2) - (y-y1)(x1-x2) < 0

Ça sera l'inverse pour le segment à angle-padSize. Ça et un critère pour être dans ou hors d'une ellipse et c'est bon.
Répondre
  • »
 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés