| 12345678910111213141516171819202122 |
- package arm.format;
- import iron.math.Vec4;
- class MeshParser {
- public static function pnpoly(v0x: Float, v0y: Float, v1x: Float, v1y: Float, v2x: Float, v2y: Float, px: Float, py: Float): Bool {
- // https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html
- var c = false;
- if (((v0y > py) != (v2y > py)) && (px < (v2x - v0x) * (py - v0y) / (v2y - v0y) + v0x)) c = !c;
- if (((v1y > py) != (v0y > py)) && (px < (v0x - v1x) * (py - v1y) / (v0y - v1y) + v1x)) c = !c;
- if (((v2y > py) != (v1y > py)) && (px < (v1x - v2x) * (py - v2y) / (v1y - v2y) + v2x)) c = !c;
- return c;
- }
- public static function calcNormal(p0: Vec4, p1: Vec4, p2: Vec4): Vec4 {
- var cb = new iron.math.Vec4().subvecs(p2, p1);
- var ab = new iron.math.Vec4().subvecs(p0, p1);
- cb.cross(ab);
- cb.normalize();
- return cb;
- }
- }
|