Statistics 3D

1 개요

입력한 3D Object의 각종 통계를 계산하는 알고리즘입니다.

2 알고리즘 상세 설명

Source Object Result Dialogue
Source Object Result Dialogue
Fig. 3D Object 통계 값

3 예제 코드

// 객체 생성
CStatistics3D statistics3D;

// 입력 3D 객체
CFL3DObject floSource;

// 입력 3D 객체 설정
statistics3D.SetSourceObject(floSource);

// 계산 값 보존 여부
bool bPreCalculatedHold = true;

// 계산 값 보존 여부 설정
statistics3D.EnablePreCalculatedHold(bPreCalculatedHold);

// 위치 데이터 변수 정의
TPoint3<double> tpPositionMin;
TPoint3<double> tpPositionMax;
TPoint3<double> tpPositionSum;
TPoint3<double> tpPositionSumOfSquares;
TPoint3<double> tpPositionMean;
TPoint3<double> tpPositionMedian;
TPoint3<double> tpPositionVariance;
TPoint3<double> tpPositionStandardDeviation;
TPoint3<double> tpPositionCoefficientOfVariance;
TPoint3<double> tpPositionLowerQuartile;
TPoint3<double> tpPositionUpperQuartile;

double f64PositionCovariance;
double f64PositionCorrelationCoefficient;

// 위치 데이터 계산
statistics3D.GetPointPositionMin(tpPositionMin);
statistics3D.GetPointPositionMax(tpPositionMax);
statistics3D.GetPointPositionSum(tpPositionSum);
statistics3D.GetPointPositionSumOfSquares(tpPositionSumOfSquares);
statistics3D.GetPointPositionMean(tpPositionMean);
statistics3D.GetPointPositionMedian(tpPositionMedian);
statistics3D.GetPointPositionVariance(tpPositionVariance);
statistics3D.GetPointPositionStandardDeviation(tpPositionStandardDeviation);
statistics3D.GetPointPositionCoefficientOfVariance(tpPositionCoefficientOfVariance);
statistics3D.GetPointPositionLowerQuartile(tpPositionLowerQuartile);
statistics3D.GetPointPositionUpperQuartile(tpPositionUpperQuartile);

// 통계를 구할 두 위치 정의
CStatistics3D::EPointPosition eFirstPointPosition = CStatistics3D::EPointPosition_X;
CStatistics3D::EPointPosition eSecondPointPosition = CStatistics3D::EPointPosition_Y;

// 통계를 구할 두 위치 설정
statistics3D.SetCorrelatedPointPosition(eFirstPointPosition, eSecondPointPosition);

// 두 위치 데이터의 통계 값 계산
statistics3D.GetPointPositionCovariance(f64PositionCovariance);
statistics3D.GetPointPositionCorrelationCoefficient(f64PositionCorrelationCoefficient);

// 색 데이터 변수 정의
CMultiVar<double> mvColorMin;
CMultiVar<double> mvColorMax;
CMultiVar<double> mvColorSum;
CMultiVar<double> mvColorSumOfSquares;
CMultiVar<double> mvColorMean;
CMultiVar<double> mvColorMedian;
CMultiVar<double> mvColorVariance;
CMultiVar<double> mvColorStandardDeviation;
CMultiVar<double> mvColorCoefficientOfVariance;
CMultiVar<double> mvColorLowerQuartile;
CMultiVar<double> mvColorUpperQuartile;

double f64ColorCovariance;
double f64ColorCorrelationCoefficient;

// 색 데이터 계산
statistics3D.GetPointColorMin(mvColorMin);
statistics3D.GetPointColorMax(mvColorMax);
statistics3D.GetPointColorSum(mvColorSum);
statistics3D.GetPointColorSumOfSquares(mvColorSumOfSquares);
statistics3D.GetPointColorMean(mvColorMean);
statistics3D.GetPointColorMedian(mvColorMedian);
statistics3D.GetPointColorVariance(mvColorVariance);
statistics3D.GetPointColorStandardDeviation(mvColorStandardDeviation);
statistics3D.GetPointColorCoefficientOfVariance(mvColorCoefficientOfVariance);
statistics3D.GetPointColorLowerQuartile(mvColorLowerQuartile);
statistics3D.GetPointColorUpperQuartile(mvColorUpperQuartile);

