不知道你怎么获取质点坐标,所以我在程序中固定了点坐标,方便test,你主要看calOrder方法中如何判断是否顺时针吧.代码如下:
//质点类
public class Spot {
x05int x;
x05int y;
x05
x05Spot(int x,int y){
x05x05this.x = x;
x05x05this.y = y;
x05}
}
public class TestSpot {
x05public static void main(String[] args){
x05x05
x05x05/*给定的三个点坐标,是有顺序的.
x05x05 * 以(0,0),(0,1),(1,1),(1,0)(0,0)为例
x05x05 * p1 表示 质点运动的第一个点坐标,即(0,0)这点
x05x05 * p2 表示 质点运动的第二个点坐标,即(0,1)这点
x05x05 * p3 表示 质点运动的第三个点坐标,即(1,1)这点
x05x05 */
x05x05Spot p1 = new Spot(0,0);
x05x05Spot p2 = new Spot(0,1);
x05x05Spot p3 = new Spot(1,1);
x05x05
x05x05
x05x05TestSpot ts = new TestSpot();
x05x05//调用函数,这三个参数也是有顺序的,同上
x05x05System.out.print(ts.calOrder(p1,p2,p3));
x05x05
x05}
x05
x05public int calXY(Spot p1,Spot p2){
x05x05
x05x05/*
x05x05 * 计算两个点之间x,y的位置变化
x05x05 *
x05x05 */
x05x05int x = p1.x - p2.x;
x05x05int y = p1.y - p2.y;
x05x05
x05x05if(x == 0){
x05x05x05if(y < 0){
x05x05x05x05return -1;
x05x05x05}else
x05x05x05x05return -2;
x05x05}else if(x < 0){
x05x05x05return 2;
x05x05}else return 1;
x05x05
x05x05
x05x05
x05}
x05
x05public String calOrder(Spot p1,Spot p2,Spot p3){
x05x05
x05x05/*
x05x05 * 计算是否顺时针
x05x05 */
x05x05
x05x05
x05x05//首先判断三个点间x,y的位置变化
x05x05int num1 = this.calXY(p1,p2);
x05x05int num2 = this.calXY(p2,p3);
x05x05
x05x05//然后根据所得判断
x05x05if(num1 < 0){
x05x05x05if((num1+num2) == 0){
x05x05x05x05return "逆时针";
x05x05x05}
x05x05x05else return "顺时针";
x05x05}
x05x05
x05x05if(num1 > 0){
x05x05x05if((num1 + num2) == 0){
x05x05x05x05return "顺时针";
x05x05x05}
x05x05x05else return "逆时针";
x05x05}
x05x05
x05x05return null;
x05}
}