mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-04-22 22:00:15 +08:00
1.5 KiB
1.5 KiB
Prediction Wrap Transform
PredictionSchemeWrapTransformBase_ClampPredictedValue()
void PredictionSchemeWrapTransformBase_ClampPredictedValue(predicted_val,
clamped_value_) {
num_components = GetNumComponents();
min_value_ = pred_trasnform_wrap_min[curr_att_dec][curr_att];
max_value_ = pred_trasnform_wrap_max[curr_att_dec][curr_att];
for (i = 0; i < num_components; ++i) {
if (predicted_val[i] > max_value_)
clamped_value_[i] = max_value_;
else if (predicted_val[i] < min_value_)
clamped_value_[i] = min_value_;
else
clamped_value_[i] = predicted_val[i];
}
}
{:.draco-syntax}
PredictionSchemeWrapDecodingTransform_ComputeOriginalValue()
void PredictionSchemeWrapDecodingTransform_ComputeOriginalValue(
predicted_vals, corr_vals, out_original_vals) {
num_components = GetNumComponents();
min = pred_trasnform_wrap_min[curr_att_dec][curr_att];
max = pred_trasnform_wrap_max[curr_att_dec][curr_att];
max_dif_ = 1 + max - min;
PredictionSchemeWrapTransformBase_ClampPredictedValue(predicted_vals,
clamped_vals);
for (i = 0; i < num_components; ++i) {
out_original_vals[i] = clamped_vals[i] + corr_vals[i];
if (out_original_vals[i] > max)
out_original_vals[i] -= max_dif_;
else if (out_original_vals[i] < min)
out_original_vals[i] += max_dif_;
}
}
{:.draco-syntax}