示例#1
0
    public override void InitWithGeometry(Geometry geometry)
    {
        units = new VertexUnit[] { };
        if (geometry is ResolvedBody)
        {
            resolvedBody = (ResolvedBody)geometry;
        }
        GeoVertex[] geoVertices = geometry.GeoVertices();
        int[]       ids         = new int[geoVertices.Length];
        for (int i = 0; i < geoVertices.Length; i++)
        {
            ids[i] = geoVertices[i].VertexUnit().id;
        }
        face = new FaceRefer(ids);

        elements = new GeoElement[] { };

        dependencies.AddRange(units);

        GeoCircular[] geoCirculars = geometry.GeoCirculars();
        if (geoCirculars.Length != 0)
        {
            GeoCircular geoCircular = geoCirculars[0];
            circular = geoCircular.Circular();
        }
    }
示例#2
0
    public void AddGizmoArea(Gizmo gizmo)
    {
        if (!(gizmo is GizmoArea))
        {
            return;
        }
        GizmoArea gizmoArea = (GizmoArea)gizmo;

        GameObject gizmoObject = new GameObject("area");

        gizmoObject.transform.SetParent(gizmoWrapper.transform);

        AreaBehaviour areaBehaviour = gizmoObject.AddComponent <AreaBehaviour>();

        areaBehaviour.Init(geoCamera);

        FaceRefer face   = gizmoArea.face;
        Vector3   center = geometry.Center();

        Vector3[] vectors = new Vector3[face.ids.Length];
        for (int i = 0; i < face.ids.Length; i++)
        {
            vectors[i] = geometry.UnitVector(face.ids[i]);
        }
        float area = geometry.FaceArea(face.ids);

        areaBehaviour.SetData(center, vectors, area);

        gizmoMap.Add(gizmoArea, areaBehaviour);
    }
示例#3
0
    public void AddGizmoVolume(Gizmo gizmo)
    {
        if (!(gizmo is GizmoVolume))
        {
            return;
        }
        GizmoVolume gizmoVolume = (GizmoVolume)gizmo;

        GameObject gizmoObject = new GameObject("volume");

        gizmoObject.transform.SetParent(gizmoWrapper.transform);

        VolumeBehaviour volumeBehaviour = gizmoObject.AddComponent <VolumeBehaviour>();

        volumeBehaviour.Init(geoCamera);

        FaceRefer face = gizmoVolume.face;

        if (face.ids.Length < 3)
        {
            return;
        }
        Vector3 center     = geometry.Center();
        Vector3 v1         = geometry.UnitVector(face.ids[0]);
        Vector3 v2         = geometry.UnitVector(face.ids[1]);
        Vector3 v3         = geometry.UnitVector(face.ids[2]);
        float   radius     = v3.z - v2.z;
        int     pointCount = 4;

        Vector3[] vectors     = new Vector3[pointCount];
        float     angledegree = 360.0f;
        float     angleRad    = Mathf.Deg2Rad * angledegree;
        float     angleCur    = angleRad;
        float     angledelta  = angleRad / pointCount;

        for (int i = 0; i < pointCount; i++)
        {
            float cosA = Mathf.Cos(angleCur);
            float sinA = Mathf.Sin(angleCur);
            vectors[i] = new Vector3(radius * cosA, v1.y, radius * sinA);
            angleCur  -= angledelta;
        }

        string area = geometry.Volume(face.ids);

        volumeBehaviour.SetData(center, vectors, area);

        gizmoMap.Add(gizmoVolume, volumeBehaviour);
    }
示例#4
0
    public void UpdateGizmoArea(Gizmo gizmo)
    {
        if (!(gizmo is GizmoArea))
        {
            return;
        }
        GizmoArea gizmoArea = (GizmoArea)gizmo;

        AreaBehaviour areaBehaviour = (AreaBehaviour)gizmoMap[gizmoArea];

        FaceRefer face   = gizmoArea.face;
        Vector3   center = geometry.Center();

        Vector3[] vectors = new Vector3[face.ids.Length];
        for (int i = 0; i < face.ids.Length; i++)
        {
            vectors[i] = geometry.UnitVector(face.ids[i]);
        }
        float area = geometry.FaceArea(face.ids);

        areaBehaviour.SetData(center, vectors, area);
    }
示例#5
0
    public override void InitWithGeometry(Geometry geometry)
    {
        if (geometry is ResolvedBody)
        {
            resolvedBody = (ResolvedBody)geometry;
        }
        units = new VertexUnit[] { };

        GeoVertex[] geoVertices = geometry.GeoVertices();
        vertices = new VertexUnit[geoVertices.Length];
        int[] ids = new int[geoVertices.Length];
        for (int i = 0; i < geoVertices.Length; i++)
        {
            vertices[i] = geoVertices[i].VertexUnit();
            ids[i]      = vertices[i].id;
        }
        face = new FaceRefer(ids);

        elements = new GeoElement[] { };

        dependencies.AddRange(units);
    }
示例#6
0
 public VolumeMeasure(int[] ids) : base()
 {
     face = new FaceRefer(ids);
 }
 public SurfaceAreaMeasure(int[] ids) : base()
 {
     face = new FaceRefer(ids);
 }
示例#8
0
 public PlaneVerticalAuxiliary(int id1, int[] ids, string sign) : base()
 {
     vertex    = new VertexRefer(id1);
     face      = new FaceRefer(ids);
     this.sign = sign;
 }
 public PlaneAuxiliary(int[] ids) : base()
 {
     face = new FaceRefer(ids);
 }
示例#10
0
    public GizmoArea(FaceRefer face)
    {
        name = "GizmoArea";

        this.face = face;
    }
示例#11
0
    public GizmoArea(int[] ids)
    {
        name = "GizmoArea";

        face = new FaceRefer(ids);
    }
示例#12
0
 public CenterPointAuxiliary(int[] ids, string sign) : base()
 {
     face      = new FaceRefer(ids);
     this.sign = sign;
 }
示例#13
0
文件: Gizmo.cs 项目: Y-dc/GeoSpace
    public GizmoVolume(int[] ids)
    {
        name = "GizmoVolume";

        face = new FaceRefer(ids);
    }
示例#14
0
文件: Gizmo.cs 项目: Y-dc/GeoSpace
    public GizmoVolume(FaceRefer face)
    {
        name = "GizmoVolume";

        this.face = face;
    }
示例#15
0
文件: Gizmo.cs 项目: Y-dc/GeoSpace
    public GizmoSurface(int[] ids)
    {
        name = "GizmoSurface";

        face = new FaceRefer(ids);
    }
示例#16
0
文件: Gizmo.cs 项目: Y-dc/GeoSpace
    public GizmoSurface(FaceRefer face)
    {
        name = "GizmoSurface";

        this.face = face;
    }