我有一个屏幕(480x800),M(mx,my)是静态点,N(nx,ny)是屏幕上的动态点。 N(nx,ny)的位置取决于触摸的位置。我想确定P(?,?)和Q(?,?)的位置来绘制第1行和第2行。 第2行是反射第1行。
这是我的代码:
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;
}
如果您有其他方法可以解决我的问题。请与我分享。感谢。
答案 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坐标)
希望它有所帮助。