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(); } }
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); }
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); }
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); }
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); }
public VolumeMeasure(int[] ids) : base() { face = new FaceRefer(ids); }
public SurfaceAreaMeasure(int[] ids) : base() { face = new FaceRefer(ids); }
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); }
public GizmoArea(FaceRefer face) { name = "GizmoArea"; this.face = face; }
public GizmoArea(int[] ids) { name = "GizmoArea"; face = new FaceRefer(ids); }
public CenterPointAuxiliary(int[] ids, string sign) : base() { face = new FaceRefer(ids); this.sign = sign; }
public GizmoVolume(int[] ids) { name = "GizmoVolume"; face = new FaceRefer(ids); }
public GizmoVolume(FaceRefer face) { name = "GizmoVolume"; this.face = face; }
public GizmoSurface(int[] ids) { name = "GizmoSurface"; face = new FaceRefer(ids); }
public GizmoSurface(FaceRefer face) { name = "GizmoSurface"; this.face = face; }