65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
/**
|
|
* Lines geometry
|
|
* Use screen space projected lines lineWidth > MAX_LINE_WIDTH
|
|
* https://mattdesl.svbtle.com/drawing-lines-is-hard
|
|
* @module echarts-gl/util/geometry/LinesGeometry
|
|
* @author Yi Shen(http://github.com/pissang)
|
|
*/
|
|
import Geometry from 'claygl/src/Geometry';
|
|
import * as echarts from 'echarts/lib/echarts';
|
|
/**
|
|
* @constructor
|
|
* @alias module:echarts-gl/chart/flowGL/Line2D
|
|
* @extends clay.Geometry
|
|
*/
|
|
|
|
var LinesGeometry = Geometry.extend(function () {
|
|
return {
|
|
dynamic: true,
|
|
attributes: {
|
|
position: new Geometry.Attribute('position', 'float', 3, 'POSITION')
|
|
}
|
|
};
|
|
},
|
|
/** @lends module: echarts-gl/util/geometry/LinesGeometry.prototype */
|
|
{
|
|
/**
|
|
* Reset offset
|
|
*/
|
|
resetOffset: function () {
|
|
this._vertexOffset = 0;
|
|
this._faceOffset = 0;
|
|
},
|
|
|
|
/**
|
|
* @param {number} nVertex
|
|
*/
|
|
setLineCount: function (nLine) {
|
|
var attributes = this.attributes;
|
|
var nVertex = 4 * nLine;
|
|
var nTriangle = 2 * nLine;
|
|
|
|
if (this.vertexCount !== nVertex) {
|
|
attributes.position.init(nVertex);
|
|
}
|
|
|
|
if (this.triangleCount !== nTriangle) {
|
|
if (nTriangle === 0) {
|
|
this.indices = null;
|
|
} else {
|
|
this.indices = this.vertexCount > 0xffff ? new Uint32Array(nTriangle * 3) : new Uint16Array(nTriangle * 3);
|
|
}
|
|
}
|
|
},
|
|
addLine: function (p) {
|
|
var vertexOffset = this._vertexOffset;
|
|
this.attributes.position.set(vertexOffset, [p[0], p[1], 1]);
|
|
this.attributes.position.set(vertexOffset + 1, [p[0], p[1], -1]);
|
|
this.attributes.position.set(vertexOffset + 2, [p[0], p[1], 2]);
|
|
this.attributes.position.set(vertexOffset + 3, [p[0], p[1], -2]);
|
|
this.setTriangleIndices(this._faceOffset++, [vertexOffset, vertexOffset + 1, vertexOffset + 2]);
|
|
this.setTriangleIndices(this._faceOffset++, [vertexOffset + 1, vertexOffset + 2, vertexOffset + 3]);
|
|
this._vertexOffset += 4;
|
|
}
|
|
});
|
|
export default LinesGeometry; |