| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System;
- using System.Collections.Generic;
- using o0.Geometry2D;
- using o0.Geometry2D.Float;
- using UnityEngine;
- namespace ZIM
- {
- // 屏幕识别使用,记录摄像机画面内的四边形
- public class QuadrilateralInCamera
- {
- public Vector2 CameraSize;
- public OrdinalQuadrilateral2 Quad;
- public QuadrilateralInCamera(Vector2 a, Vector2 b, Vector2 c, Vector2 d, Vector2 cameraSize)
- {
- CameraSize = cameraSize;
- Quad = new OrdinalQuadrilateral2(a.o0Vector(), b.o0Vector(), c.o0Vector(), d.o0Vector());
- }
- public QuadrilateralInCamera(Vector a, Vector b, Vector c, Vector d, Vector cameraSize)
- {
- CameraSize = cameraSize.UnityVector();
- Quad = new OrdinalQuadrilateral2(a, b, c, d);
- }
- public QuadrilateralInCamera(IEnumerable<Vector> enumable, Vector2 cameraSize)
- {
- CameraSize = cameraSize;
- Quad = new OrdinalQuadrilateral2(enumable);
- }
- public QuadrilateralInCamera(OrdinalQuadrilateral2 quad, Vector2 cameraSize)
- {
- CameraSize = cameraSize;
- Quad = quad;
- }
- // 四边形是否完整的在屏幕内
- public bool IsQuadComplete()
- {
- if (Quad.A.x < Quad.B.x && Quad.A.y < Quad.C.y && Quad.B.y < Quad.D.y && Quad.C.x < Quad.D.x && Quad.A.x > 0 && Quad.A.y > 0 &&
- Quad.B.x < CameraSize.x && Quad.B.y > 0 && Quad.C.x > 0 && Quad.C.y < CameraSize.y && Quad.D.x < CameraSize.x && Quad.D.y < CameraSize.y)
- return true;
- return false;
- }
- public List<Vector2> GetVertexList()
- {
- return new List<Vector2>() {
- new Vector2(Quad[0].x / CameraSize.x, Quad[0].y / CameraSize.y),
- new Vector2(Quad[1].x / CameraSize.x, Quad[1].y / CameraSize.y),
- new Vector2(Quad[2].x / CameraSize.x, Quad[2].y / CameraSize.y),
- new Vector2(Quad[3].x / CameraSize.x, Quad[3].y / CameraSize.y)
- };
- }
- }
- }
|