// 통계를 구할 두 색 정의
CStatistics3D::EPointColor eFirstPointColor = CStatistics3D::EPointColor_B;
CStatistics3D::EPointColor eSecondPointColor = CStatistics3D::EPointColor_G;

// 통계를 구할 두 색 설정
statistics3D.SetCorrelatedPointColor(eFirstPointColor, eSecondPointColor);

// 두 색 데이터의 통계 값 계산
statistics3D.GetPointColorCovariance(f64ColorCovariance);
statistics3D.GetPointColorCorrelationCoefficient(f64ColorCorrelationCoefficient);

// 모델의 표면적 계산
double f64SurfaceArea;

statistics3D.GetSurfaceArea(f64SurfaceArea);
// 객체 생성
CStatistics3D statistics3D = new CStatistics3D();

// 입력 3D 객체
CFL3DObject floSource = new CFL3DObject();

// 입력 3D 객체 설정
statistics3D.SetSourceObject(ref floSource);

// 계산 값 보존 여부
bool bPreCalculatedHold = true;

// 계산 값 보존 여부 설정
statistics3D.EnablePreCalculatedHold(bPreCalculatedHold);

// 위치 데이터 변수 정의
TPoint3<double> tpPositionMin = new TPoint3<double>();
TPoint3<double> tpPositionMax = new TPoint3<double>();
TPoint3<double> tpPositionSum = new TPoint3<double>();
TPoint3<double> tpPositionSumOfSquares = new TPoint3<double>();
TPoint3<double> tpPositionMean = new TPoint3<double>();
TPoint3<double> tpPositionMedian = new TPoint3<double>();
TPoint3<double> tpPositionVariance = new TPoint3<double>();
TPoint3<double> tpPositionStandardDeviation = new TPoint3<double>();
TPoint3<double> tpPositionCoefficientOfVariance = new TPoint3<double>();
TPoint3<double> tpPositionLowerQuartile = new TPoint3<double>();
TPoint3<double> tpPositionUpperQuartile = new TPoint3<double>();

double f64PositionCovariance = 0;
double f64PositionCorrelationCoefficient = 0;

// 위치 데이터 계산
statistics3D.GetPointPositionMin(ref tpPositionMin);
statistics3D.GetPointPositionMax(ref tpPositionMax);
statistics3D.GetPointPositionSum(ref tpPositionSum);
statistics3D.GetPointPositionSumOfSquares(ref tpPositionSumOfSquares);
statistics3D.GetPointPositionMean(ref tpPositionMean);
statistics3D.GetPointPositionMedian(ref tpPositionMedian);
statistics3D.GetPointPositionVariance(ref tpPositionVariance);
statistics3D.GetPointPositionStandardDeviation(ref tpPositionStandardDeviation);
statistics3D.GetPointPositionCoefficientOfVariance(ref tpPositionCoefficientOfVariance);
statistics3D.GetPointPositionLowerQuartile(ref tpPositionLowerQuartile);
statistics3D.GetPointPositionUpperQuartile(ref tpPositionUpperQuartile);

// 통계를 구할 두 위치 정의
CStatistics3D.EPointPosition eFirstPointPosition = CStatistics3D.EPointPosition.X;
CStatistics3D.EPointPosition eSecondPointPosition = CStatistics3D.EPointPosition.Y;

// 통계를 구할 두 위치 설정
statistics3D.SetCorrelatedPointPosition(eFirstPointPosition, eSecondPointPosition);

// 두 위치 데이터의 통계 값 계산
statistics3D.GetPointPositionCovariance(ref f64PositionCovariance);
statistics3D.GetPointPositionCorrelationCoefficient(ref f64PositionCorrelationCoefficient);

