A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/AlmasB/FXGL/commit/5361601a3 below:

DistanceProxy · AlmasB/FXGL@5361601 · GitHub

File tree Expand file treeCollapse file tree 5 files changed

+109

-101

lines changed

Filter options

Expand file treeCollapse file tree 5 files changed

+109

-101

lines changed Original file line number Diff line number Diff line change

@@ -430,104 +430,6 @@ public void solve3() {

430 430

}

431 431

}

432 432 433 -

/**

434 -

* A distance proxy is used by the GJK algorithm. It encapsulates any shape. jbox2dTODO: see if we can

435 -

* just do assignments with m_vertices, instead of copying stuff over

436 -

*

437 -

* @author daniel

438 -

*/

439 -

public static class DistanceProxy {

440 -

public final Vec2[] m_vertices = new Vec2[JBoxSettings.maxPolygonVertices];

441 -

public int m_count = 0;

442 -

public float m_radius = 0f;

443 -

public final Vec2[] m_buffer = new Vec2[2];

444 - 445 -

public DistanceProxy() {

446 -

for (int i = 0; i < m_vertices.length; i++) {

447 -

m_vertices[i] = new Vec2();

448 -

}

449 -

}

450 - 451 -

/**

452 -

* Initialize the proxy using the given shape. The shape must remain in scope while the proxy is

453 -

* in use.

454 -

*/

455 -

public final void set(final Shape shape, int index) {

456 -

switch (shape.getType()) {

457 -

case CIRCLE:

458 -

final CircleShape circle = (CircleShape) shape;

459 -

m_vertices[0].set(circle.center);

460 -

m_count = 1;

461 -

m_radius = circle.getRadius();

462 - 463 -

break;

464 -

case POLYGON:

465 -

final PolygonShape poly = (PolygonShape) shape;

466 -

m_count = poly.getVertexCount();

467 -

m_radius = poly.getRadius();

468 -

for (int i = 0; i < m_count; i++) {

469 -

m_vertices[i].set(poly.m_vertices[i]);

470 -

}

471 -

break;

472 -

case CHAIN:

473 -

final ChainShape chain = (ChainShape) shape;

474 -

assert 0 <= index && index < chain.getCount();

475 - 476 -

m_buffer[0] = chain.getVertex(index);

477 -

if (index + 1 < chain.getCount()) {

478 -

m_buffer[1] = chain.getVertex(index + 1);

479 -

} else {

480 -

m_buffer[1] = chain.getVertex(0);

481 -

}

482 - 483 -

m_vertices[0].set(m_buffer[0]);

484 -

m_vertices[1].set(m_buffer[1]);

485 -

m_count = 2;

486 -

m_radius = chain.getRadius();

487 -

break;

488 -

case EDGE:

489 -

EdgeShape edge = (EdgeShape) shape;

490 -

m_vertices[0].set(edge.m_vertex1);

491 -

m_vertices[1].set(edge.m_vertex2);

492 -

m_count = 2;

493 -

m_radius = edge.getRadius();

494 -

break;

495 -

default:

496 -

assert false;

497 -

}

498 -

}

499 - 500 -

/**

501 -

* Get the supporting vertex index in the given direction.

502 -

*

503 -

* @param d

504 -

* @return

505 -

*/

506 -

public final int getSupport(final Vec2 d) {

507 -

int bestIndex = 0;

508 -

float bestValue = Vec2.dot(m_vertices[0], d);

509 -

for (int i = 1; i < m_count; i++) {

510 -

float value = Vec2.dot(m_vertices[i], d);

511 -

if (value > bestValue) {

512 -

bestIndex = i;

513 -

bestValue = value;

514 -

}

515 -

}

516 - 517 -

return bestIndex;

518 -

}

519 - 520 -

/**

521 -

* Used by Distance.

522 -

*

523 -

* @return a vertex by index

524 -

*/

525 -

public final Vec2 getVertex(int index) {

526 -

assert 0 <= index && index < m_count;

527 -

return m_vertices[index];

528 -

}

529 -

}

530 - 531 433

private Simplex simplex = new Simplex();

532 434

private int[] saveA = new int[3];

533 435

private int[] saveB = new int[3];

Original file line number Diff line number Diff line change

@@ -0,0 +1,109 @@

1 +

/*

2 +

* FXGL - JavaFX Game Library. The MIT License (MIT).

3 +

* Copyright (c) AlmasB (almaslvl@gmail.com).

4 +

* See LICENSE for details.

5 +

*/

6 + 7 +

package com.almasb.fxgl.physics.box2d.collision;

8 + 9 +

import com.almasb.fxgl.core.math.Vec2;

10 +

import com.almasb.fxgl.physics.box2d.collision.shapes.*;

11 +

import com.almasb.fxgl.physics.box2d.common.JBoxSettings;

12 + 13 +

/**

14 +

* A distance proxy is used by the GJK algorithm. It encapsulates any shape. jbox2dTODO: see if we can

15 +

* just do assignments with m_vertices, instead of copying stuff over

16 +

*

17 +

* @author daniel

18 +

*/

