private List <JSIAppPolyline3D> calcProjectedPtCurve3Ds( List <JSIAppPolyline2D> ptCurve2Ds, Plane cardPlane, Camera camera) { List <JSIAppPolyline3D> ptCurve3Ds = new List <JSIAppPolyline3D>(); foreach (JSIAppPolyline2D ptCurve2D in ptCurve2Ds) { JSIPolyline2D polyline2D = (JSIPolyline2D)ptCurve2D.getGeom2D(); List <Vector3> pt3Ds = new List <Vector3>(); foreach (Vector2 pt2D in polyline2D.getPts()) { Ray ptRay = camera.ScreenPointToRay(pt2D); float ptDist = float.NaN; cardPlane.Raycast(ptRay, out ptDist); Vector3 pt3D = ptRay.GetPoint(ptDist); pt3Ds.Add(pt3D); } JSIAppPolyline3D ptCurve3D = new JSIAppPolyline3D( "PtCurve3D", pt3Ds, 0.01f, Color.black); ptCurve3Ds.Add(ptCurve3D); } return(ptCurve3Ds); }
private List <JSIAppPolyline3D> createLocalPtCurve3Ds( List <JSIAppPolyline3D> ptCurve3Ds, Vector3 cardCtr, Vector3 cardXDir, Vector3 cardYDir, Vector3 cardZDir) { List <JSIAppPolyline3D> localPtCurve3Ds = new List <JSIAppPolyline3D>(); foreach (JSIAppPolyline3D ptCurve3D in ptCurve3Ds) { JSIPolyline3D polyline3D = (JSIPolyline3D)ptCurve3D.getGeom3D(); List <Vector3> localPt3Ds = new List <Vector3>(); foreach (Vector3 pt3D in polyline3D.getPts()) { Vector3 dif = pt3D - cardCtr; float x = Vector3.Dot(dif, cardXDir); float y = Vector3.Dot(dif, cardYDir); float z = Vector3.Dot(dif, cardZDir); Vector3 localPt3D = new Vector3(x, y, z); localPt3Ds.Add(localPt3D); } JSIAppPolyline3D localPtCurve3D = new JSIAppPolyline3D( "PtCurve3D", localPt3Ds, 0.01f, Color.black); localPtCurve3Ds.Add(localPtCurve3D); } return(localPtCurve3Ds); }
//constructor public JSIGrid() : base("Grid") { //x-direction lines for (int i = 0; i < JSIGrid.NUM_X_GRID_LINES; i++) { List <Vector3> pts = new List <Vector3>(); pts.Add(new Vector3( -JSIGrid.LENGTH / 2.0f, 0.0f, (float)i - 2.0f)); pts.Add(new Vector3( +JSIGrid.LENGTH / 2.0f, 0.0f, (float)i - 2.0f)); JSIAppPolyline3D line = new JSIAppPolyline3D("XGridLine", pts, JSIGrid.WIDTH, JSIGrid.COLOR); this.addChild(line); } //z-direction lines for (int i = 0; i < JSIGrid.NUM_Z_GRID_LINES; i++) { List <Vector3> pts = new List <Vector3>(); pts.Add(new Vector3( (float)i - 2.0f, 0.0f, -JSIGrid.LENGTH / 2.0f)); pts.Add(new Vector3( (float)i - 2.0f, 0.0f, +JSIGrid.LENGTH / 2.0f)); JSIAppPolyline3D line = new JSIAppPolyline3D("ZGridLine", pts, JSIGrid.WIDTH, JSIGrid.COLOR); this.addChild(line); } }