Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Spiele Programmierer« (07.09.2015, 16:26)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (07.09.2015, 18:46)
C#-Quelltext |
|
1 |
vec2 invBilinear( in vec2 p, in vec2 a, in vec2 b, in vec2 c, in vec2 d ) |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
public float cross(Vec2 a, Vec2 b) { return a.x * b.y - a.y * b.x; } public Vec2 invBilinear(Vec2 p, Vec2 a, Vec2 b, Vec2 c, Vec2 d) { Vec2 e = new Vec2(); e.x = b.x - a.x; e.y = b.y - a.y; Vec2 f = new Vec2(); f.x = d.x - a.x; f.y = d.y - a.y; Vec2 g = new Vec2(); g.x = a.x - b.x + c.x - d.x; g.y = a.y - b.y + c.y - d.y; Vec2 h = new Vec2(); h.x = p.x - a.x; h.y = p.y - a.y; float k2 = cross(g, f); float k1 = cross(e, f) + cross(h, g); float k0 = cross(h, e); float w = k1 * k1 - 4.0f * k0 * k2; if (w < 0.0) { return new Vec2(-1.0f, -1.0f); } w = (float)Math.Sqrt(w); float v1 = (-k1 - w) / (2.0f * k2); float u1 = (h.x - f.x * v1) / (e.x + g.x * v1); float v2 = (-k1 + w) / (2.0f * k2); float u2 = (h.x - f.x * v2) / (e.x + g.x * v2); float u = u1; float v = v1; if (v < 0.0 || v > 1.0 || u < 0.0 || u > 1.0) { u = u2; v = v2; } if (v < 0.0 || v > 1.0 || u < 0.0 || u > 1.0) { u = -1.0f; v = -1.0f; } return new Vec2(u, v); } public class Vec2 { public float x, y; public Vec2() { } public Vec2(float x, float y) { this.x = x; this.y = y; } } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public unsafe int pnpoly(int nvert, float[] vertx, float[] verty, float testx, float testy) { int i, j, c = 0; for (i = 0, j = nvert - 1; i < nvert; j = i++) { if (((verty[i] > testy) != (verty[j] > testy)) && (testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + vertx[i])) { //c = !c; if (c == 0) { c = 1; } else { c = 0; } } } return c; } |
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »MitgliedXYZ« (08.09.2015, 19:41)
C#-Quelltext |
|
1 |
PIXEL_FORMAT = System.Drawing.Imaging.PixelFormat.Format32bppArgb;
|
C#-Quelltext |
|
1 |
ptr[(x * 3) + y * stride] = |
C#-Quelltext |
|
1 |
ptr[(x * 4) + y * stride] = |
Werbeanzeige