| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /**
- * Some types of possible point attribute data formats
- *
- * @class
- */
- const PointAttributeTypes = {
- DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8},
- DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4},
- DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1},
- DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1},
- DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2},
- DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2},
- DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4},
- DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4},
- DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8},
- DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8}
- };
- let i = 0;
- for (let obj in PointAttributeTypes) {
- PointAttributeTypes[i] = PointAttributeTypes[obj];
- i++;
- }
- export {PointAttributeTypes};
- class PointAttribute{
-
- constructor(name, type, numElements){
- this.name = name;
- this.type = type;
- this.numElements = numElements;
- this.byteSize = this.numElements * this.type.size;
- this.description = "";
- this.range = [Infinity, -Infinity];
- }
- };
- PointAttribute.POSITION_CARTESIAN = new PointAttribute(
- "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3);
- PointAttribute.RGBA_PACKED = new PointAttribute(
- "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4);
- PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED;
- PointAttribute.RGB_PACKED = new PointAttribute(
- "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3);
- PointAttribute.NORMAL_FLOATS = new PointAttribute(
- "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3);
- PointAttribute.INTENSITY = new PointAttribute(
- "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1);
- PointAttribute.CLASSIFICATION = new PointAttribute(
- "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1);
- PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute(
- "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2);
- PointAttribute.NORMAL_OCT16 = new PointAttribute(
- "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2);
- PointAttribute.NORMAL = new PointAttribute(
- "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3);
-
- PointAttribute.RETURN_NUMBER = new PointAttribute(
- "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1);
-
- PointAttribute.NUMBER_OF_RETURNS = new PointAttribute(
- "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1);
-
- PointAttribute.SOURCE_ID = new PointAttribute(
- "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1);
- PointAttribute.INDICES = new PointAttribute(
- "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1);
- PointAttribute.SPACING = new PointAttribute(
- "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1);
- PointAttribute.GPS_TIME = new PointAttribute(
- "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1);
- export {PointAttribute};
- export class PointAttributes{
- constructor(pointAttributes){
- this.attributes = [];
- this.byteSize = 0;
- this.size = 0;
- this.vectors = [];
- if (pointAttributes != null) {
- for (let i = 0; i < pointAttributes.length; i++) {
- let pointAttributeName = pointAttributes[i];
- let pointAttribute = PointAttribute[pointAttributeName];
- this.attributes.push(pointAttribute);
- this.byteSize += pointAttribute.byteSize;
- this.size++;
- }
- }
- }
- add(pointAttribute){
- this.attributes.push(pointAttribute);
- this.byteSize += pointAttribute.byteSize;
- this.size++;
- };
- addVector(vector){
- this.vectors.push(vector);
- }
- hasNormals(){
- for (let name in this.attributes) {
- let pointAttribute = this.attributes[name];
- if (
- pointAttribute === PointAttribute.NORMAL_SPHEREMAPPED ||
- pointAttribute === PointAttribute.NORMAL_FLOATS ||
- pointAttribute === PointAttribute.NORMAL ||
- pointAttribute === PointAttribute.NORMAL_OCT16) {
- return true;
- }
- }
- return false;
- };
- }
|