mirror of
https://github.com/meteoinfo/MeteoInfo.git
synced 2025-12-08 20:36:05 +00:00
update Model class to normalize scale model data
This commit is contained in:
parent
fe7ee7345c
commit
c4002fa10c
@ -1,6 +1,11 @@
|
||||
package org.meteoinfo.chart.graphic;
|
||||
|
||||
import org.joml.Vector3f;
|
||||
import org.meteoinfo.chart.AspectType;
|
||||
import org.meteoinfo.chart.jogl.Transform;
|
||||
import org.meteoinfo.ndarray.Array;
|
||||
import org.meteoinfo.ndarray.math.ArrayMath;
|
||||
import org.meteoinfo.ndarray.math.ArrayUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -153,4 +158,49 @@ public class Model extends TriMeshGraphic {
|
||||
protected void buildTriMeshGraphic() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set triangles
|
||||
* @param faceIndices The triangle face indices
|
||||
* @param x X coordinate array
|
||||
* @param y Y coordinate array
|
||||
* @param z Z coordinate array
|
||||
*/
|
||||
public void setTriangles(Array faceIndices, Array x, Array y, Array z) {
|
||||
logger.info("Start set triangles...");
|
||||
|
||||
x = x.copyIfView();
|
||||
y = y.copyIfView();
|
||||
z = z.copyIfView();
|
||||
faceIndices = faceIndices.copyIfView();
|
||||
|
||||
this.vertexIndices = (int[]) faceIndices.getStorage();
|
||||
|
||||
float xMin = ArrayMath.min(x).floatValue();
|
||||
float xMax = ArrayMath.max(x).floatValue();
|
||||
float yMin = ArrayMath.min(y).floatValue();
|
||||
float yMax = ArrayMath.max(y).floatValue();
|
||||
float zMin = ArrayMath.min(z).floatValue();
|
||||
float zMax = ArrayMath.max(z).floatValue();
|
||||
float range = Math.max(xMax - xMin, yMax - yMin);
|
||||
range = (zMax - zMin) > range ? (zMax - zMin) : range;
|
||||
float min = -range / 2;
|
||||
float max = range / 2;
|
||||
Transform transform = new Transform();
|
||||
transform.setExtent(min, max, min, max, min, max);
|
||||
|
||||
int n = x.getShape()[0];
|
||||
this.vertexPosition = new float[n * 3];
|
||||
int idx = 0;
|
||||
for (int i = 0; i < n; i++) {
|
||||
vertexPosition[idx] = transform.transform_x(x.getFloat(i));
|
||||
vertexPosition[idx + 1] = transform.transform_y(y.getFloat(i));
|
||||
vertexPosition[idx + 2] = transform.transform_z(z.getFloat(i));
|
||||
idx += 3;
|
||||
}
|
||||
|
||||
updateExtent();
|
||||
|
||||
logger.info("Set triangles finished!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ import java.util.logging.Logger;
|
||||
|
||||
public class TriMeshGraphic extends GraphicCollection3D {
|
||||
|
||||
private Logger logger = Logger.getLogger("TriMeshGraphic");
|
||||
protected Logger logger = Logger.getLogger("TriMeshGraphic");
|
||||
protected float[] vertexPosition;
|
||||
protected float[] vertexValue;
|
||||
protected float[] vertexColor;
|
||||
|
||||
@ -1,32 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<MeteoInfo File="milconfig.xml" Type="configurefile">
|
||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\io\netcdf">
|
||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\io\grib">
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\array"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\mesh"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\test"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\calc"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\web"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\burf"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\cuace_dust\py\plot"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\model"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\plot"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\web"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\grib"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\netcdf"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\grib"/>
|
||||
</Path>
|
||||
<File>
|
||||
<OpenedFiles>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\model\obj_airplane_line.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\model\obj_airplane_model.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\plot\air_path_model.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\io\netcdf\test_readnc_2.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\io\grib\test_read_ec_s2s.py"/>
|
||||
</OpenedFiles>
|
||||
<RecentFiles>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\model\obj_airplane_line.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\model\obj_airplane_model.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\plot\air_path_model.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\io\netcdf\test_readnc_2.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\io\grib\test_read_ec_s2s.py"/>
|
||||
</RecentFiles>
|
||||
</File>
|
||||
<Font>
|
||||
@ -34,5 +36,5 @@
|
||||
</Font>
|
||||
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
|
||||
<Figure DoubleBuffering="true"/>
|
||||
<Startup MainFormLocation="-7,-7" MainFormSize="1293,685"/>
|
||||
<Startup MainFormLocation="-7,0" MainFormSize="1361,777"/>
|
||||
</MeteoInfo>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user