2012-09-16 46 views
-1

我需要計算餘弦值θ和 另外我需要最終找到機器人當前位置與它移動的新位置之間的角度值。 theta值。來計算一個物體的角度和餘弦值

import java.io.IOException; 
import java.lang.reflect.Method; 
import mrds_project.Path; 
import mrds_project.Pose; 
import mrds_project.controller.Controller; 
import java.lang.Math; 

public class NaiveStrategy implements PathStrategy { 

private final Controller controller; 

private NaiveStrategy() { 

} 
public NaiveStrategy(Controller controller) { 
    this.controller = controller; 
} 

@Override 
public void move(Path path) { 
    for (Pose target : path) { 
        Pose currentPose = controller.getPose(); 
     double[] targetPoint = target.getPosition().getVector(); 
        double targetVectorX; 
        double targetVectorY; 
        double currentVector; 
        targetVectorX = targetPoint[0] - currentPose.getPosition().getVector()[0]; 
        targetVectorY = targetPoint[1] - currentPose.getPosition().getVector()[1]; 
    } 
} 
    public double dotPro1(double[] vectorA, double[] vectorB){ 
     double[] vecPro; 
     vecPro = new double[2]; 
     vecPro[0] = vectorA[0]*vectorB[0]; 
     vecPro[1] = vectorA[1]*vectorB[1]; 
     return vecPro[0] + vecPro[1]; 
    } 
    public double dotPro2(double[] length){ 
     double[] lenPro; 
     lenPro = new double[1]; 
     lenPro[0] = length[0]; 
     return lenPro[0]; 
    } 
    public static double cosine(double a) throws IOException, ClassNotFoundException{ 
     double x = Math.cos(Math.toRadians(a)); 
     Class c = Class.forName("NaiveStrategy"); 
     Class methodTypes[] = new Class[3]; 
     methodTypes[0] = Double.TYPE; 
     methodTypes[1] = Double.TYPE; 
     methodTypes[2] = Double.TYPE; 
     Method[] m = c.getMethods(); 
     NaiveStrategy ns = new NaiveStrategy(); 
     Object arg[] = new Object[3]; 
     arg[0] = new Double(50); 
     arg[1] = new Double(50); 
     arg[2] = new Double(50); 
     Object o = m.ns(ns, arg); 
     return 0; 
    } 
} 

我需要知道這個答案,我正在構造中的錯誤,我知道爲什麼,是不是因爲的「變量控制器可能沒有初始化」。和錯誤在return語句前的最後一行,我不知道,它說「無法找到符號」

Controller.java 
package mrds_project.controller; 

import mrds_project.Pose; 


public interface Controller { 
void setVelocity(int linear, int angular); 
public Pose getPose(); 

} 
Pose.java 
package mrds_project; 

import java.util.Map; 

public class Pose { 
private final Quaternion orientation; 
private final Quaternion position; 

public Pose(Map<String, Object> mrdsmap) 
{ 
Map<String, Object> orientationMap = (Map<String, Object>) mrdsmap.get("Orientation"); 
double w = (Double) orientationMap.get("W"); 
double x = (Double)orientationMap.get("X"); 
double y = (Double)orientationMap.get("Y"); 
double z = (Double)orientationMap.get("Z"); 
orientation = new Quaternion(w, x, y, z); 
Map<String, Object> positionMap = (Map<String, Object>) mrdsmap.get("Position"); 
double x1 = (Double)positionMap.get("X"); 
double y1 = (Double)positionMap.get("Y"); 
double z1 = (Double)positionMap.get("Z"); 
position = new Quaternion(x1, y1, z1); 
} 


public Quaternion getOrientation() { 
return orientation; 
} 

public Quaternion getPosition() { 
return position; 
} 
} 
+2

你在這裏做了一些奇怪的事情。爲什麼你需要拋出'IOException' *和*'ClassNotFoundException'?在這個方法中似乎沒有任何IO,並且我不完全確定你爲什麼要在那裏使用一個'Class'對象。 – Makoto

+0

@Makoto,嗯,你可以建議我在我的編碼中應該糾正什麼。 –

回答

3

你不能有一個未分配的最後一個變量

private final Controller controller; 

默認構造函數 - 編譯器將防止未分配的變量。刪除final關鍵字將允許您保留2個構造函數。

1

變化

Object o = m.ns(ns, arg); 

Object o = m.invoke(ns, arg); 

但爲什麼您使用的思考呢?爲什麼不使用

public static double cosine(double a) { 
     double x = Math.cos(Math.toRadians(a)); 
     NaiveStrategy ns = new NaiveStrategy(); 
     ns.YourMethodHere(50, 50, 50); 
     return 0; 
    } 
+0

Object o = m.invoke(ns,arg)它不起作用。 –

+0

再次發佈實際的錯誤消息。 –

+0

我編輯了我的文章檢查出來。 –