如何解决如何根据与之碰撞的路径旋转拍子
我想在我的绘图应用程序中应用物理,即使用自定义画布进行绘图,我想做什么:假设有两个rect,rect_a和rect_b,假设用户用手指移动rect_a(我通过应用偏移到路径),并在一段时间后rect_a与rect_b碰撞(按区域检查碰撞),现在我想要的是rect_b应该以与rect_a正在移动的偏移相同的偏移量移动(即我已成功执行此操作),因此rect_b和rect_a永不重叠彼此并且rect_b也应该相对于rect_a方向旋转(我做过一切,但是失败了,如果path是未旋转的矩形,则旋转仅在正向发生,如果我旋转矩形路径,则旋转将是wron ),有人明白我的意思吗?我想要的是像现实生活中那样的推动力,假设某个地方有两个东西在我推动第一个与第二个碰撞时推动它,第二个在现实生活中也将向前移动并旋转,这是我想要实现的,我尝试了一切,但失败了, 我要如何旋转,请参见以下代码。
//rectf is the path which is being moving by user through finger
PointF pointCMoving = new PointF(rectF.centerX(),rectF.centerY());
//rectf1 is the second path to which path 1(rectf) collides.
PointF pointCMove = new PointF(rectF1.centerX(),rectF1.centerY());
//getting the angle between rect1,and rect2 through their center points
double an = angleOf(pointCMoving,pointCMove);
boolean rotation = false;
Matrix matrix = new Matrix();
//dividing path in to 8 quadric (360/45)
//assuming 0-45 collide from left side,45-90 collide from top left side and
so on
//rotatepathvalue = 1 means matrix will rotate on right side and -1 means
//matrix will rotate on left side
if(an >10 && an <= 45){
rotatePathValue = 1;
rotation = true;
}
if(an >55 && an <= 85){
rotatePathValue = -1;
rotation = true;
}
if(an > 100 && an <= 135){
rotatePathValue = 1;
rotation = true;
}
if(an >135 && an <= 175){
rotatePathValue = -1;
rotation = true;
}
if(an > 180 && an <= 220){
rotatePathValue = 1;
rotation = true;
}
if(an > 225 && an <= 270){
rotatePathValue = -1;
rotation = true;
}
if(an > 270 && an <= 315){
rotatePathValue = 1;
rotation = true;
}
if(an > 315 && an <= 355){
rotatePathValue = -1;
rotation = true;
}
if(rotation){
matrix.postRotate(rotatePathValue,rectF1.centerX(),rectF1.centerY());
movepath.transform(matrix);
matrix.mapRect(rectF1);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。