internal void SetPerpendiculars(Perimeter perpOne, Perimeter perpTwo, float step) { this.perpendicularOne = perpOne; this.perpendicularTwo = perpTwo; this.insideCornerOne = GetPoint(perpOne.edgeMid); this.insideCornerTwo = GetPoint(perpTwo.edgeMid); this.outsideCornerOne = this.insideCornerOne + ((this.edgeVector + perpOne.edgeVector) * step); this.outsideCornerTwo = this.insideCornerTwo + ((this.edgeVector + perpTwo.edgeVector) * step); }
internal void SetPerpendiculars(Perimeter perpOne, Perimeter perpTwo, float step) { this.perpendicularOne = perpOne; this.perpendicularTwo = perpTwo; this.insideCornerOne = GetPoint(perpOne.edgeMid); this.insideCornerTwo = GetPoint(perpTwo.edgeMid); this.outsideCornerOne = this.insideCornerOne + ((this.edgeVector + perpOne.edgeVector) * step); this.outsideCornerTwo = this.insideCornerTwo + ((this.edgeVector + perpTwo.edgeVector) * step); }
private void Initialize(CellMatrix matrix, GridSection[] gridSections) { //Setup the basic state _cellMatrix = matrix; _gridSections = gridSections; _origin = _cellMatrix.origin; _cellSize = _cellMatrix.cellSize; _sizeX = _cellMatrix.columns; _sizeZ = _cellMatrix.rows; //Perimeters _left = new Perimeter(Vector3.left, GetPerimeterEdge(Vector3.left, false), GetPerimeterEdge(Vector3.left, true)); _right = new Perimeter(Vector3.right, GetPerimeterEdge(Vector3.right, false), GetPerimeterEdge(Vector3.right, true)); _top = new Perimeter(Vector3.forward, GetPerimeterEdge(Vector3.forward, false), GetPerimeterEdge(Vector3.forward, true)); _bottom = new Perimeter(Vector3.back, GetPerimeterEdge(Vector3.back, false), GetPerimeterEdge(Vector3.back, true)); _left.SetPerpendiculars(_top, _bottom, _cellSize); _right.SetPerpendiculars(_bottom, _top, _cellSize); _top.SetPerpendiculars(_right, _left, _cellSize); _bottom.SetPerpendiculars(_left, _right, _cellSize); }
public PerimeterCell(Perimeter p) { perimeter = p; cell = null; }
private static bool CheckEdgeZ(Vector3 from, Vector3 to, Perimeter edgeZ, Perimeter edgeMinX, Perimeter edgeMaxX, out Vector3 crossingPoint) { if ((from.z < edgeZ.edge && to.z < edgeZ.edge) || (from.z > edgeZ.edge && to.z > edgeZ.edge) || (from.x < edgeMinX.edge && to.x < edgeMinX.edge) || (from.x > edgeMaxX.edge && to.x > edgeMaxX.edge)) { crossingPoint = Vector3.zero; return false; } var heading = to - from; var dzmin = edgeZ.edge - from.z; crossingPoint = new Vector3 { x = from.x + ((heading.x / heading.z) * dzmin), z = edgeZ.edgeMid }; return true; }
private static bool CheckEdgeX(Vector3 from, Vector3 to, Perimeter edgeX, Perimeter edgeMinZ, Perimeter edgeMaxZ, out Vector3 crossingPoint) { if ((from.x < edgeX.edge && to.x < edgeX.edge) || (from.x > edgeX.edge && to.x > edgeX.edge) || (from.z < edgeMinZ.edge && to.z < edgeMinZ.edge) || (from.z > edgeMaxZ.edge && to.z > edgeMaxZ.edge)) { crossingPoint = Vector3.zero; return false; } var heading = to - from; var dxmin = edgeX.edge - from.x; crossingPoint = new Vector3 { x = edgeX.edgeMid, z = from.z + ((heading.z / heading.x) * dxmin) }; return true; }