如何根据与之碰撞的路径旋转拍子

如何解决如何根据与之碰撞的路径旋转拍子

我想在我的绘图应用程序中应用物理,即使用自定义画布进行绘图,我想做什么:假设有两个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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?