mirror of
https://github.com/meteoinfo/MeteoInfo.git
synced 2025-12-08 20:36:05 +00:00
add Sphere graphic and update PointRender
This commit is contained in:
parent
47633c1f72
commit
02ddcc2d2d
10
.idea/jarRepositories.xml
generated
10
.idea/jarRepositories.xml
generated
@ -41,16 +41,16 @@
|
||||
<option name="name" value="boundlessgeo" />
|
||||
<option name="url" value="http://repo.boundlessgeo.com/main/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="sonatype-nexus-snapshots" />
|
||||
<option name="name" value="Sonatype Nexus Snapshots" />
|
||||
<option name="url" value="https://oss.sonatype.org/content/repositories/snapshots" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="freehep" />
|
||||
<option name="name" value="freehep" />
|
||||
<option name="url" value="https://java.freehep.org/maven2/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="sonatype-nexus-snapshots" />
|
||||
<option name="name" value="Sonatype Nexus Snapshots" />
|
||||
<option name="url" value="https://oss.sonatype.org/content/repositories/snapshots" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="boundless" />
|
||||
<option name="name" value="boundlessgeo" />
|
||||
|
||||
@ -188,7 +188,7 @@
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<!--<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
@ -204,7 +204,7 @@
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugin>-->
|
||||
<plugin>
|
||||
<inherited>true</inherited>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
||||
@ -278,8 +278,7 @@ public class Cylinder {
|
||||
* @param y Y coordinate
|
||||
* @param z Z coordinate
|
||||
*/
|
||||
void addVertex(float x, float y, float z)
|
||||
{
|
||||
void addVertex(float x, float y, float z) {
|
||||
vertices.add(new Vector3f(x, y, z));
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,530 @@
|
||||
package org.meteoinfo.chart.graphic.sphere;
|
||||
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector3f;
|
||||
import org.meteoinfo.chart.graphic.cylinder.Cylinder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Sphere {
|
||||
private float radius;
|
||||
private int sectorCount; // longitude, # of slices
|
||||
private int stackCount; // latitude, # of stacks
|
||||
private boolean smooth;
|
||||
private List<Vector3f> vertices;
|
||||
private List<Vector3f> normals;
|
||||
private List<Integer> indices;
|
||||
private List<Integer> lineIndices;
|
||||
private List<Vector2f> texCoords;
|
||||
private List<Vector3f> interleavedVertices;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param radius The sphere radius
|
||||
* @param sectorCount The sector count
|
||||
* @param stackCount The stack count
|
||||
* @param smooth Whether smooth
|
||||
*/
|
||||
public Sphere(float radius, int sectorCount, int stackCount, boolean smooth) {
|
||||
this.radius = radius;
|
||||
this.sectorCount = sectorCount;
|
||||
this.stackCount = stackCount;
|
||||
this.smooth = smooth;
|
||||
|
||||
this.updateVertices();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param radius The sphere radius
|
||||
* @param sectorCount The sector count
|
||||
* @param stackCount The stack count
|
||||
*/
|
||||
public Sphere(float radius, int sectorCount, int stackCount) {
|
||||
this(radius, sectorCount, stackCount, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update vertices
|
||||
*/
|
||||
public void updateVertices() {
|
||||
if (smooth) {
|
||||
buildVerticesSmooth();
|
||||
} else {
|
||||
buildVerticesFlat();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get radius
|
||||
* @return Radius
|
||||
*/
|
||||
public float getRadius() {
|
||||
return this.radius;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set radius
|
||||
* @param value Radius
|
||||
*/
|
||||
public void setRadius(float value) {
|
||||
if (this.radius != value) {
|
||||
this.radius = value;
|
||||
updateVertices();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sector count
|
||||
* @return Sector count
|
||||
*/
|
||||
public int getSectorCount() {
|
||||
return sectorCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set sector count
|
||||
* @param value Sector count
|
||||
*/
|
||||
public void setSectorCount(int value) {
|
||||
if (this.sectorCount != value) {
|
||||
this.sectorCount = value;
|
||||
updateVertices();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get stack count
|
||||
* @return Stack count
|
||||
*/
|
||||
public int getStackCount() {
|
||||
return stackCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set stack count
|
||||
* @param value stack count
|
||||
*/
|
||||
public void setStackCount(int value) {
|
||||
if (this.stackCount != value) {
|
||||
this.stackCount = value;
|
||||
updateVertices();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get smooth
|
||||
* @return Smooth
|
||||
*/
|
||||
public boolean isSmooth() {
|
||||
return smooth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set smooth
|
||||
* @param value Smooth
|
||||
*/
|
||||
public void setSmooth(boolean value) {
|
||||
if (this.smooth != value) {
|
||||
this.smooth = value;
|
||||
updateVertices();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get vertices
|
||||
* @return Vertices
|
||||
*/
|
||||
public List<Vector3f> getVertices() {
|
||||
return vertices;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get normals
|
||||
* @return Normals
|
||||
*/
|
||||
public List<Vector3f> getNormals() {
|
||||
return normals;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get texture coordinates
|
||||
* @return Texture coordinates
|
||||
*/
|
||||
public List<Vector2f> getTexCoords() {
|
||||
return texCoords;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get indices
|
||||
* @return Indices
|
||||
*/
|
||||
public List<Integer> getIndices() {
|
||||
return indices;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get interleaved vertices
|
||||
* @return Interleaved vertices
|
||||
*/
|
||||
public List<Vector3f> getInterleavedVertices() {
|
||||
return interleavedVertices;
|
||||
}
|
||||
|
||||
void clearArrays() {
|
||||
this.vertices = new ArrayList<>();
|
||||
this.normals = new ArrayList<>();
|
||||
this.indices = new ArrayList<>();
|
||||
this.lineIndices = new ArrayList<>();
|
||||
this.texCoords = new ArrayList<>();
|
||||
}
|
||||
|
||||
class Vertex {
|
||||
public float x, y, z, s, t;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add single vertex to array
|
||||
* @param x X coordinate
|
||||
* @param y Y coordinate
|
||||
* @param z Z coordinate
|
||||
*/
|
||||
void addVertex(float x, float y, float z) {
|
||||
vertices.add(new Vector3f(x, y, z));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add single normal to array
|
||||
* @param nx Normal x
|
||||
* @param ny Normal y
|
||||
* @param nz Normal z
|
||||
*/
|
||||
void addNormal(float nx, float ny, float nz)
|
||||
{
|
||||
normals.add(new Vector3f(nx, ny, nz));
|
||||
}
|
||||
|
||||
void addNormal(Vector3f n) {
|
||||
normals.add(n);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add single texture coord to array
|
||||
* @param s
|
||||
* @param t
|
||||
*/
|
||||
void addTexCoord(float s, float t)
|
||||
{
|
||||
texCoords.add(new Vector2f(s, t));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add 3 indices to array
|
||||
* @param i1 Index 1
|
||||
* @param i2 Index 2
|
||||
* @param i3 Index 3
|
||||
*/
|
||||
void addIndices(int i1, int i2, int i3) {
|
||||
indices.add(i1);
|
||||
indices.add(i2);
|
||||
indices.add(i3);
|
||||
}
|
||||
|
||||
/**
|
||||
* generate interleaved vertices: V/N/T
|
||||
* stride must be 32 bytes
|
||||
*/
|
||||
void buildInterleavedVertices()
|
||||
{
|
||||
interleavedVertices = new ArrayList<>();
|
||||
|
||||
int i, j;
|
||||
int count = vertices.size();
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
interleavedVertices.add(vertices.get(i));
|
||||
|
||||
interleavedVertices.add(normals.get(i));
|
||||
|
||||
//interleavedVertices.add(texCoords.get(j));
|
||||
//interleavedVertices.add(texCoords.get(j+1));
|
||||
}
|
||||
}
|
||||
|
||||
void buildVerticesSmooth() {
|
||||
|
||||
// clear memory of prev arrays
|
||||
clearArrays();
|
||||
|
||||
float x, y, z, xy; // vertex position
|
||||
float nx, ny, nz, lengthInv = 1.0f / radius; // normal
|
||||
float s, t; // texCoord
|
||||
|
||||
float sectorStep = 2 * (float) Math.PI / sectorCount;
|
||||
float stackStep = (float) Math.PI / stackCount;
|
||||
float sectorAngle, stackAngle;
|
||||
|
||||
for(int i = 0; i <= stackCount; ++i)
|
||||
{
|
||||
stackAngle = (float) Math.PI / 2 - i * stackStep; // starting from pi/2 to -pi/2
|
||||
xy = radius * (float) Math.cos(stackAngle); // r * cos(u)
|
||||
z = radius * (float) Math.sin(stackAngle); // r * sin(u)
|
||||
|
||||
// add (sectorCount+1) vertices per stack
|
||||
// the first and last vertices have same position and normal, but different tex coords
|
||||
for(int j = 0; j <= sectorCount; ++j)
|
||||
{
|
||||
sectorAngle = j * sectorStep; // starting from 0 to 2pi
|
||||
|
||||
// vertex position
|
||||
x = xy * (float) Math.cos(sectorAngle); // r * cos(u) * cos(v)
|
||||
y = xy * (float) Math.sin(sectorAngle); // r * cos(u) * sin(v)
|
||||
addVertex(x, y, z);
|
||||
|
||||
// normalized vertex normal
|
||||
nx = x * lengthInv;
|
||||
ny = y * lengthInv;
|
||||
nz = z * lengthInv;
|
||||
addNormal(nx, ny, nz);
|
||||
|
||||
// vertex tex coord between [0, 1]
|
||||
s = (float)j / sectorCount;
|
||||
t = (float)i / stackCount;
|
||||
addTexCoord(s, t);
|
||||
}
|
||||
}
|
||||
|
||||
// indices
|
||||
// k1--k1+1
|
||||
// | / |
|
||||
// | / |
|
||||
// k2--k2+1
|
||||
int k1, k2;
|
||||
for(int i = 0; i < stackCount; ++i)
|
||||
{
|
||||
k1 = i * (sectorCount + 1); // beginning of current stack
|
||||
k2 = k1 + sectorCount + 1; // beginning of next stack
|
||||
|
||||
for(int j = 0; j < sectorCount; ++j, ++k1, ++k2)
|
||||
{
|
||||
// 2 triangles per sector excluding 1st and last stacks
|
||||
if(i != 0)
|
||||
{
|
||||
addIndices(k1, k2, k1+1); // k1---k2---k1+1
|
||||
}
|
||||
|
||||
if(i != (stackCount-1))
|
||||
{
|
||||
addIndices(k1+1, k2, k2+1); // k1+1---k2---k2+1
|
||||
}
|
||||
|
||||
// vertical lines for all stacks
|
||||
lineIndices.add(k1);
|
||||
lineIndices.add(k2);
|
||||
if(i != 0) // horizontal lines except 1st stack
|
||||
{
|
||||
lineIndices.add(k1);
|
||||
lineIndices.add(k1 + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// generate interleaved vertex array as well
|
||||
buildInterleavedVertices();
|
||||
}
|
||||
|
||||
void buildVerticesFlat() {
|
||||
// tmp vertex definition (x,y,z,s,t)
|
||||
List<Sphere.Vertex> tmpVertices = new ArrayList<>();
|
||||
|
||||
float sectorStep = 2 * (float) Math.PI / sectorCount;
|
||||
float stackStep = (float) Math.PI / stackCount;
|
||||
float sectorAngle, stackAngle;
|
||||
|
||||
// compute all vertices first, each vertex contains (x,y,z,s,t) except normal
|
||||
for(int i = 0; i <= stackCount; ++i)
|
||||
{
|
||||
stackAngle = (float) Math.PI / 2 - i * stackStep; // starting from pi/2 to -pi/2
|
||||
float xy = radius * (float) Math.cos(stackAngle); // r * cos(u)
|
||||
float z = radius * (float) Math.sin(stackAngle); // r * sin(u)
|
||||
|
||||
// add (sectorCount+1) vertices per stack
|
||||
// the first and last vertices have same position and normal, but different tex coords
|
||||
for(int j = 0; j <= sectorCount; ++j)
|
||||
{
|
||||
sectorAngle = j * sectorStep; // starting from 0 to 2pi
|
||||
|
||||
Vertex vertex = new Vertex();
|
||||
vertex.x = xy * (float) Math.cos(sectorAngle); // x = r * cos(u) * cos(v)
|
||||
vertex.y = xy * (float) Math.sin(sectorAngle); // y = r * cos(u) * sin(v)
|
||||
vertex.z = z; // z = r * sin(u)
|
||||
vertex.s = (float)j/sectorCount; // s
|
||||
vertex.t = (float)i/stackCount; // t
|
||||
tmpVertices.add(vertex);
|
||||
}
|
||||
}
|
||||
|
||||
// clear memory of prev arrays
|
||||
clearArrays();
|
||||
|
||||
Vertex v1, v2, v3, v4; // 4 vertex positions and tex coords
|
||||
float[] n; // 1 face normal
|
||||
|
||||
int i, j, k, vi1, vi2;
|
||||
int index = 0; // index for vertex
|
||||
for(i = 0; i < stackCount; ++i)
|
||||
{
|
||||
vi1 = i * (sectorCount + 1); // index of tmpVertices
|
||||
vi2 = (i + 1) * (sectorCount + 1);
|
||||
|
||||
for(j = 0; j < sectorCount; ++j, ++vi1, ++vi2)
|
||||
{
|
||||
// get 4 vertices per sector
|
||||
// v1--v3
|
||||
// | |
|
||||
// v2--v4
|
||||
v1 = tmpVertices.get(vi1);
|
||||
v2 = tmpVertices.get(vi2);
|
||||
v3 = tmpVertices.get(vi1 + 1);
|
||||
v4 = tmpVertices.get(vi2 + 1);
|
||||
|
||||
// if 1st stack and last stack, store only 1 triangle per sector
|
||||
// otherwise, store 2 triangles (quad) per sector
|
||||
if(i == 0) // a triangle for first stack ==========================
|
||||
{
|
||||
// put a triangle
|
||||
addVertex(v1.x, v1.y, v1.z);
|
||||
addVertex(v2.x, v2.y, v2.z);
|
||||
addVertex(v4.x, v4.y, v4.z);
|
||||
|
||||
// put tex coords of triangle
|
||||
addTexCoord(v1.s, v1.t);
|
||||
addTexCoord(v2.s, v2.t);
|
||||
addTexCoord(v4.s, v4.t);
|
||||
|
||||
// put normal
|
||||
n = computeFaceNormal(v1.x,v1.y,v1.z, v2.x,v2.y,v2.z, v4.x,v4.y,v4.z);
|
||||
for(k = 0; k < 3; ++k) // same normals for 3 vertices
|
||||
{
|
||||
addNormal(n[0], n[1], n[2]);
|
||||
}
|
||||
|
||||
// put indices of 1 triangle
|
||||
addIndices(index, index+1, index+2);
|
||||
|
||||
// indices for line (first stack requires only vertical line)
|
||||
lineIndices.add(index);
|
||||
lineIndices.add(index+1);
|
||||
|
||||
index += 3; // for next
|
||||
}
|
||||
else if(i == (stackCount-1)) // a triangle for last stack =========
|
||||
{
|
||||
// put a triangle
|
||||
addVertex(v1.x, v1.y, v1.z);
|
||||
addVertex(v2.x, v2.y, v2.z);
|
||||
addVertex(v3.x, v3.y, v3.z);
|
||||
|
||||
// put tex coords of triangle
|
||||
addTexCoord(v1.s, v1.t);
|
||||
addTexCoord(v2.s, v2.t);
|
||||
addTexCoord(v3.s, v3.t);
|
||||
|
||||
// put normal
|
||||
n = computeFaceNormal(v1.x,v1.y,v1.z, v2.x,v2.y,v2.z, v3.x,v3.y,v3.z);
|
||||
for(k = 0; k < 3; ++k) // same normals for 3 vertices
|
||||
{
|
||||
addNormal(n[0], n[1], n[2]);
|
||||
}
|
||||
|
||||
// put indices of 1 triangle
|
||||
addIndices(index, index+1, index+2);
|
||||
|
||||
// indices for lines (last stack requires both vert/hori lines)
|
||||
lineIndices.add(index);
|
||||
lineIndices.add(index+1);
|
||||
lineIndices.add(index);
|
||||
lineIndices.add(index+2);
|
||||
|
||||
index += 3; // for next
|
||||
}
|
||||
else // 2 triangles for others ====================================
|
||||
{
|
||||
// put quad vertices: v1-v2-v3-v4
|
||||
addVertex(v1.x, v1.y, v1.z);
|
||||
addVertex(v2.x, v2.y, v2.z);
|
||||
addVertex(v3.x, v3.y, v3.z);
|
||||
addVertex(v4.x, v4.y, v4.z);
|
||||
|
||||
// put tex coords of quad
|
||||
addTexCoord(v1.s, v1.t);
|
||||
addTexCoord(v2.s, v2.t);
|
||||
addTexCoord(v3.s, v3.t);
|
||||
addTexCoord(v4.s, v4.t);
|
||||
|
||||
// put normal
|
||||
n = computeFaceNormal(v1.x,v1.y,v1.z, v2.x,v2.y,v2.z, v3.x,v3.y,v3.z);
|
||||
for(k = 0; k < 4; ++k) // same normals for 4 vertices
|
||||
{
|
||||
addNormal(n[0], n[1], n[2]);
|
||||
}
|
||||
|
||||
// put indices of quad (2 triangles)
|
||||
addIndices(index, index+1, index+2);
|
||||
addIndices(index+2, index+1, index+3);
|
||||
|
||||
// indices for lines
|
||||
lineIndices.add(index);
|
||||
lineIndices.add(index+1);
|
||||
lineIndices.add(index);
|
||||
lineIndices.add(index+2);
|
||||
|
||||
index += 4; // for next
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// generate interleaved vertex array as well
|
||||
buildInterleavedVertices();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// return face normal of a triangle v1-v2-v3
|
||||
// if a triangle has no surface (normal length = 0), then return a zero vector
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
float[] computeFaceNormal(float x1, float y1, float z1, // v1
|
||||
float x2, float y2, float z2, // v2
|
||||
float x3, float y3, float z3) // v3
|
||||
{
|
||||
float EPSILON = 0.000001f;
|
||||
|
||||
float[] normal = new float[]{0.f, 0.f, 0.f}; // default return value (0,0,0)
|
||||
float nx, ny, nz;
|
||||
|
||||
// find 2 edge vectors: v1-v2, v1-v3
|
||||
float ex1 = x2 - x1;
|
||||
float ey1 = y2 - y1;
|
||||
float ez1 = z2 - z1;
|
||||
float ex2 = x3 - x1;
|
||||
float ey2 = y3 - y1;
|
||||
float ez2 = z3 - z1;
|
||||
|
||||
// cross product: e1 x e2
|
||||
nx = ey1 * ez2 - ez1 * ey2;
|
||||
ny = ez1 * ex2 - ex1 * ez2;
|
||||
nz = ex1 * ey2 - ey1 * ex2;
|
||||
|
||||
// normalize only if the length is > 0
|
||||
float length = (float) Math.sqrt(nx * nx + ny * ny + nz * nz);
|
||||
if(length > EPSILON) {
|
||||
// normalize
|
||||
float lengthInv = 1.0f / length;
|
||||
normal[0] = nx * lengthInv;
|
||||
normal[1] = ny * lengthInv;
|
||||
normal[2] = nz * lengthInv;
|
||||
}
|
||||
|
||||
return normal;
|
||||
}
|
||||
}
|
||||
@ -2501,9 +2501,9 @@ public class GLPlot extends Plot {
|
||||
if (isDraw) {
|
||||
switch (graphic.getGraphicN(0).getShape().getShapeType()) {
|
||||
case POINT_Z:
|
||||
if (((GraphicCollection3D) graphic).isSphere()) {
|
||||
this.drawSpheres(gl, graphic);
|
||||
} else {
|
||||
//if (((GraphicCollection3D) graphic).isSphere()) {
|
||||
// this.drawSpheres(gl, graphic);
|
||||
//} else {
|
||||
//this.drawPoints(gl, graphic);
|
||||
if (!this.renderMap.containsKey(graphic)) {
|
||||
renderMap.put(graphic, new PointRender(gl, (GraphicCollection3D) graphic));
|
||||
@ -2514,7 +2514,7 @@ public class GLPlot extends Plot {
|
||||
pointRender.setLighting(this.lighting);
|
||||
pointRender.updateMatrix();
|
||||
pointRender.draw();
|
||||
}
|
||||
//}
|
||||
break;
|
||||
case POLYLINE_Z:
|
||||
if (graphic.getGraphicN(0).getShape() instanceof PipeShape) {
|
||||
|
||||
@ -185,9 +185,7 @@ public class LineRender extends JOGLGraphicRender {
|
||||
vertexPositionList.add(matrix.mul(v));
|
||||
}
|
||||
List<Vector3f> normals = cylinder.getNormals();
|
||||
for (Vector3f v : normals) {
|
||||
vertexNormalList.add(matrix.mul(v));
|
||||
}
|
||||
vertexNormalList.addAll(normals);
|
||||
float[] color = slb.getColor().getRGBComponents(null);
|
||||
for (int j = 0; j < n; j++) {
|
||||
vertexColorList.add(new Vector4f(color));
|
||||
|
||||
@ -3,7 +3,10 @@ package org.meteoinfo.chart.render.jogl;
|
||||
import com.jogamp.opengl.GL;
|
||||
import com.jogamp.opengl.GL2;
|
||||
import com.jogamp.opengl.util.GLBuffers;
|
||||
import org.joml.Vector3f;
|
||||
import org.joml.Vector4f;
|
||||
import org.meteoinfo.chart.graphic.GraphicCollection3D;
|
||||
import org.meteoinfo.chart.graphic.sphere.Sphere;
|
||||
import org.meteoinfo.chart.jogl.Program;
|
||||
import org.meteoinfo.chart.jogl.Transform;
|
||||
import org.meteoinfo.chart.jogl.Utils;
|
||||
@ -13,6 +16,7 @@ import org.meteoinfo.geometry.shape.PointZ;
|
||||
import org.meteoinfo.geometry.shape.PointZShape;
|
||||
import org.meteoinfo.geometry.shape.Polyline;
|
||||
import org.meteoinfo.geometry.shape.PolylineZShape;
|
||||
import org.meteoinfo.math.Matrix4f;
|
||||
|
||||
import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
@ -24,12 +28,17 @@ public class PointRender extends JOGLGraphicRender {
|
||||
private GraphicCollection3D graphics;
|
||||
private IntBuffer vbo;
|
||||
private Program program;
|
||||
private int vertexNum;
|
||||
private int pointNum;
|
||||
private int sizePosition;
|
||||
private int sizeColor;
|
||||
private int sizeNormal;
|
||||
private float[] vertexColor;
|
||||
private float pointSize;
|
||||
private boolean sphere;
|
||||
private float sphereScale = 0.005f;
|
||||
private float[] vertexPosition;
|
||||
private float[] vertexNormal;
|
||||
private float[] vertexColor;
|
||||
private int[] vertexIndices;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@ -59,10 +68,20 @@ public class PointRender extends JOGLGraphicRender {
|
||||
this(gl);
|
||||
|
||||
this.graphics = pointGraphics;
|
||||
this.vertexNum = pointGraphics.getNumGraphics();
|
||||
this.sphere = this.graphics.isSphere();
|
||||
this.pointNum = pointGraphics.getNumGraphics();
|
||||
PointBreak pb = (PointBreak) this.graphics.getGraphicN(0).getLegend();
|
||||
this.pointSize = pb.getSize();
|
||||
this.updateVertexColor();
|
||||
//this.updateVertex();
|
||||
}
|
||||
|
||||
void updateVertex() {
|
||||
if (this.sphere) {
|
||||
this.updateSphereVertex();
|
||||
} else {
|
||||
this.updateVertexPosition();
|
||||
this.updateVertexColor();
|
||||
}
|
||||
}
|
||||
|
||||
void compileShaders() throws Exception {
|
||||
@ -76,7 +95,7 @@ public class PointRender extends JOGLGraphicRender {
|
||||
}
|
||||
|
||||
private void updateVertexColor() {
|
||||
this.vertexColor = new float[this.vertexNum * 4];
|
||||
this.vertexColor = new float[this.pointNum * 4];
|
||||
int i = 0;
|
||||
float[] color;
|
||||
for (Graphic graphic : this.graphics.getGraphics()) {
|
||||
@ -87,19 +106,110 @@ public class PointRender extends JOGLGraphicRender {
|
||||
}
|
||||
}
|
||||
|
||||
private float[] getVertexPosition() {
|
||||
float[] vertexData = new float[this.vertexNum * 3];
|
||||
int i = 0;
|
||||
private void updateVertexPosition() {
|
||||
if (this.sphere) {
|
||||
this.updateSphereVertexPosition();
|
||||
} else {
|
||||
this.vertexPosition = new float[this.pointNum * 3];
|
||||
int i = 0;
|
||||
for (Graphic graphic : this.graphics.getGraphics()) {
|
||||
PointZShape shape = (PointZShape) graphic.getShape();
|
||||
PointZ p = (PointZ) shape.getPoint();
|
||||
vertexPosition[i] = transform.transform_x((float) p.X);
|
||||
vertexPosition[i + 1] = transform.transform_y((float) p.Y);
|
||||
vertexPosition[i + 2] = transform.transform_z((float) p.Z);
|
||||
i += 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSphereVertex() {
|
||||
List<Vector3f> vertexPositionList = new ArrayList<>();
|
||||
List<Vector3f> vertexNormalList = new ArrayList<>();
|
||||
List<Vector4f> vertexColorList = new ArrayList<>();
|
||||
List<Integer> vertexIndexList = new ArrayList<>();
|
||||
Vector3f vp;
|
||||
for (Graphic graphic : this.graphics.getGraphics()) {
|
||||
PointZShape shape = (PointZShape) graphic.getShape();
|
||||
PointZ p = (PointZ) shape.getPoint();
|
||||
vertexData[i] = transform.transform_x((float) p.X);
|
||||
vertexData[i + 1] = transform.transform_y((float) p.Y);
|
||||
vertexData[i + 2] = transform.transform_z((float) p.Z);
|
||||
i += 3;
|
||||
PointBreak pb = (PointBreak) graphic.getLegend();
|
||||
Sphere sphere = new Sphere(pb.getSize() * sphereScale * dpiScale, 36, 18);
|
||||
vp = transform.transform((float) p.X, (float) p.Y, (float) p.Z);
|
||||
Matrix4f matrix = new Matrix4f();
|
||||
matrix.translate(vp);
|
||||
List<Vector3f> vertices = sphere.getVertices();
|
||||
int n = vertices.size();
|
||||
int nAdded = vertexPositionList.size();
|
||||
for (Vector3f v : vertices) {
|
||||
vertexPositionList.add(matrix.mul(v));
|
||||
}
|
||||
List<Vector3f> normals = sphere.getNormals();
|
||||
vertexNormalList.addAll(normals);
|
||||
float[] color = pb.getColor().getRGBComponents(null);
|
||||
for (int j = 0; j < n; j++) {
|
||||
vertexColorList.add(new Vector4f(color));
|
||||
}
|
||||
if (nAdded == 0) {
|
||||
vertexIndexList.addAll(sphere.getIndices());
|
||||
} else {
|
||||
for (int idx : sphere.getIndices()) {
|
||||
vertexIndexList.add(idx + nAdded);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vertexData;
|
||||
int n = vertexPositionList.size();
|
||||
this.vertexPosition = new float[n * 3];
|
||||
this.vertexNormal = new float[n * 3];
|
||||
this.vertexColor = new float[n * 4];
|
||||
Vector3f v;
|
||||
Vector4f v4;
|
||||
for (int i = 0, j = 0, k = 0; i < n; i++, j+=3, k+=4) {
|
||||
v = vertexPositionList.get(i);
|
||||
vertexPosition[j] = v.x;
|
||||
vertexPosition[j + 1] = v.y;
|
||||
vertexPosition[j + 2] = v.z;
|
||||
v = vertexNormalList.get(i);
|
||||
vertexNormal[j] = v.x;
|
||||
vertexNormal[j + 1] = v.y;
|
||||
vertexNormal[j + 2] = v.z;
|
||||
v4 = vertexColorList.get(i);
|
||||
vertexColor[k] = v4.x;
|
||||
vertexColor[k + 1] = v4.y;
|
||||
vertexColor[k + 2] = v4.z;
|
||||
vertexColor[k + 3] = v4.w;
|
||||
}
|
||||
vertexIndices = vertexIndexList.stream().mapToInt(Integer::intValue).toArray();
|
||||
}
|
||||
|
||||
private void updateSphereVertexPosition() {
|
||||
List<Vector3f> vertexPositionList = new ArrayList<>();
|
||||
Vector3f vp;
|
||||
for (Graphic graphic : this.graphics.getGraphics()) {
|
||||
PointZShape shape = (PointZShape) graphic.getShape();
|
||||
PointZ p = (PointZ) shape.getPoint();
|
||||
PointBreak pb = (PointBreak) graphic.getLegend();
|
||||
Sphere sphere = new Sphere(pb.getSize() * sphereScale * dpiScale, 36, 18);
|
||||
vp = transform.transform((float) p.X, (float) p.Y, (float) p.Z);
|
||||
Matrix4f matrix = new Matrix4f();
|
||||
matrix.translate(vp);
|
||||
List<Vector3f> vertices = sphere.getVertices();
|
||||
int n = vertices.size();
|
||||
int nAdded = vertexPositionList.size();
|
||||
for (Vector3f v : vertices) {
|
||||
vertexPositionList.add(matrix.mul(v));
|
||||
}
|
||||
}
|
||||
|
||||
int n = vertexPositionList.size();
|
||||
this.vertexPosition = new float[n * 3];
|
||||
Vector3f v;
|
||||
for (int i = 0, j = 0, k = 0; i < n; i++, j+=3, k+=4) {
|
||||
v = vertexPositionList.get(i);
|
||||
vertexPosition[j] = v.x;
|
||||
vertexPosition[j + 1] = v.y;
|
||||
vertexPosition[j + 2] = v.z;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -111,20 +221,47 @@ public class PointRender extends JOGLGraphicRender {
|
||||
super.setTransform((Transform) transform.clone());
|
||||
|
||||
if (updateBuffer) {
|
||||
float[] vertexData = this.getVertexPosition();
|
||||
FloatBuffer vertexBuffer = GLBuffers.newDirectFloatBuffer(vertexData);
|
||||
if (this.vertexPosition == null) {
|
||||
this.updateVertex();
|
||||
} else {
|
||||
//this.updateVertex();
|
||||
this.updateVertexPosition();
|
||||
}
|
||||
FloatBuffer vertexBuffer = GLBuffers.newDirectFloatBuffer(this.vertexPosition);
|
||||
sizePosition = vertexBuffer.capacity() * Float.BYTES;
|
||||
|
||||
FloatBuffer colorBuffer = GLBuffers.newDirectFloatBuffer(vertexColor);
|
||||
sizeColor = colorBuffer.capacity() * Float.BYTES;
|
||||
int totalSize = sizePosition + sizeColor;
|
||||
|
||||
gl.glGenBuffers(1, vbo);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo.get(0));
|
||||
gl.glBufferData(GL.GL_ARRAY_BUFFER, totalSize, null, GL.GL_STATIC_DRAW);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, 0, sizePosition, vertexBuffer);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, sizePosition, sizeColor, colorBuffer);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
if (this.sphere) {
|
||||
FloatBuffer normalBuffer = GLBuffers.newDirectFloatBuffer(vertexNormal);
|
||||
sizeNormal = normalBuffer.capacity() * Float.BYTES;
|
||||
|
||||
int totalSize = sizePosition + sizeColor + sizeNormal;
|
||||
|
||||
vbo = GLBuffers.newDirectIntBuffer(2);
|
||||
gl.glGenBuffers(2, vbo);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo.get(0));
|
||||
gl.glBufferData(GL.GL_ARRAY_BUFFER, totalSize, null, GL.GL_STATIC_DRAW);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, 0, sizePosition, vertexBuffer);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, sizePosition, sizeColor, colorBuffer);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, sizePosition + sizeColor, sizeNormal, normalBuffer);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
|
||||
IntBuffer indexBuffer = GLBuffers.newDirectIntBuffer(this.vertexIndices);
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, vbo.get(1));
|
||||
gl.glBufferData(GL.GL_ELEMENT_ARRAY_BUFFER, indexBuffer.capacity() * Integer.BYTES, indexBuffer, GL.GL_STATIC_DRAW);
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
} else {
|
||||
int totalSize = sizePosition + sizeColor;
|
||||
|
||||
gl.glGenBuffers(1, vbo);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo.get(0));
|
||||
gl.glBufferData(GL.GL_ARRAY_BUFFER, totalSize, null, GL.GL_STATIC_DRAW);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, 0, sizePosition, vertexBuffer);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, sizePosition, sizeColor, colorBuffer);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,22 +284,38 @@ public class PointRender extends JOGLGraphicRender {
|
||||
gl.glVertexPointer(3, GL.GL_FLOAT, 0, 0);
|
||||
gl.glEnableClientState(GL2.GL_COLOR_ARRAY);
|
||||
gl.glColorPointer(4, GL.GL_FLOAT, 0, sizePosition);
|
||||
if (this.sphere) {
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, vbo.get(1));
|
||||
|
||||
boolean lightEnabled = this.lighting.isEnable();
|
||||
if (lightEnabled) {
|
||||
this.lighting.stop(gl);
|
||||
gl.glEnableClientState(GL2.GL_NORMAL_ARRAY);
|
||||
gl.glNormalPointer(GL.GL_FLOAT, 0, sizePosition + sizeColor);
|
||||
|
||||
//gl.glEnable(GL.GL_CULL_FACE);
|
||||
gl.glDrawElements(GL2.GL_TRIANGLES, this.vertexIndices.length, GL.GL_UNSIGNED_INT, 0);
|
||||
|
||||
gl.glDisableClientState(GL2.GL_VERTEX_ARRAY);
|
||||
gl.glDisableClientState(GL2.GL_COLOR_ARRAY);
|
||||
gl.glDisableClientState(GL2.GL_NORMAL_ARRAY);
|
||||
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
} else {
|
||||
boolean lightEnabled = this.lighting.isEnable();
|
||||
if (lightEnabled) {
|
||||
this.lighting.stop(gl);
|
||||
}
|
||||
gl.glPointSize(this.pointSize * this.dpiScale);
|
||||
gl.glDrawArrays(GL.GL_POINTS, 0, this.pointNum);
|
||||
|
||||
if (lightEnabled) {
|
||||
this.lighting.start(gl);
|
||||
}
|
||||
|
||||
gl.glDisableClientState(GL2.GL_VERTEX_ARRAY);
|
||||
gl.glDisableClientState(GL2.GL_COLOR_ARRAY);
|
||||
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
gl.glPointSize(this.pointSize * this.dpiScale);
|
||||
gl.glDrawArrays(GL.GL_POINTS, 0, this.vertexNum);
|
||||
|
||||
if (lightEnabled) {
|
||||
this.lighting.start(gl);
|
||||
}
|
||||
|
||||
gl.glDisableClientState(GL2.GL_VERTEX_ARRAY);
|
||||
gl.glDisableClientState(GL2.GL_COLOR_ARRAY);
|
||||
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
238
meteoinfo-chart/src/test/java/SphereTest.java
Normal file
238
meteoinfo-chart/src/test/java/SphereTest.java
Normal file
@ -0,0 +1,238 @@
|
||||
import com.jogamp.opengl.*;
|
||||
import com.jogamp.opengl.awt.GLCanvas;
|
||||
import com.jogamp.opengl.awt.GLJPanel;
|
||||
import com.jogamp.opengl.util.FPSAnimator;
|
||||
import com.jogamp.opengl.util.GLBuffers;
|
||||
import org.joml.Vector3f;
|
||||
import org.joml.Vector4f;
|
||||
import org.meteoinfo.chart.graphic.GraphicCollection3D;
|
||||
import org.meteoinfo.chart.graphic.GraphicFactory;
|
||||
import org.meteoinfo.chart.graphic.sphere.Sphere;
|
||||
import org.meteoinfo.geometry.graphic.Graphic;
|
||||
import org.meteoinfo.geometry.legend.PointBreak;
|
||||
import org.meteoinfo.geometry.shape.PointZ;
|
||||
import org.meteoinfo.geometry.shape.PointZShape;
|
||||
import org.meteoinfo.math.Matrix4f;
|
||||
import org.meteoinfo.ndarray.Array;
|
||||
import org.meteoinfo.ndarray.math.ArrayMath;
|
||||
import org.meteoinfo.ndarray.math.ArrayUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SphereTest implements GLEventListener {
|
||||
|
||||
private List<Sphere> spheres;
|
||||
private IntBuffer vbo;
|
||||
private int sizePosition;
|
||||
private int sizeColor;
|
||||
private int sizeNormal;
|
||||
private float[] vertexPosition;
|
||||
private float[] vertexNormal;
|
||||
private float[] vertexColor;
|
||||
private int[] vertexIndices;
|
||||
private float rquad = 0.0f;
|
||||
|
||||
public SphereTest() {
|
||||
vbo = GLBuffers.newDirectIntBuffer(2);
|
||||
createSpheres(3);
|
||||
updateSphereVertex();
|
||||
}
|
||||
|
||||
void createSpheres(int n) {
|
||||
this.spheres = new ArrayList<>();
|
||||
for (int i = 0; i < n; i++) {
|
||||
this.spheres.add(new Sphere(0.1f, 36, 18));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSphereVertex() {
|
||||
List<Vector3f> vertexPositionList = new ArrayList<>();
|
||||
List<Vector3f> vertexNormalList = new ArrayList<>();
|
||||
List<Vector4f> vertexColorList = new ArrayList<>();
|
||||
List<Integer> vertexIndexList = new ArrayList<>();
|
||||
Vector3f vp;
|
||||
int idx = 0, sn = this.spheres.size();
|
||||
float max = 0.5f;
|
||||
float x, y, z;
|
||||
for (Sphere sphere : this.spheres) {
|
||||
z = max / sn * idx;
|
||||
x = z * (float) Math.sin(z * 20);
|
||||
y = z * (float) Math.sin(z * 20);
|
||||
vp = new Vector3f(x, y, z);
|
||||
Matrix4f matrix = new Matrix4f();
|
||||
matrix.translate(vp);
|
||||
List<Vector3f> vertices = sphere.getVertices();
|
||||
int n = vertices.size();
|
||||
int nAdded = vertexPositionList.size();
|
||||
for (Vector3f v : vertices) {
|
||||
vertexPositionList.add(matrix.mul(v));
|
||||
}
|
||||
List<Vector3f> normals = sphere.getNormals();
|
||||
vertexNormalList.addAll(normals);
|
||||
float[] color = Color.RED.getRGBComponents(null);
|
||||
for (int j = 0; j < n; j++) {
|
||||
vertexColorList.add(new Vector4f(color));
|
||||
}
|
||||
if (nAdded == 0) {
|
||||
vertexIndexList.addAll(sphere.getIndices());
|
||||
} else {
|
||||
for (int ii : sphere.getIndices()) {
|
||||
vertexIndexList.add(ii + nAdded);
|
||||
}
|
||||
}
|
||||
idx += 1;
|
||||
}
|
||||
|
||||
int n = vertexPositionList.size();
|
||||
this.vertexPosition = new float[n * 3];
|
||||
this.vertexNormal = new float[n * 3];
|
||||
this.vertexColor = new float[n * 4];
|
||||
Vector3f v;
|
||||
Vector4f v4;
|
||||
for (int i = 0, j = 0, k = 0; i < n; i++, j+=3, k+=4) {
|
||||
v = vertexPositionList.get(i);
|
||||
vertexPosition[j] = v.x;
|
||||
vertexPosition[j + 1] = v.y;
|
||||
vertexPosition[j + 2] = v.z;
|
||||
v = vertexNormalList.get(i);
|
||||
vertexNormal[j] = v.x;
|
||||
vertexNormal[j + 1] = v.y;
|
||||
vertexNormal[j + 2] = v.z;
|
||||
v4 = vertexColorList.get(i);
|
||||
vertexColor[k] = v4.x;
|
||||
vertexColor[k + 1] = v4.y;
|
||||
vertexColor[k + 2] = v4.z;
|
||||
vertexColor[k + 3] = v4.w;
|
||||
}
|
||||
vertexIndices = vertexIndexList.stream().mapToInt(Integer::intValue).toArray();
|
||||
}
|
||||
|
||||
private void updateBuffer(GL2 gl) {
|
||||
FloatBuffer vertexBuffer = GLBuffers.newDirectFloatBuffer(this.vertexPosition);
|
||||
sizePosition = vertexBuffer.capacity() * Float.BYTES;
|
||||
|
||||
FloatBuffer colorBuffer = GLBuffers.newDirectFloatBuffer(vertexColor);
|
||||
sizeColor = colorBuffer.capacity() * Float.BYTES;
|
||||
|
||||
FloatBuffer normalBuffer = GLBuffers.newDirectFloatBuffer(vertexNormal);
|
||||
sizeNormal = normalBuffer.capacity() * Float.BYTES;
|
||||
|
||||
int totalSize = sizePosition + sizeColor + sizeNormal;
|
||||
|
||||
gl.glGenBuffers(2, vbo);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo.get(0));
|
||||
gl.glBufferData(GL.GL_ARRAY_BUFFER, totalSize, null, GL.GL_STATIC_DRAW);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, 0, sizePosition, vertexBuffer);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, sizePosition, sizeColor, colorBuffer);
|
||||
gl.glBufferSubData(GL.GL_ARRAY_BUFFER, sizePosition + sizeColor, sizeNormal, normalBuffer);
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
|
||||
IntBuffer indexBuffer = GLBuffers.newDirectIntBuffer(this.vertexIndices);
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, vbo.get(1));
|
||||
gl.glBufferData(GL.GL_ELEMENT_ARRAY_BUFFER, indexBuffer.capacity() * Integer.BYTES, indexBuffer, GL.GL_STATIC_DRAW);
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(GLAutoDrawable glAutoDrawable) {
|
||||
GL2 gl = glAutoDrawable.getGL().getGL2();
|
||||
|
||||
updateBuffer(gl);
|
||||
|
||||
gl.glShadeModel( GL2.GL_SMOOTH );
|
||||
gl.glClearColor( 0f, 0f, 0f, 0f );
|
||||
gl.glClearDepth( 1.0f );
|
||||
gl.glEnable( GL2.GL_DEPTH_TEST );
|
||||
gl.glDepthFunc( GL2.GL_LEQUAL );
|
||||
gl.glHint( GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL2.GL_NICEST );
|
||||
gl.glEnable(GL2.GL_COLOR_MATERIAL);
|
||||
|
||||
gl.glEnable(GL2.GL_LIGHTING);
|
||||
gl.glEnable(GL2.GL_LIGHT1);
|
||||
//gl.glEnable(GL2.GL_AUTO_NORMAL);
|
||||
//gl.glEnable(GLLightingFunc.GL_NORMALIZE);
|
||||
|
||||
gl.glLightModelfv(GL2.GL_LIGHT_MODEL_AMBIENT, new float[]{0.2f, 0.2f, 0.2f, 1.f}, 0);
|
||||
//gl.glLightfv(this.light, GL2.GL_AMBIENT, ambient, 0);
|
||||
gl.glLightfv(GL2.GL_LIGHT1, GL2.GL_SPECULAR, new float[]{1.f, 1.f, 1.f, 1.f}, 0);
|
||||
gl.glLightfv(GL2.GL_LIGHT1, GL2.GL_DIFFUSE, new float[]{1.f, 1.f, 1.f, 1.f}, 0);
|
||||
gl.glLightfv(GL2.GL_LIGHT1, GL2.GL_POSITION, new float[]{0.f, 0.f, 1.f, 0.f}, 0);
|
||||
|
||||
//Material
|
||||
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_AMBIENT, new float[]{0.2f, 0.2f, 0.2f, 1.f}, 0);
|
||||
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, new float[]{0.8f, 0.8f, 0.8f, 1.f}, 0);
|
||||
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SPECULAR, new float[]{1.f, 1.f, 1.f, 1.f}, 0);
|
||||
gl.glMaterialf(GL2.GL_FRONT_AND_BACK, GL2.GL_SHININESS, 50);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose(GLAutoDrawable glAutoDrawable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(GLAutoDrawable glAutoDrawable) {
|
||||
GL2 gl = glAutoDrawable.getGL().getGL2();
|
||||
gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT );
|
||||
gl.glLoadIdentity();
|
||||
|
||||
// Rotate The Cube On X, Y & Z
|
||||
gl.glRotatef(rquad, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo.get(0));
|
||||
|
||||
// enable vertex arrays
|
||||
gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
|
||||
gl.glVertexPointer(3, GL.GL_FLOAT, 0, 0);
|
||||
gl.glEnableClientState(GL2.GL_COLOR_ARRAY);
|
||||
gl.glColorPointer(4, GL.GL_FLOAT, 0, sizePosition);
|
||||
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, vbo.get(1));
|
||||
|
||||
gl.glEnableClientState(GL2.GL_NORMAL_ARRAY);
|
||||
gl.glNormalPointer(GL.GL_FLOAT, 0, sizePosition + sizeColor);
|
||||
|
||||
gl.glEnable(GL.GL_CULL_FACE);
|
||||
gl.glDrawElements(GL2.GL_TRIANGLES, this.vertexIndices.length, GL.GL_UNSIGNED_INT, 0);
|
||||
|
||||
gl.glDisableClientState(GL2.GL_VERTEX_ARRAY);
|
||||
gl.glDisableClientState(GL2.GL_COLOR_ARRAY);
|
||||
gl.glDisableClientState(GL2.GL_NORMAL_ARRAY);
|
||||
|
||||
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
|
||||
gl.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
|
||||
rquad -= 0.15f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reshape(GLAutoDrawable glAutoDrawable, int i, int i1, int i2, int i3) {
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
//getting the capabilities object of GL2 profile
|
||||
final GLProfile profile = GLProfile.get(GLProfile.GL2);
|
||||
GLCapabilities capabilities = new GLCapabilities(profile);
|
||||
// The canvas
|
||||
final GLJPanel glcanvas = new GLJPanel(capabilities);
|
||||
SphereTest sphereTest = new SphereTest();
|
||||
glcanvas.addGLEventListener(sphereTest);
|
||||
//creating frame
|
||||
final JFrame frame = new JFrame ("Sphere test");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setSize(400, 400);
|
||||
//adding canvas to frame
|
||||
frame.getContentPane().add(glcanvas);
|
||||
frame.setVisible(true);
|
||||
|
||||
final FPSAnimator animator = new FPSAnimator(glcanvas, 300, true);
|
||||
animator.start();
|
||||
}
|
||||
|
||||
}
|
||||
81
meteoinfo-chart/src/test/java/SphereTest1.java
Normal file
81
meteoinfo-chart/src/test/java/SphereTest1.java
Normal file
@ -0,0 +1,81 @@
|
||||
import com.jogamp.opengl.*;
|
||||
import com.jogamp.opengl.awt.GLJPanel;
|
||||
import com.jogamp.opengl.util.GLBuffers;
|
||||
import org.joml.Vector3f;
|
||||
import org.joml.Vector4f;
|
||||
import org.meteoinfo.chart.GLChart;
|
||||
import org.meteoinfo.chart.GLChartPanel;
|
||||
import org.meteoinfo.chart.MouseMode;
|
||||
import org.meteoinfo.chart.graphic.GraphicCollection3D;
|
||||
import org.meteoinfo.chart.graphic.GraphicFactory;
|
||||
import org.meteoinfo.chart.graphic.sphere.Sphere;
|
||||
import org.meteoinfo.chart.jogl.GLPlot;
|
||||
import org.meteoinfo.chart.jogl.Lighting;
|
||||
import org.meteoinfo.common.Extent3D;
|
||||
import org.meteoinfo.geometry.legend.ColorBreak;
|
||||
import org.meteoinfo.geometry.legend.PointBreak;
|
||||
import org.meteoinfo.ndarray.Array;
|
||||
import org.meteoinfo.ndarray.DataType;
|
||||
import org.meteoinfo.ndarray.math.ArrayMath;
|
||||
import org.meteoinfo.ndarray.math.ArrayUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
|
||||
public class SphereTest1 {
|
||||
|
||||
GraphicCollection3D createSpheres() {
|
||||
int[] shape = new int[]{1};
|
||||
Array z = ArrayUtil.lineSpace(0., 1., 10, true);
|
||||
Array x = ArrayMath.mul(z, ArrayMath.sin(ArrayMath.mul(z, 20)));
|
||||
Array y = ArrayMath.mul(z, ArrayMath.sin(ArrayMath.mul(z, 20)));
|
||||
PointBreak cb = new PointBreak();
|
||||
cb.setSize(50);
|
||||
cb.setColor(Color.RED);
|
||||
|
||||
GraphicCollection3D graphics = (GraphicCollection3D) GraphicFactory.createPoints3D(x, y, z, cb);
|
||||
graphics.setSphere(true);
|
||||
|
||||
return graphics;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
JFrame frame = new JFrame("Volume Test");
|
||||
GLPlot plot = new GLPlot();
|
||||
plot.setOrthographic(true);
|
||||
plot.setClipPlane(false);
|
||||
//plot.setBackground(Color.black);
|
||||
//plot.setForeground(Color.blue);
|
||||
plot.setDrawBoundingBox(true);
|
||||
plot.setDrawBase(true);
|
||||
plot.setBoxed(true);
|
||||
plot.setDisplayXY(true);
|
||||
//plot.getXAxis().setDrawTickLabel(false);
|
||||
//plot.getYAxis().setDrawTickLabel(false);
|
||||
plot.setDisplayZ(true);
|
||||
plot.getZAxis().setLabel("Z axis");
|
||||
//plot.getGridLine().setDrawXLine(false);
|
||||
//plot.getGridLine().setDrawYLine(false);
|
||||
//plot.getGridLine().setDrawZLine(false);
|
||||
|
||||
SphereTest1 test = new SphereTest1();
|
||||
GraphicCollection3D graphics = test.createSpheres();
|
||||
plot.addGraphic(graphics);
|
||||
plot.setDrawExtent(new Extent3D(-2, 2, -2, 2, -2, 2));
|
||||
plot.setAntialias(true);
|
||||
Lighting lighting = plot.getLighting();
|
||||
lighting.setEnable(true);
|
||||
lighting.setMaterialSpecular(1.0f);
|
||||
GLChartPanel canvas = new GLChartPanel(new GLChart());
|
||||
canvas.getChart().addPlot(plot);
|
||||
canvas.setMouseMode(MouseMode.ROTATE);
|
||||
frame.getContentPane().add(canvas);
|
||||
frame.pack();
|
||||
frame.setSize(600, 600);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
|
||||
}
|
||||
@ -22,22 +22,103 @@
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module" module-name="meteoinfo-chart" />
|
||||
<orderEntry type="module" module-name="meteoinfo-console" />
|
||||
<orderEntry type="library" name="Maven: de.sciss:docking-frames-common:2.0.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: de.sciss:docking-frames-core:2.0.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-geo" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ui" />
|
||||
<orderEntry type="library" name="Maven: org.meteothink:wContour:1.7.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.l2fprod:l2fprod-common-all:0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.joml:joml:1.10.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:rsyntaxtextarea:3.3.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:autocomplete:3.3.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ndarray" />
|
||||
<orderEntry type="module" module-name="meteoinfo-math" />
|
||||
<orderEntry type="module" module-name="meteoinfo-geometry" />
|
||||
<orderEntry type="module" module-name="meteoinfo-table" />
|
||||
<orderEntry type="module" module-name="meteoinfo-image" />
|
||||
<orderEntry type="module" module-name="meteoinfo-data" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf:3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-util:2.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-emf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-pdf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphics2d:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-ps:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13.3" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-common" />
|
||||
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-greek:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-cyrillic:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-gamma:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-combinatorics:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-arrays:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-field:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-core:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-simple:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-client-api:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-statistics-distribution:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ojalgo:ojalgo:52.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-interpolation:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.19.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-jpeg:3.9.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-projection" />
|
||||
<orderEntry type="module" module-name="meteoinfo-dataframe" />
|
||||
<orderEntry type="library" name="Maven: edu.ucar:netcdfAll:5.5.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.albfernandez:juniversalchardet:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.netbeans:openide-lookup:1.9-patched-1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-tests:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsbase:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:31.1-jre" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-complex:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-angle:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-rootfinder:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-quaternion:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-sampling:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-exception:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-core:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-fraction:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ojalgo:ojalgo:52.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-interpolation:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-math:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm64:1.5.4" level="project" />
|
||||
@ -53,7 +134,6 @@
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:macosx-x86_64:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86_64:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm64:0.3.10-1.5.4" level="project" />
|
||||
@ -69,102 +149,22 @@
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:macosx-x86_64:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86_64:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-geometry" />
|
||||
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.19.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-table" />
|
||||
<orderEntry type="module" module-name="meteoinfo-image" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-jpeg:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-core:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-metadata:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-lang:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-io:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-image:3.9.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-data" />
|
||||
<orderEntry type="module" module-name="meteoinfo-projection" />
|
||||
<orderEntry type="library" name="Maven: org.locationtech.proj4j:proj4j:1.2.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.sf.geographiclib:GeographicLib-Java:2.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-dataframe" />
|
||||
<orderEntry type="library" name="Maven: edu.ucar:netcdfAll:5.5.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.albfernandez:juniversalchardet:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf:3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:3.0" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-util:2.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.netbeans:openide-lookup:1.9-patched-1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-emf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-io:2.2.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-tests:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsbase:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-pdf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphics2d:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-ps:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13.3" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ui" />
|
||||
<orderEntry type="module" module-name="meteoinfo-common" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:31.1-jre" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.11.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.meteothink:wContour:1.7.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-greek:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-cyrillic:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.l2fprod:l2fprod-common-all:0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.joml:joml:1.10.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-console" />
|
||||
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:rsyntaxtextarea:3.3.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:autocomplete:3.3.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ndarray" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-complex:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-angle:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-rootfinder:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-quaternion:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-sampling:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-exception:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-core:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-core:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-gamma:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-fraction:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-combinatorics:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-arrays:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-field:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-core:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-simple:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-client-api:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-statistics-distribution:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: de.sciss:docking-frames-common:2.0.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: de.sciss:docking-frames-core:2.0.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@ -1,34 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<MeteoInfo File="milconfig.xml" Type="configurefile">
|
||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\test">
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map\geoshow"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\pie"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\dataframe"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth"/>
|
||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth">
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\array"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\math"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\new"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\others"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\test"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\radar"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\scatter"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\quiver"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\interpolate"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth"/>
|
||||
</Path>
|
||||
<File>
|
||||
<OpenedFiles>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf\surf_pumpkin_1.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\test\array_test_numjy.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\test\array_test_loop.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\test\array_test_dot.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth\scatter_sphere.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth\scatter.py"/>
|
||||
</OpenedFiles>
|
||||
<RecentFiles>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf\surf_pumpkin_1.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\test\array_test_numjy.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\test\array_test_loop.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\test\array_test_dot.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth\scatter_sphere.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth\scatter.py"/>
|
||||
</RecentFiles>
|
||||
</File>
|
||||
<Font>
|
||||
@ -36,5 +34,5 @@
|
||||
</Font>
|
||||
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
|
||||
<Figure DoubleBuffering="true"/>
|
||||
<Startup MainFormLocation="-7,0" MainFormSize="1346,800"/>
|
||||
<Startup MainFormLocation="-7,-7" MainFormSize="1293,685"/>
|
||||
</MeteoInfo>
|
||||
|
||||
@ -12,22 +12,101 @@
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="meteoinfo-chart" />
|
||||
<orderEntry type="module" module-name="meteoinfo-console" />
|
||||
<orderEntry type="module" module-name="meteoinfo-geo" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ui" />
|
||||
<orderEntry type="library" name="Maven: org.meteothink:wContour:1.7.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.l2fprod:l2fprod-common-all:0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.joml:joml:1.10.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:rsyntaxtextarea:3.3.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:autocomplete:3.3.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ndarray" />
|
||||
<orderEntry type="module" module-name="meteoinfo-math" />
|
||||
<orderEntry type="module" module-name="meteoinfo-geometry" />
|
||||
<orderEntry type="module" module-name="meteoinfo-table" />
|
||||
<orderEntry type="module" module-name="meteoinfo-image" />
|
||||
<orderEntry type="module" module-name="meteoinfo-data" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf:3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-util:2.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-emf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-pdf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphics2d:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-ps:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13.3" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-common" />
|
||||
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-greek:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-cyrillic:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-gamma:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-combinatorics:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-arrays:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-field:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-core:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-simple:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-client-api:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-statistics-distribution:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ojalgo:ojalgo:52.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-interpolation:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.19.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-jpeg:3.9.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-projection" />
|
||||
<orderEntry type="module" module-name="meteoinfo-dataframe" />
|
||||
<orderEntry type="library" name="Maven: edu.ucar:netcdfAll:5.5.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.albfernandez:juniversalchardet:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.netbeans:openide-lookup:1.9-patched-1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-tests:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsbase:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:31.1-jre" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-complex:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-angle:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-rootfinder:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-quaternion:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-sampling:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-exception:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-core:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-fraction:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.41.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ojalgo:ojalgo:52.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-interpolation:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-math:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm64:1.5.4" level="project" />
|
||||
@ -43,7 +122,6 @@
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:macosx-x86_64:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86_64:1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm64:0.3.10-1.5.4" level="project" />
|
||||
@ -59,100 +137,22 @@
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:macosx-x86_64:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86_64:0.3.10-1.5.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-geometry" />
|
||||
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.19.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-table" />
|
||||
<orderEntry type="module" module-name="meteoinfo-image" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-jpeg:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-core:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-metadata:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-lang:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-io:3.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-image:3.9.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-data" />
|
||||
<orderEntry type="module" module-name="meteoinfo-projection" />
|
||||
<orderEntry type="library" name="Maven: org.locationtech.proj4j:proj4j:1.2.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.sf.geographiclib:GeographicLib-Java:2.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-dataframe" />
|
||||
<orderEntry type="library" name="Maven: edu.ucar:netcdfAll:5.5.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.albfernandez:juniversalchardet:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf:3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:3.0" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-util:2.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.netbeans:openide-lookup:1.9-patched-1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-emf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-io:2.2.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-tests:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsbase:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-pdf:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphics2d:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-ps:2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13.3" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ui" />
|
||||
<orderEntry type="module" module-name="meteoinfo-common" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:31.1-jre" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.11.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.meteothink:wContour:1.7.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-greek:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-cyrillic:1.0.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.l2fprod:l2fprod-common-all:0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all-main:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-android-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-armv6hf:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-linux-aarch64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-macosx-universal:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:natives-windows-amd64:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.joml:joml:1.10.4" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-console" />
|
||||
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:rsyntaxtextarea:3.3.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fifesoft:autocomplete:3.3.0" level="project" />
|
||||
<orderEntry type="module" module-name="meteoinfo-ndarray" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-complex:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-angle:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-rootfinder:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-quaternion:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-sampling:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-exception:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-legacy-core:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math4-core:4.0-beta1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-gamma:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-fraction:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-combinatorics:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-arrays:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-numbers-field:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-core:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-simple:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-rng-client-api:1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-statistics-distribution:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
Loading…
x
Reference in New Issue
Block a user