mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-01 16:08:30 +00:00
clamp instead, meh
This commit is contained in:
1 parent
b631c1da95
commit
96235cda9f
1 file changed
+14
-20
+14
-20
@@ -29,8 +29,8 @@ pub fn build_fal_flux_2_lora_angles(
|
||||
|
||||
let request = EnqueueFlux2LoraEditImageAngleRequest {
|
||||
image_urls,
|
||||
horizontal_angle: builder.horizontal_angle.map(wrap_angle_degrees),
|
||||
vertical_angle: builder.vertical_angle.map(wrap_angle_degrees),
|
||||
horizontal_angle: builder.horizontal_angle,
|
||||
vertical_angle: builder.vertical_angle.map(|v| v.clamp(0.0, 60.0)),
|
||||
zoom: builder.zoom,
|
||||
num_images: Some(num_images),
|
||||
image_size,
|
||||
@@ -112,13 +112,6 @@ fn plan_image_size(
|
||||
}
|
||||
}
|
||||
|
||||
/// Wrap an angle in degrees into the half-open interval [0, 360).
|
||||
/// Fal's flux-2-lora-gallery endpoint rejects negative angles (schema requires `ge: 0.0`),
|
||||
/// but treats the angle as a position on a circle, so -30° is equivalent to 330°.
|
||||
fn wrap_angle_degrees(v: f64) -> f64 {
|
||||
((v % 360.0) + 360.0) % 360.0
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -155,34 +148,35 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn passes_through_camera_params() {
|
||||
let req = unwrap_request(build_fal_flux_2_lora_angles(base()));
|
||||
let builder = GenerateImageRequestBuilder {
|
||||
vertical_angle: Some(15.0),
|
||||
..base()
|
||||
};
|
||||
let req = unwrap_request(build_fal_flux_2_lora_angles(builder));
|
||||
assert_eq!(req.horizontal_angle, Some(45.0));
|
||||
// base() sets vertical_angle to -15.0; wrap_angle_degrees rotates it around the circle to 345.0
|
||||
assert_eq!(req.vertical_angle, Some(345.0));
|
||||
assert_eq!(req.vertical_angle, Some(15.0));
|
||||
assert_eq!(req.zoom, Some(2.0));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn negative_vertical_angle_wraps_around_circle() {
|
||||
fn negative_vertical_angle_clamps_to_zero() {
|
||||
// Fal's flux-2-lora-gallery rejects vertical_angle < 0 (schema requires ge: 0.0).
|
||||
let builder = GenerateImageRequestBuilder {
|
||||
horizontal_angle: Some(315.0),
|
||||
vertical_angle: Some(-30.0),
|
||||
..base()
|
||||
};
|
||||
let req = unwrap_request(build_fal_flux_2_lora_angles(builder));
|
||||
assert_eq!(req.horizontal_angle, Some(315.0));
|
||||
assert_eq!(req.vertical_angle, Some(330.0));
|
||||
assert_eq!(req.vertical_angle, Some(0.0));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn angles_at_or_past_360_wrap_back_to_zero_range() {
|
||||
fn vertical_angle_above_sixty_clamps_to_sixty() {
|
||||
// Fal's flux-2-lora-gallery rejects vertical_angle > 60 (schema requires le: 60.0).
|
||||
let builder = GenerateImageRequestBuilder {
|
||||
horizontal_angle: Some(360.0),
|
||||
vertical_angle: Some(420.0),
|
||||
vertical_angle: Some(90.0),
|
||||
..base()
|
||||
};
|
||||
let req = unwrap_request(build_fal_flux_2_lora_angles(builder));
|
||||
assert_eq!(req.horizontal_angle, Some(0.0));
|
||||
assert_eq!(req.vertical_angle, Some(60.0));
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user