// 색 데이터 변수 정의
CMultiVar<double> mvColorMin = new CMultiVar<double>();
CMultiVar<double> mvColorMax = new CMultiVar<double>();
CMultiVar<double> mvColorSum = new CMultiVar<double>();
CMultiVar<double> mvColorSumOfSquares = new CMultiVar<double>();
CMultiVar<double> mvColorMean = new CMultiVar<double>();
CMultiVar<double> mvColorMedian = new CMultiVar<double>();
CMultiVar<double> mvColorVariance = new CMultiVar<double>();
CMultiVar<double> mvColorStandardDeviation = new CMultiVar<double>();
CMultiVar<double> mvColorCoefficientOfVariance = new CMultiVar<double>();
CMultiVar<double> mvColorLowerQuartile = new CMultiVar<double>();
CMultiVar<double> mvColorUpperQuartile = new CMultiVar<double>();

double f64ColorCovariance = 0;
double f64ColorCorrelationCoefficient = 0;

// 색 데이터 계산
statistics3D.GetPointColorMin(ref mvColorMin);
statistics3D.GetPointColorMax(ref mvColorMax);
statistics3D.GetPointColorSum(ref mvColorSum);
statistics3D.GetPointColorSumOfSquares(ref mvColorSumOfSquares);
statistics3D.GetPointColorMean(ref mvColorMean);
statistics3D.GetPointColorMedian(ref mvColorMedian);
statistics3D.GetPointColorVariance(ref mvColorVariance);
statistics3D.GetPointColorStandardDeviation(ref mvColorStandardDeviation);
statistics3D.GetPointColorCoefficientOfVariance(ref mvColorCoefficientOfVariance);
statistics3D.GetPointColorLowerQuartile(ref mvColorLowerQuartile);
statistics3D.GetPointColorUpperQuartile(ref mvColorUpperQuartile);

// 통계를 구할 두 색 정의
CStatistics3D.EPointColor eFirstPointColor = CStatistics3D.EPointColor.B;
CStatistics3D.EPointColor eSecondPointColor = CStatistics3D.EPointColor.G;

// 통계를 구할 두 색 설정
statistics3D.SetCorrelatedPointColor(eFirstPointColor, eSecondPointColor);

// 두 색 데이터의 통계 값 계산
statistics3D.GetPointColorCovariance(ref f64ColorCovariance);
statistics3D.GetPointColorCorrelationCoefficient(ref f64ColorCorrelationCoefficient);

// 모델의 표면적 계산
double f64SurfaceArea = 0;

statistics3D.GetSurfaceArea(ref f64SurfaceArea);
# 객체 생성
statistics3D = CStatistics3D()

# 입력 3D 객체
floSource = CFL3DObject()

# 입력 3D 객체 설정
statistics3D.SetSourceObject(floSource)

# 계산 값 보존 여부
bPreCalculatedHold = True

# 계산 값 보존 여부 설정
statistics3D.EnablePreCalculatedHold(bPreCalculatedHold)

# 위치 데이터 변수 정의
tpPositionMin = TPoint3[Double]()
tpPositionMax = TPoint3[Double]()
tpPositionSum = TPoint3[Double]()
tpPositionSumOfSquares = TPoint3[Double]()
tpPositionMean = TPoint3[Double]()
tpPositionMedian = TPoint3[Double]()
tpPositionVariance = TPoint3[Double]()
tpPositionStandardDeviation = TPoint3[Double]()
tpPositionCoefficientOfVariance = TPoint3[Double]()
tpPositionLowerQuartile = TPoint3[Double]()
tpPositionUpperQuartile = TPoint3[Double]()

f64PositionCovariance = 0
f64PositionCorrelationCoefficient = 0

# 위치 데이터 계산
statistics3D.GetPointPositionMin(tpPositionMin)
statistics3D.GetPointPositionMax(tpPositionMax)
statistics3D.GetPointPositionSum(tpPositionSum)
statistics3D.GetPointPositionSumOfSquares(tpPositionSumOfSquares)
statistics3D.GetPointPositionMean(tpPositionMean)
statistics3D.GetPointPositionMedian(tpPositionMedian)
statistics3D.GetPointPositionVariance(tpPositionVariance)
statistics3D.GetPointPositionStandardDeviation(tpPositionStandardDeviation)
statistics3D.GetPointPositionCoefficientOfVariance(tpPositionCoefficientOfVariance)
statistics3D.GetPointPositionLowerQuartile(tpPositionLowerQuartile)
statistics3D.GetPointPositionUpperQuartile(tpPositionUpperQuartile)

