2 votes

Trouver les coordonnées d'un rectangle sur une surface courbe

Quelqu'un sait-il comment calculer les coordonnées de la boîte rectangulaire/carrée sur la surface du cercle ?

circle box

Je peux obtenir le centre du rectangle et tracer une ligne à travers lui, mais j'essaie d'obtenir les coordonnées.

var lineHeight = 25;

var baseX = circle.x + circleRadius/2 * Math.cos(angleRadians);
var baseY = circle.y + circleRadius/2 * Math.sin(angleRadians);

var x1 = baseX + lineHeight*Math.cos(angleRadians);
var y1 = baseY + lineHeight*Math.sin(angleRadians);

this.testgraphics = this.add.graphics();
this.testgraphics.lineStyle(4, 0xff0000);
this.testgraphics.beginPath();
this.testgraphics.moveTo(baseX, baseY);
this.testgraphics.lineTo(x1, y1);
this.testgraphics.closePath();
this.testgraphics.strokePath();

1voto

MBo Points 11630

Pourquoi utilisez-vous une moitié de circleRadius ( circleRadius/2 ) ?

baseX = circleCenterX + circleRadius * cos(angleRadians) 
baseY = circleCenterY + circleRadius * sin(angleRadians) 

coordonnées du coin

x1 = baseX - rectWidth / 2 * sin(angleRadians)   //note sign
y1 = baseY + rectWidth / 2 * cos(angleRadians) 

x2 = baseX - rectWidth / 2 * sin(angleRadians) + rectHeight * cos(angleRadians)  
y2 = baseY + rectWidth / 2 * cos(angleRadians) + rectHeight * sin(angleRadians) 

x3 = baseX + rectWidth / 2 * sin(angleRadians) + rectHeight * cos(angleRadians)  
y3 = baseY - rectWidth / 2 * cos(angleRadians) + rectHeight * sin(angleRadians)

x4 = baseX + rectWidth / 2 * sin(angleRadians) 
y4 = baseY - rectWidth / 2 * cos(angleRadians)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X