NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
> > hoxmap.setRange(-1.0, 1.0); > reymap.setRange(-1.0, 1.0); > heightmap.setRange(-1.0, 1.0); > > This says scale -1.0 to -1.0 and 1.0 to 1.0, so the scaling > is the identity. That is, no scaling. Now it gets confusing, I tried the above setting and I have no scaling any longer, but then another problem arised: x,y amd z are the Java3D Axes these are the following values I have to assigne them, that they are displayed correctly in my reality: x -> my "Rechtswert" = "rightvalue" = somewhere around 340000m y -> my height somewhere around 179m -z -> my "Hochwert" = "heightvalue" = somewhere around 540000m thats because, when I want to display terrain, it should look like in reality, so x is going to the right of my screen, y is going inside the screen, and the height z is going up. So I tried to change the coordinate-values of y and z the following way: Geometry geom = shape3d.getGeometry(); if (geom instanceof GeometryArray) { System.out.println("GeometryArray"); GeometryArray geomarr = (GeometryArray) geom; Point3d[] point3d = new Point3d[18]; for (int i=0;i<point3d.length;i++) { point3d[i]= new Point3d(); } geomarr.getCoordinates(0,point3d); double help; for (int i=0;i<point3d.length;i++) { System.out.println("ausgabe"); help = point3d[i].y; point3d[i].y=point3d[i].z; point3d[i].z=-help; System.out.println(point3d[i].x); System.out.println(point3d[i].y); System.out.println(point3d[i].z); } geomarr.setCoordinates(0,point3d); System.out.println("ulx "+ulx+"lrx "+lrx+"lry "+lry+"uly "+uly+"lz "+lz+"uz "+uz); } Shape3D terrain = new Shape3D(); But unfortunately there must be a mistake somewhere, because the Shape3D I am seeing after this, looks somewhat odd and not right triangulated. Is it possible to change the coordinates that way? I thought there would be no difference for the actual Shape3D, because I do have to do the 2-D-Triangulation with the 540000(x from Gauss-Krueger-Coordinates Geodesy) and 340000(y from Gauss-Krueger-Coordinates Geodesy) values. And after this just assigning the right height-values to the triangulation. Changing the Assignment of the axes for the coordinates afterwards should not influence the triangulation, as I thought. Maybe I am wrong? RealType x = RealType.getRealType("x"); RealType y = RealType.getRealType("y"); RealType height = RealType.getRealType("height"); try { RealTupleType xy = new RealTupleType(x, y); FunctionType terrain_type = new FunctionType(xy, height); //Irregular2DSet set = new Irregular2DSet(xy, new float[][] {hox, rey}); Irregular2DSet set = new Irregular2DSet(xy, new float[][] {rey, hox}); FlatField terrain = new FlatField(terrain_type, set); terrain.setSamples(new float[][] {heights}); Do I have to change the ScalaMap Assignemt? I am not sure! display = new DisplayImplJ3D("display1"); ScalarMap hoxmap = new ScalarMap(x, Display.XAxis); ScalarMap reymap = new ScalarMap(y, Display.YAxis); ScalarMap heightmap = new ScalarMap(height, Display.ZAxis); display.addMap(hoxmap); display.addMap(reymap); display.addMap(heightmap); hoxmap.setRange(-1.0, 1.0); reymap.setRange(-1.0, 1.0); heightmap.setRange(-1.0, 1.0); DataReferenceImpl data_ref = new DataReferenceImpl("data_ref"); data_ref.setData( terrain ); renderer = new DefaultRendererJ3D(); display.addReferences(renderer,data_ref); DisplayListener listener = new TerrainListener(renderer,gisTerm); display.addDisplayListener(listener); } catch (VisADException ve) { System.out.println("VisAd TupleType Exception"); } catch (RemoteException re) { System.out.println("RemoteExcpetion"); } > > It has occurred to me that there is another way to do what > you want: > > RealType x = RealType.getRealType("x"); > RealType y = RealType.getRealType("y"); > RealType height = RealType.getRealType("height"); > try { > RealTupleType xy = new RealTupleType(x, y); > Irregular2DSet set = new Irregular2DSet(xy, new float[][] {hox, rey}); > float[][] samples = {hox, rey, heights}; > RealTupleType xyh = new RealTupleType(x, y, height); > Irregular3DSet new_set = (Irregular3DSet) > set.makeSpatial(xyh, samples); > VisADTriangleStripArray array = new_set.make2DGeometry(null, false); > } I will try this as well, but I think I will run into the same problem? > > This is essentially what happens inside the DisplayImplJ3D. > I haven't tried this so can't be sure it will work, but > thought I'd pass it on. Again, many many thanks for your help, Desiree >
visad
archives: