2014-09-03 76 views
2

我有一个屏幕(480x800),M(mx,my)是一个静态点,N(nx,ny)是屏幕上的一个动态点。 N(nx,ny)的位置取决于触摸的位置。我想确定P(?,?)和Q(?,?)的位置以绘制行1行2第2行反光第1行如何确定在AndEngine屏幕上画线的位置

enter image description here

这是我的代码:

private Line l2; 

    @Override 
    public boolean onSceneTouchEvent(final Scene pScene, 
      final TouchEvent pSceneTouchEvent) { 
     if (this.mPhysicsWorld != null) { 
      switch (pSceneTouchEvent.getAction()) { 
      case TouchEvent.ACTION_DOWN: 
       // Get position 
       p1x = pSceneTouchEvent.getX(); 
       p1y = pSceneTouchEvent.getY(); 
       return true; 

      case TouchEvent.ACTION_MOVE: 
       // Remove instance of the old line 
       mScene.detachChild(l2); 

       p3x = pSceneTouchEvent.getX(); 
       p3y = pSceneTouchEvent.getY(); 

       Rectangle testR = new Rectangle(CAMERA_WIDTH/2, 
         CAMERA_HEIGHT/2, 20, 20, 
         getVertexBufferObjectManager()); 

       l2 = new Line(CAMERA_WIDTH/2, CAMERA_HEIGHT/2, p3x, p3y, 
         getVertexBufferObjectManager()); 
       l2.setColor(new Color(223f/255f, 118f/255f, 43f/255f)); 
       l2.setLineWidth(5); 
       mScene.attachChild(l2); 
       return true; 
      } 
      return false; 
     } 
     return false; 
    } 

如果您有其他的方式来解决我的问题。请与我分享。谢谢。

回答

1

我没有用AndEngine编程一段时间,但这不是关于AndEngine的,所以我可以给你一个psedu代码来解决你的问题。

1)检查NX < MX

2)计算线1的斜率: line1slope =(MY-NY)/(MX-NX)

3)求P坐标使用等式:Y-Y1 = M(X-X1)

,其中M = line1slope

Y1 =我

X1 = MX

Y = 480(P的y坐标)(如果line1slope> 0,则Y = 0)

然后你可以找到你的X(其为P的x坐标)

line2slope = -1 * line1slope因为他们是反射

现在再次,你需要找到Q(你知道= 0,所以你需要找到只有Y坐标的X) 使用方程:Y-Y1 = M(X-X1)

其中m = line2slope

Y1 = PY

X1 = PX

X = 0

然后你可以找到你的y坐标(这是Q的y坐标)

希望它能帮助。