summaryrefslogtreecommitdiff
path: root/2d/_collisions
diff options
context:
space:
mode:
authorMatthew Kosarek <mattkae@protonmail.com>2021-10-31 13:54:11 -0400
committerMatthew Kosarek <mattkae@protonmail.com>2021-10-31 13:54:11 -0400
commit5c613a10364f30bd6add25f7950433f0c482c3ca (patch)
treeaf8f6e481b6400329eca12bd8cdb35e0237d63af /2d/_collisions
parenta214b4f8977a4b115710b5c9d152b392ac8e24f7 (diff)
(mkosarek) Working undamped spring motion
Diffstat (limited to '2d/_collisions')
-rw-r--r--2d/_collisions/pill_line/main.cpp20
-rw-r--r--2d/_collisions/pill_pill/main.cpp12
-rw-r--r--2d/_collisions/polygon_polygon.html2
-rw-r--r--2d/_collisions/polygon_polygon/main.cpp12
-rw-r--r--2d/_collisions/rectangle_line/main.cpp20
-rw-r--r--2d/_collisions/rectangle_rectangle.html2
-rw-r--r--2d/_collisions/rectangle_rectangle/main.cpp12
7 files changed, 42 insertions, 38 deletions
diff --git a/2d/_collisions/pill_line/main.cpp b/2d/_collisions/pill_line/main.cpp
index b9315a8..65687ba 100644
--- a/2d/_collisions/pill_line/main.cpp
+++ b/2d/_collisions/pill_line/main.cpp
@@ -1,4 +1,4 @@
-#include "../../../shared_cpp/OrthographicRenderer.h"
+#include "../../../shared_cpp/Renderer2d.h"
#include "../../../shared_cpp/types.h"
#include "../../../shared_cpp/WebglContext.h"
#include "../../../shared_cpp/mathlib.h"
@@ -54,7 +54,7 @@ struct Rigidbody {
};
struct Pill {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
float32 a = 0;
float32 b = 0;
@@ -68,7 +68,7 @@ struct Pill {
return retval;
}
- void load(OrthographicRenderer* renderer, float32 numSegments, float32 width, float32 height) {
+ void load(Renderer2d* renderer, float32 numSegments, float32 width, float32 height) {
// Note that a so-called "pill" is simply an ellipse.
// Equation of an ellipse is:
//
@@ -80,7 +80,7 @@ struct Pill {
//
float32 angleIncrements = (2.f * PI) / numSegments;
uint32 numVertices = static_cast<uint32>(numSegments * 3.f);
- OrthographicVertex* vertices = new OrthographicVertex[numVertices];
+ Vertex2d* vertices = new Vertex2d[numVertices];
a = width / 2.f;
b = height / 2.f;
@@ -119,7 +119,7 @@ struct Pill {
shape.model = Mat4x4().translateByVec2(body.position).rotate2D(body.rotation);
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer);
}
@@ -129,15 +129,15 @@ struct Pill {
};
struct LineSegment {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
Vector2 start;
Vector2 end;
float32 length;
Vector2 normal;
- OrthographicVertex vertices[2];
+ Vertex2d vertices[2];
- void load(OrthographicRenderer* renderer, Vector4 color, Vector2 inStart, Vector2 inEnd) {
+ void load(Renderer2d* renderer, Vector4 color, Vector2 inStart, Vector2 inEnd) {
start = inStart;
end = inEnd;
length = (start - end).length();
@@ -156,7 +156,7 @@ struct LineSegment {
body.momentOfInertia = body.mass * (length / 2.f);
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer, GL_LINES);
}
@@ -195,7 +195,7 @@ void resolveCollision(Rigidbody* first, Rigidbody* second, IntersectionResult* i
// Global Variables
WebglContext context;
-OrthographicRenderer renderer;
+Renderer2d renderer;
Pill pill;
MainLoop mainLoop;
LineSegment segmentList[4];
diff --git a/2d/_collisions/pill_pill/main.cpp b/2d/_collisions/pill_pill/main.cpp
index 1aef594..7802a5d 100644
--- a/2d/_collisions/pill_pill/main.cpp
+++ b/2d/_collisions/pill_pill/main.cpp
@@ -1,4 +1,4 @@
-#include "../../../shared_cpp/OrthographicRenderer.h"
+#include "../../../shared_cpp/Renderer2d.h"
#include "../../../shared_cpp/types.h"
#include "../../../shared_cpp/WebglContext.h"
#include "../../../shared_cpp/mathlib.h"
@@ -59,7 +59,7 @@ struct PillInData {
};
struct Pill {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
float32 a = 0;
float32 b = 0;
@@ -73,10 +73,10 @@ struct Pill {
return retval;
}
- void load(OrthographicRenderer* renderer, PillInData data) {
+ void load(Renderer2d* renderer, PillInData data) {
float32 angleIncrements = (2.f * PI) / data.numSegments;
uint32 numVertices = static_cast<uint32>(data.numSegments * 3.f);
- OrthographicVertex* vertices = new OrthographicVertex[numVertices];
+ Vertex2d* vertices = new Vertex2d[numVertices];
a = data.width / 2.f;
b = data.height / 2.f;
@@ -112,7 +112,7 @@ struct Pill {
shape.model = Mat4x4().translateByVec2(body.position).rotate2D(body.rotation);
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer);
}
@@ -141,7 +141,7 @@ void update(float32 time, void* userData);
void unload();
WebglContext context;
-OrthographicRenderer renderer;
+Renderer2d renderer;
MainLoop mainLoop;
Pill pillList[2];
diff --git a/2d/_collisions/polygon_polygon.html b/2d/_collisions/polygon_polygon.html
index da5edea..75dbcfd 100644
--- a/2d/_collisions/polygon_polygon.html
+++ b/2d/_collisions/polygon_polygon.html
@@ -26,6 +26,8 @@
<li><label>Collisions</label></li>
<li><a title="/2d/_collisions/rectangle_rectangle.html" href="/2d/_collisions/rectangle_rectangle.html">Rectangle-Rectangle</a></li>
<li><a title="/2d/_collisions/polygon_polygon.html" href="/2d/_collisions/polygon_polygon.html">Separating Axis Theorem</a></li>
+ <li><label>Softbody</label></li>
+ <li><a title="/2d/softbody/softbody_1.html" href="/2d/softbody/softbody_1.html">Softbody</a></li>
</ul>
</li>
<li>
diff --git a/2d/_collisions/polygon_polygon/main.cpp b/2d/_collisions/polygon_polygon/main.cpp
index 9cb3eb2..3d8561f 100644
--- a/2d/_collisions/polygon_polygon/main.cpp
+++ b/2d/_collisions/polygon_polygon/main.cpp
@@ -1,4 +1,4 @@
-#include "../../../shared_cpp/OrthographicRenderer.h"
+#include "../../../shared_cpp/Renderer2d.h"
#include "../../../shared_cpp/types.h"
#include "../../../shared_cpp/WebglContext.h"
#include "../../../shared_cpp/mathlib.h"
@@ -112,7 +112,7 @@ struct Edge {
};
struct ConvexPolygon {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
Rigidbody previousBody;
Vector4 color;
@@ -123,7 +123,7 @@ struct ConvexPolygon {
Vector2* transformedVertices;
Edge* edges;
- void load(OrthographicRenderer* renderer) {
+ void load(Renderer2d* renderer) {
transformedVertices = new Vector2[numVertices]; // This will be used for SAT calculations later
originalVertices = new Vector2[numVertices];
@@ -134,7 +134,7 @@ struct ConvexPolygon {
// is the 2k lines of JavaScript that are required to display it.
int32 verticesNeeded = numVertices * 3;
float32 angleIncrements = (2.f * PI) / static_cast<float32>(numVertices);
- OrthographicVertex* shaderVertices = new OrthographicVertex[verticesNeeded];
+ Vertex2d* shaderVertices = new Vertex2d[verticesNeeded];
for (int32 vidx = 0; vidx < numVertices; vidx++) {
int32 indexPosition = vidx * 3;
@@ -186,7 +186,7 @@ struct ConvexPolygon {
body = previousBody;
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer);
}
@@ -213,7 +213,7 @@ void update(float32 time, void* userData);
void unload();
WebglContext context;
-OrthographicRenderer renderer;
+Renderer2d renderer;
MainLoop mainLoop;
ConvexPolygon polygons[4];
diff --git a/2d/_collisions/rectangle_line/main.cpp b/2d/_collisions/rectangle_line/main.cpp
index 25e124c..49ce7d7 100644
--- a/2d/_collisions/rectangle_line/main.cpp
+++ b/2d/_collisions/rectangle_line/main.cpp
@@ -1,4 +1,4 @@
-#include "../../../shared_cpp/OrthographicRenderer.h"
+#include "../../../shared_cpp/Renderer2d.h"
#include "../../../shared_cpp/types.h"
#include "../../../shared_cpp/WebglContext.h"
#include "../../../shared_cpp/mathlib.h"
@@ -60,13 +60,13 @@ struct IntersectionResult {
};
struct Rectangle {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
Vector4 color;
float32 width = 0.f;
float32 height = 0.f;
- void load(OrthographicRenderer* renderer, Vector4 inColor, float32 inWidth, float32 inHeight) {
+ void load(Renderer2d* renderer, Vector4 inColor, float32 inWidth, float32 inHeight) {
color = inColor.toNormalizedColor();
width = inWidth;;
height = inHeight;
@@ -74,7 +74,7 @@ struct Rectangle {
float32 halfWidth = width / 2.f;
float32 halfHeight = height / 2.f;
- OrthographicVertex vertices[6];
+ Vertex2d vertices[6];
vertices[0].position = Vector2 { -halfWidth, -halfHeight };
vertices[1].position = Vector2 { -halfWidth, halfHeight };
vertices[2].position = Vector2 { halfWidth, halfHeight };
@@ -96,7 +96,7 @@ struct Rectangle {
shape.model = Mat4x4().translateByVec2(body.position).rotate2D(body.rotation);
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer);
}
@@ -106,15 +106,15 @@ struct Rectangle {
};
struct LineSegment {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
Vector2 start;
Vector2 end;
float32 length;
Vector2 normal;
- OrthographicVertex vertices[2];
+ Vertex2d vertices[2];
- void load(OrthographicRenderer* renderer, Vector4 color, Vector2 inStart, Vector2 inEnd) {
+ void load(Renderer2d* renderer, Vector4 color, Vector2 inStart, Vector2 inEnd) {
start = inStart;
end = inEnd;
length = (start - end).length();
@@ -133,7 +133,7 @@ struct LineSegment {
body.momentOfInertia = body.mass * (length / 2.f);
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer, GL_LINES);
}
@@ -161,7 +161,7 @@ void update(float32 time, void* userData);
void unload();
WebglContext context;
-OrthographicRenderer renderer;
+Renderer2d renderer;
MainLoop mainLoop;
LineSegment segmentList[4];
Rectangle rectangle;
diff --git a/2d/_collisions/rectangle_rectangle.html b/2d/_collisions/rectangle_rectangle.html
index d5c407a..75c2e62 100644
--- a/2d/_collisions/rectangle_rectangle.html
+++ b/2d/_collisions/rectangle_rectangle.html
@@ -26,6 +26,8 @@
<li><label>Collisions</label></li>
<li><a title="/2d/_collisions/rectangle_rectangle.html" href="/2d/_collisions/rectangle_rectangle.html">Rectangle-Rectangle</a></li>
<li><a title="/2d/_collisions/polygon_polygon.html" href="/2d/_collisions/polygon_polygon.html">Separating Axis Theorem</a></li>
+ <li><label>Softbody</label></li>
+ <li><a title="/2d/softbody/softbody_1.html" href="/2d/softbody/softbody_1.html">Softbody</a></li>
</ul>
</li>
<li>
diff --git a/2d/_collisions/rectangle_rectangle/main.cpp b/2d/_collisions/rectangle_rectangle/main.cpp
index 6913749..3cd4f46 100644
--- a/2d/_collisions/rectangle_rectangle/main.cpp
+++ b/2d/_collisions/rectangle_rectangle/main.cpp
@@ -1,4 +1,4 @@
-#include "../../../shared_cpp/OrthographicRenderer.h"
+#include "../../../shared_cpp/Renderer2d.h"
#include "../../../shared_cpp/types.h"
#include "../../../shared_cpp/WebglContext.h"
#include "../../../shared_cpp/mathlib.h"
@@ -67,14 +67,14 @@ struct Edge {
};
struct Rectangle {
- OrthographicShape shape;
+ Mesh2d shape;
Rigidbody body;
Rigidbody previousBody;
Vector4 color;
float32 width = 0.f;
float32 height = 0.f;
- void load(OrthographicRenderer* renderer, Vector4 inColor, float32 inWidth, float32 inHeight) {
+ void load(Renderer2d* renderer, Vector4 inColor, float32 inWidth, float32 inHeight) {
color = inColor.toNormalizedColor();
width = inWidth;;
height = inHeight;
@@ -82,7 +82,7 @@ struct Rectangle {
float32 halfWidth = width / 2.f;
float32 halfHeight = height / 2.f;
- OrthographicVertex vertices[6];
+ Vertex2d vertices[6];
vertices[0].position = Vector2 { -halfWidth, -halfHeight };
vertices[1].position = Vector2 { -halfWidth, halfHeight };
vertices[2].position = Vector2 { halfWidth, halfHeight };
@@ -106,7 +106,7 @@ struct Rectangle {
shape.model = Mat4x4().translateByVec2(body.position).rotate2D(body.rotation);
}
- void render(OrthographicRenderer* renderer) {
+ void render(Renderer2d* renderer) {
shape.render(renderer);
}
@@ -169,7 +169,7 @@ void update(float32 time, void* userData);
void unload();
WebglContext context;
-OrthographicRenderer renderer;
+Renderer2d renderer;
MainLoop mainLoop;
Rectangle rectangleList[4];