diff --git a/node-graph/gcore/src/vector/vector_nodes.rs b/node-graph/gcore/src/vector/vector_nodes.rs index 009d7ab357..b54909ced5 100644 --- a/node-graph/gcore/src/vector/vector_nodes.rs +++ b/node-graph/gcore/src/vector/vector_nodes.rs @@ -229,9 +229,13 @@ async fn repeat( let mut result_table = Instances::::default(); for index in 0..count { - let angle = index as f64 * angle / total; - let translation = index as f64 * direction / total; - let transform = DAffine2::from_angle(angle) * DAffine2::from_translation(translation); + let transform = if total == 0. { + DAffine2::IDENTITY + } else { + let angle = index as f64 * angle / total; + let translation = index as f64 * direction / total; + DAffine2::from_angle(angle) * DAffine2::from_translation(translation) + }; for instance in instance.instance_ref_iter() { let mut instance = instance.to_instance_cloned(); @@ -1892,7 +1896,7 @@ async fn area(ctx: impl Ctx + CloneVarArgs + ExtractAll, vector_data: impl Node< .instance_ref_iter() .map(|vector_data_instance| { let scale = vector_data_instance.transform.decompose_scale(); - vector_data_instance.instance.stroke_bezier_paths().map(|subpath| subpath.area(Some(1e-3), Some(1e-3))).sum::() * scale.x * scale.y + vector_data_instance.instance.stroke_bezpath_iter().map(|bezpath| bezpath.area()).sum::() * scale.x * scale.y }) .sum() }