19 +

public class DistanceProxy {

20 +

public final Vec2[] m_vertices = new Vec2[JBoxSettings.maxPolygonVertices];

21 +

public int m_count = 0;

22 +

public float m_radius = 0f;

23 +

public final Vec2[] m_buffer = new Vec2[2];

24 + 25 +

public DistanceProxy() {

26 +

for (int i = 0; i < m_vertices.length; i++) {

27 +

m_vertices[i] = new Vec2();

28 +

}

29 +

}

30 + 31 +

/**

32 +

* Initialize the proxy using the given shape. The shape must remain in scope while the proxy is

33 +

* in use.

34 +

*/

35 +

public final void set(final Shape shape, int index) {

36 +

switch (shape.getType()) {

37 +

case CIRCLE:

38 +

final CircleShape circle = (CircleShape) shape;

39 +

m_vertices[0].set(circle.center);

40 +

m_count = 1;

41 +

m_radius = circle.getRadius();

42 + 43 +

break;

44 +

case POLYGON:

45 +

final PolygonShape poly = (PolygonShape) shape;

46 +

m_count = poly.getVertexCount();

47 +

m_radius = poly.getRadius();

48 +

for (int i = 0; i < m_count; i++) {

49 +

m_vertices[i].set(poly.m_vertices[i]);

50 +

}

51 +

break;

52 +

case CHAIN:

53 +

final ChainShape chain = (ChainShape) shape;

54 +

assert 0 <= index && index < chain.getCount();

55 + 56 +

m_buffer[0] = chain.getVertex(index);

57 +

if (index + 1 < chain.getCount()) {

58 +

m_buffer[1] = chain.getVertex(index + 1);

59 +

} else {

60 +

m_buffer[1] = chain.getVertex(0);

61 +

}

62 + 63 +

m_vertices[0].set(m_buffer[0]);

64 +

m_vertices[1].set(m_buffer[1]);

65 +

m_count = 2;

66 +

m_radius = chain.getRadius();

67 +

break;

68 +

case EDGE:

69 +

EdgeShape edge = (EdgeShape) shape;

70 +

m_vertices[0].set(edge.m_vertex1);

71 +

m_vertices[1].set(edge.m_vertex2);

72 +

m_count = 2;

73 +

m_radius = edge.getRadius();

74 +

break;

75 +

default:

76 +

assert false;

77 +

}

78 +

}

79 + 80 +

/**

81 +

* Get the supporting vertex index in the given direction.

82 +

*

83 +

* @param d

84 +

* @return

85 +

*/

86 +

public final int getSupport(final Vec2 d) {

87 +

int bestIndex = 0;

88 +

float bestValue = Vec2.dot(m_vertices[0], d);

89 +

for (int i = 1; i < m_count; i++) {

90 +

float value = Vec2.dot(m_vertices[i], d);

91 +

if (value > bestValue) {

92 +

bestIndex = i;

93 +

bestValue = value;

94 +

}

95 +

}

96 + 97 +

return bestIndex;

98 +

}

99 + 100 +

/**

101 +

* Used by Distance.

102 +

*

103 +

* @return a vertex by index

104 +

*/

105 +

public final Vec2 getVertex(int index) {

106 +

assert 0 <= index && index < m_count;

107 +

return m_vertices[index];

108 +

}

109 +

}

Original file line number Diff line number Diff line change

@@ -7,7 +7,6 @@

7 7

package com.almasb.fxgl.physics.box2d.collision;

8 8 9 9

import com.almasb.fxgl.core.math.Vec2;

10 -

import com.almasb.fxgl.physics.box2d.collision.Distance.DistanceProxy;

11 10

import com.almasb.fxgl.physics.box2d.collision.Distance.SimplexCache;

12 11

import com.almasb.fxgl.physics.box2d.common.Rotation;

13 12

import com.almasb.fxgl.physics.box2d.common.Sweep;

Original file line number Diff line number Diff line change

@@ -6,7 +6,6 @@

6 6

package com.almasb.fxgl.physics.box2d.collision;

7 7 8 8

import com.almasb.fxgl.core.math.FXGLMath;

9 -

import com.almasb.fxgl.physics.box2d.collision.Distance.DistanceProxy;

10 9

import com.almasb.fxgl.physics.box2d.collision.Distance.SimplexCache;

11 10

import com.almasb.fxgl.physics.box2d.common.JBoxSettings;

12 11

import com.almasb.fxgl.physics.box2d.common.Sweep;

Original file line number Diff line number Diff line change

@@ -7,7 +7,6 @@

7 7

package com.almasb.fxgl.physics.box2d.collision

8 8 9 9

import com.almasb.fxgl.core.math.Vec2

10 -

import com.almasb.fxgl.physics.box2d.collision.Distance.DistanceProxy

11 10

import com.almasb.fxgl.physics.box2d.common.Transform

12 11 13 12

/**

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4