如何确定使用AndEngine在屏幕上绘制线条的位置

时间:2014-09-03 03:17:48

标签: android andengine game-physics

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

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 个答案:

答案 0 :(得分: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(你知道X = 0所以你需要只找到Y坐标) 使用等式:y-y1 = m(x-x1)

其中m = line2slope

y1 = py

x1 = px

x = 0

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

希望它有所帮助。