# 통계를 구할 두 위치 정의
eFirstPointPosition = CStatistics3D.EPointPosition.X
eSecondPointPosition = CStatistics3D.EPointPosition.Y

# 통계를 구할 두 위치 설정
statistics3D.SetCorrelatedPointPosition(eFirstPointPosition, eSecondPointPosition)

# 두 위치 데이터의 통계 값 계산
statistics3D.GetPointPositionCovariance(f64PositionCovariance)
statistics3D.GetPointPositionCorrelationCoefficient(f64PositionCorrelationCoefficient)

# 색 데이터 변수 정의
mvColorMin = CMultiVar[Double]()
mvColorMax = CMultiVar[Double]()
mvColorSum = CMultiVar[Double]()
mvColorSumOfSquares = CMultiVar[Double]()
mvColorMean = CMultiVar[Double]()
mvColorMedian = CMultiVar[Double]()
mvColorVariance = CMultiVar[Double]()
mvColorStandardDeviation = CMultiVar[Double]()
mvColorCoefficientOfVariance = CMultiVar[Double]()
mvColorLowerQuartile = CMultiVar[Double]()
mvColorUpperQuartile = CMultiVar[Double]()

f64ColorCovariance = 0
f64ColorCorrelationCoefficient = 0

# 색 데이터 계산
statistics3D.GetPointColorMin(mvColorMin)
statistics3D.GetPointColorMax(mvColorMax)
statistics3D.GetPointColorSum(mvColorSum)
statistics3D.GetPointColorSumOfSquares(mvColorSumOfSquares)
statistics3D.GetPointColorMean(mvColorMean)
statistics3D.GetPointColorMedian(mvColorMedian)
statistics3D.GetPointColorVariance(mvColorVariance)
statistics3D.GetPointColorStandardDeviation(mvColorStandardDeviation)
statistics3D.GetPointColorCoefficientOfVariance(mvColorCoefficientOfVariance)
statistics3D.GetPointColorLowerQuartile(mvColorLowerQuartile)
statistics3D.GetPointColorUpperQuartile(mvColorUpperQuartile)

# 통계를 구할 두 색 정의
eFirstPointColor = CStatistics3D.EPointColor.B
eSecondPointColor = CStatistics3D.EPointColor.G

# 통계를 구할 두 색 설정
statistics3D.SetCorrelatedPointColor(eFirstPointColor, eSecondPointColor)

# 두 색 데이터의 통계 값 계산
statistics3D.GetPointColorCovariance(f64ColorCovariance)
statistics3D.GetPointColorCorrelationCoefficient(f64ColorCorrelationCoefficient)

# 모델의 표면적 계산
f64SurfaceArea = 0

statistics3D.GetSurfaceArea()

4 추가 함수 설명

Pre-Calculated Hold Flag 설정/가져오기

// 객체 생성
CStatistics3D statistics3D;

// 계산 값 보존 여부 설정
bool bSetPreCalculatedHold = true;
statistics3D.EnablePreCalculatedHold(bSetPreCalculatedHold);

// 계산 값 보존 여부 가져오기
bool bGetPreCalculatedHold = true;
bGetPreCalculatedHold = statistics3D.IsPreCalculatedHoldEnabled();
// 객체 생성
CStatistics3D statistics3D = new CStatistics3D();

// 계산 값 보존 여부 설정
bool bSetPreCalculatedHold = true;
statistics3D.EnablePreCalculatedHold(bSetPreCalculatedHold);

// 계산 값 보존 여부 가져오기
bool bGetPreCalculatedHold = true;
bGetPreCalculatedHold = statistics3D.IsPreCalculatedHoldEnabled();
# 객체 생성
statistics3D = CStatistics3D()

# 계산 값 보존 여부 설정
bSetPreCalculatedHold = True
statistics3D.EnablePreCalculatedHold(bSetPreCalculatedHold)

# 계산 값 보존 여부 가져오기
bGetPreCalculatedHold = True
bGetPreCalculatedHold = statistics3D.IsPreCalculatedHoldEnabled()