refactor(color_set): 优化颜色匹配算法中的元组结构
将存储颜色匹配结果的元组从(lightness, min_wacg_abs)扩展为(lightness, avg_wacg_abs, sum_wacg_abs) 修改匹配逻辑以同时考虑平均和总和WACG值
This commit is contained in:
parent
afaa7d25de
commit
dd1273dad4
@ -49,9 +49,9 @@ fn search_for_common_wacg_color(
|
||||
neutral_swatch: &NeutralSwatch,
|
||||
minium_ratio: f32,
|
||||
) -> Oklch {
|
||||
// store in: (lightness, min_wacg_abs)
|
||||
let mut minium_match: (f32, f32) = (0.0, f32::INFINITY);
|
||||
let mut closest_match: (f32, f32) = (f32::INFINITY, f32::INFINITY);
|
||||
// store in: (lightness, avg_wacg_abs, sum_wacg_abs)
|
||||
let mut minium_match: (f32, f32, f32) = (0.0, f32::INFINITY, 0.0);
|
||||
let mut closest_match: (f32, f32, f32) = (f32::INFINITY, f32::INFINITY, 0.0);
|
||||
for scan_lightness in (0..=100).map(|x| x as f32 / 100.0) {
|
||||
let new_target = neutral_swatch.get(scan_lightness);
|
||||
let new_target_luma = map_oklch_to_luma(&new_target);
|
||||
@ -60,11 +60,14 @@ fn search_for_common_wacg_color(
|
||||
.map(|ref_color| match_wacg(&ref_color, &new_target_luma) - minium_ratio)
|
||||
.sum();
|
||||
let reference_wacgs = reference_wacgs_sum / reference_colors.len() as f32;
|
||||
if reference_wacgs.abs() < closest_match.1.abs() {
|
||||
closest_match = (scan_lightness, reference_wacgs);
|
||||
if reference_wacgs.abs() < closest_match.1.abs() && reference_wacgs_sum > closest_match.2 {
|
||||
closest_match = (scan_lightness, reference_wacgs, reference_wacgs_sum);
|
||||
}
|
||||
if reference_wacgs >= 0.0 && reference_wacgs.abs() < minium_match.1.abs() {
|
||||
minium_match = (scan_lightness, reference_wacgs);
|
||||
if reference_wacgs >= 0.0
|
||||
&& reference_wacgs.abs() < minium_match.1.abs()
|
||||
&& reference_wacgs_sum > minium_match.2
|
||||
{
|
||||
minium_match = (scan_lightness, reference_wacgs, reference_wacgs_sum);
|
||||
}
|
||||
}
|
||||
if minium_match.1 != f32::INFINITY {
|
||||
|
Loading…
x
Reference in New Issue
Block a user