Java 多边形绕椭圆圆周的旋转点
我有一个2椭圆“和一个多边形三角形的设计mad,如图所示: 当我拖动“手臂””时,该点会随之移动。当我移动手臂时,我遇到的问题是,当三角形的第三个点靠近与P1和P2相同的Y轴时,由于P1和P2不移动,三角形变得更薄 getPivot()存储大椭圆的中心坐标。我试图实现的是基于P3的位置,即从getPivot()开始,P1和P2在x轴上是否或多或少为正,应相应地围绕中心旋转,以保持三角形的比例 所以在理论上,如果我向右移动手臂,p1应该向下旋转,P2应该成比例地向上旋转,但我似乎无法让p1移动 我试图得到的主要结果是P1和P2围绕getPivot()旋转(点)。 下面是我写的在拖动手臂时尝试旋转P1的内容:Java 多边形绕椭圆圆周的旋转点,java,geometry,mouseevent,graphics2d,Java,Geometry,Mouseevent,Graphics2d,我有一个2椭圆“和一个多边形三角形的设计mad,如图所示: 当我拖动“手臂””时,该点会随之移动。当我移动手臂时,我遇到的问题是,当三角形的第三个点靠近与P1和P2相同的Y轴时,由于P1和P2不移动,三角形变得更薄 getPivot()存储大椭圆的中心坐标。我试图实现的是基于P3的位置,即从getPivot()开始,P1和P2在x轴上是否或多或少为正,应相应地围绕中心旋转,以保持三角形的比例 所以在理论上,如果我向右移动手臂,p1应该向下旋转,P2应该成比例地向上旋转,但我似乎无法让p1移动
_angle = _degree * (Math.PI / 180);
double cosTheta = Math.cos(_angle);
double sinTheta = Math.sin(_angle);
int rX1 = (int) ( cosTheta * (_xPoints[0] - getPivot().x) -
sinTheta * (_yPoints[0] - getPivot().y) + getPivot().x);
int rY1 = (int) ( sinTheta * (_xPoints[0] - getPivot().x) +
cosTheta * (_yPoints[0] - getPivot().y) + getPivot().y);
_xPoints[0] = rX1;
_yPoints[0] = rY1;
_degree++;
让我们把手臂的中心点设为A,C=getPivot(),R=大圆的半径 向量AC=C-A=(C.X-A.X,C.Y-A.Y) 垂直矢量CP=(-AC.Y,AC.X) 标准化(单位)向量cp=cp/| cp |(将向量除以其长度) CP1=cp*R,CP2=-cp*R P1=C+cp*R,P2=C-cp*R