diff --git a/Cargo.toml b/Cargo.toml index c0b425ae4..a9aa3e9f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,7 @@ keywords = ["creative", "sketch", "graphics", "audio"] license = "MIT" repository = "https://github.com/MindBuffer/nannou.git" homepage = "https://github.com/MindBuffer/nannou" +edition = "2018" [dependencies] approx = "0.1" diff --git a/examples/all_functions.rs b/examples/all_functions.rs index 47873bfbc..637b09531 100644 --- a/examples/all_functions.rs +++ b/examples/all_functions.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -42,7 +40,11 @@ fn model(app: &App) -> Model { fn event(_app: &App, _model: &mut Model, event: Event) { match event { - Event::WindowEvent { id: _, raw: _, simple: _ } => {} + Event::WindowEvent { + id: _, + raw: _, + simple: _, + } => {} Event::DeviceEvent(_device_id, _event) => {} Event::Update(_dt) => {} Event::Awakened => {} @@ -50,8 +52,7 @@ fn event(_app: &App, _model: &mut Model, event: Event) { } } -fn update(_app: &App, _model: &mut Model, _update: Update) { -} +fn update(_app: &App, _model: &mut Model, _update: Update) {} fn view(_app: &App, _model: &Model, frame: Frame) -> Frame { frame.clear(DARK_BLUE); @@ -81,59 +82,40 @@ fn window_event(_app: &App, _model: &mut Model, event: WindowEvent) { } } -fn raw_window_event(_app: &App, _model: &mut Model, _event: nannou::winit::WindowEvent) { -} +fn raw_window_event(_app: &App, _model: &mut Model, _event: nannou::winit::WindowEvent) {} -fn key_pressed(_app: &App, _model: &mut Model, _key: Key) { -} +fn key_pressed(_app: &App, _model: &mut Model, _key: Key) {} -fn key_released(_app: &App, _model: &mut Model, _key: Key) { -} +fn key_released(_app: &App, _model: &mut Model, _key: Key) {} -fn mouse_moved(_app: &App, _model: &mut Model, _pos: Point2) { -} +fn mouse_moved(_app: &App, _model: &mut Model, _pos: Point2) {} -fn mouse_pressed(_app: &App, _model: &mut Model, _button: MouseButton) { -} +fn mouse_pressed(_app: &App, _model: &mut Model, _button: MouseButton) {} -fn mouse_released(_app: &App, _model: &mut Model, _button: MouseButton) { -} +fn mouse_released(_app: &App, _model: &mut Model, _button: MouseButton) {} -fn mouse_wheel(_app: &App, _model: &mut Model, _dt: MouseScrollDelta, _phase: TouchPhase) { -} +fn mouse_wheel(_app: &App, _model: &mut Model, _dt: MouseScrollDelta, _phase: TouchPhase) {} -fn mouse_entered(_app: &App, _model: &mut Model) { -} +fn mouse_entered(_app: &App, _model: &mut Model) {} -fn mouse_exited(_app: &App, _model: &mut Model) { -} +fn mouse_exited(_app: &App, _model: &mut Model) {} -fn touch(_app: &App, _model: &mut Model, _touch: TouchEvent) { -} +fn touch(_app: &App, _model: &mut Model, _touch: TouchEvent) {} -fn touchpad_pressure(_app: &App, _model: &mut Model, _pressure: TouchpadPressure) { -} +fn touchpad_pressure(_app: &App, _model: &mut Model, _pressure: TouchpadPressure) {} -fn window_moved(_app: &App, _model: &mut Model, _pos: Point2) { -} +fn window_moved(_app: &App, _model: &mut Model, _pos: Point2) {} -fn window_resized(_app: &App, _model: &mut Model, _dim: Vector2) { -} +fn window_resized(_app: &App, _model: &mut Model, _dim: Vector2) {} -fn window_focused(_app: &App, _model: &mut Model) { -} +fn window_focused(_app: &App, _model: &mut Model) {} -fn window_unfocused(_app: &App, _model: &mut Model) { -} +fn window_unfocused(_app: &App, _model: &mut Model) {} -fn window_closed(_app: &App, _model: &mut Model) { -} +fn window_closed(_app: &App, _model: &mut Model) {} -fn hovered_file(_app: &App, _model: &mut Model, _path: std::path::PathBuf) { -} +fn hovered_file(_app: &App, _model: &mut Model, _path: std::path::PathBuf) {} -fn hovered_file_cancelled(_app: &App, _model: &mut Model) { -} +fn hovered_file_cancelled(_app: &App, _model: &mut Model) {} -fn dropped_file(_app: &App, _model: &mut Model, _path: std::path::PathBuf) { -} +fn dropped_file(_app: &App, _model: &mut Model, _path: std::path::PathBuf) {} diff --git a/examples/basics/1_nannou_events.rs b/examples/basics/1_nannou_events.rs index f5f4f2f04..5b0770ea7 100644 --- a/examples/basics/1_nannou_events.rs +++ b/examples/basics/1_nannou_events.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; // Every rust program has to have a main function which gets called when the program is run. @@ -20,8 +18,7 @@ fn model(app: &App) -> Model { } // Update the state of your application here. By default, this gets called right before `view`. -fn update(_app: &App, _model: &mut Model, _update: Update) { -} +fn update(_app: &App, _model: &mut Model, _update: Update) {} // We can also update the application based on events received by the window like key presses and // mouse movement here. diff --git a/examples/basics/2_variables_window_console.rs b/examples/basics/2_variables_window_console.rs index 881fa301f..95ce91906 100644 --- a/examples/basics/2_variables_window_console.rs +++ b/examples/basics/2_variables_window_console.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/basics/3_variable_scope.rs b/examples/basics/3_variable_scope.rs index 603530efb..8100fcc08 100644 --- a/examples/basics/3_variable_scope.rs +++ b/examples/basics/3_variable_scope.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; // This is how you make a global constant value. diff --git a/examples/basics/4_conditionals.rs b/examples/basics/4_conditionals.rs index 6ea9ddfd7..6e0892ce5 100644 --- a/examples/basics/4_conditionals.rs +++ b/examples/basics/4_conditionals.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/basics/5_loops.rs b/examples/basics/5_loops.rs index be6d4b535..cdb6d3e47 100644 --- a/examples/basics/5_loops.rs +++ b/examples/basics/5_loops.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/basics/6_functions.rs b/examples/basics/6_functions.rs index 9e4a8207c..ceb464b2d 100644 --- a/examples/basics/6_functions.rs +++ b/examples/basics/6_functions.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/basics/7_modules/7_modules.rs b/examples/basics/7_modules/7_modules.rs index 333fd24e8..e2ef79333 100644 --- a/examples/basics/7_modules/7_modules.rs +++ b/examples/basics/7_modules/7_modules.rs @@ -1,9 +1,7 @@ -extern crate nannou; - use nannou::prelude::*; mod ball; -use ball::Ball; +use crate::ball::Ball; fn main() { nannou::app(model).update(update).simple_window(view).run(); diff --git a/examples/basics/7_modules/ball.rs b/examples/basics/7_modules/ball.rs index 2e176a5ca..026226a67 100644 --- a/examples/basics/7_modules/ball.rs +++ b/examples/basics/7_modules/ball.rs @@ -1,4 +1,3 @@ -extern crate nannou; use nannou::prelude::*; pub struct Ball { diff --git a/examples/generative_design/color/p_1_0_01.rs b/examples/generative_design/color/p_1_0_01.rs index 7693865ad..0d6a21e34 100644 --- a/examples/generative_design/color/p_1_0_01.rs +++ b/examples/generative_design/color/p_1_0_01.rs @@ -28,8 +28,6 @@ * s : save png */ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/generative_design/color/p_1_1_01.rs b/examples/generative_design/color/p_1_1_01.rs index 26ae5437c..20ff310cc 100644 --- a/examples/generative_design/color/p_1_1_01.rs +++ b/examples/generative_design/color/p_1_1_01.rs @@ -1,4 +1,5 @@ -extern crate nannou; + + use nannou::prelude::*; diff --git a/examples/generative_design/color/p_1_2_3_01.rs b/examples/generative_design/color/p_1_2_3_01.rs index 55647f557..7df1b1eb2 100644 --- a/examples/generative_design/color/p_1_2_3_01.rs +++ b/examples/generative_design/color/p_1_2_3_01.rs @@ -9,8 +9,6 @@ * s : save png * c : save color palette */ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/generative_design/color/p_1_2_3_02.rs b/examples/generative_design/color/p_1_2_3_02.rs index d6a0786cd..0bb776051 100644 --- a/examples/generative_design/color/p_1_2_3_02.rs +++ b/examples/generative_design/color/p_1_2_3_02.rs @@ -8,7 +8,6 @@ * s : save png * c : save color palette */ -extern crate nannou; use nannou::prelude::*; fn main() { diff --git a/examples/laser/laser_frame_stream.rs b/examples/laser/laser_frame_stream.rs index 0392133fc..76377f428 100644 --- a/examples/laser/laser_frame_stream.rs +++ b/examples/laser/laser_frame_stream.rs @@ -1,7 +1,5 @@ //! A simple example demonstrating how to use draw various patterns via a laser frame streams. -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -42,14 +40,19 @@ fn model(app: &App) -> Model { .unwrap(); // Initialise the state that we want to live on the laser thread and spawn the stream. - let laser_model = Laser { test_pattern: TestPattern::Rectangle }; + let laser_model = Laser { + test_pattern: TestPattern::Rectangle, + }; let laser_api = lasy::Lasy::new(); let laser_stream = laser_api .new_frame_stream(laser_model, laser) .build() .unwrap(); - Model { laser_api, laser_stream } + Model { + laser_api, + laser_stream, + } } fn laser(laser: &mut Laser, frame: &mut lasy::Frame) { @@ -143,9 +146,12 @@ fn key_pressed(_app: &App, model: &mut Model, key: Key) { Key::Key6 => TestPattern::Spiral, _ => return, }; - model.laser_stream.send(|laser| { - laser.test_pattern = new_pattern; - }).unwrap(); + model + .laser_stream + .send(|laser| { + laser.test_pattern = new_pattern; + }) + .unwrap(); } fn view(_app: &App, _model: &Model, frame: Frame) -> Frame { diff --git a/examples/laser/laser_frame_stream_gui.rs b/examples/laser/laser_frame_stream_gui.rs index 7378fe397..5334bfef1 100644 --- a/examples/laser/laser_frame_stream_gui.rs +++ b/examples/laser/laser_frame_stream_gui.rs @@ -1,9 +1,6 @@ //! A clone of the `laser_frame_stream.rs` example that allows for configuring laser settings via a //! UI. -extern crate lasy; -extern crate nannou; - use nannou::geom::Rect; use nannou::prelude::*; use nannou::ui::prelude::*; @@ -56,7 +53,10 @@ struct RgbProfile { } #[derive(Clone, Copy)] -enum DrawMode { Lines, Points } +enum DrawMode { + Lines, + Points, +} // A collection of laser test patterns. We'll toggle between these with the numeric keys. #[derive(Copy, Clone)] @@ -114,7 +114,10 @@ impl Default for LaserSettings { use lasy::stream::frame::opt::InterpolationConfig; LaserSettings { point_hz: stream::DEFAULT_POINT_HZ, - latency_points: stream::points_per_frame(stream::DEFAULT_POINT_HZ, stream::DEFAULT_FRAME_HZ), + latency_points: stream::points_per_frame( + stream::DEFAULT_POINT_HZ, + stream::DEFAULT_FRAME_HZ, + ), frame_hz: stream::DEFAULT_FRAME_HZ, distance_per_point: InterpolationConfig::DEFAULT_DISTANCE_PER_POINT, blank_delay_points: InterpolationConfig::DEFAULT_BLANK_DELAY_POINTS, @@ -156,7 +159,10 @@ fn model(app: &App) -> Model { let laser_api2 = laser_api.clone(); std::thread::spawn(move || { let mut detected = std::collections::HashSet::new(); - for res in laser_api2.detect_dacs().expect("failed to start detecting DACs") { + for res in laser_api2 + .detect_dacs() + .expect("failed to start detecting DACs") + { let dac = res.expect("error occurred during DAC detection"); if detected.insert(dac.id()) { println!("{:#?}", dac); @@ -230,7 +236,11 @@ fn laser(laser: &mut Laser, frame: &mut lasy::Frame) { laser.color_profile.blue, ]; let weight = laser.point_weight; - let lit_p = |position| lasy::Point { position, color, weight }; + let lit_p = |position| lasy::Point { + position, + color, + weight, + }; // Retrieve some points to draw based on the pattern. match laser.test_pattern { @@ -312,7 +322,8 @@ fn update(_app: &App, model: &mut Model, _update: Update) { // First, check for new laser DACs. for dac in model.dac_rx.try_recv() { println!("Detected DAC {:?}!", dac.id()); - let stream = model.laser_api + let stream = model + .laser_api .new_frame_stream(model.laser_model.clone(), laser) .detected_dac(dac) .build() @@ -401,7 +412,9 @@ fn update(_app: &App, model: &mut Model, _update: Update) { { model.laser_model.point_weight = value as _; for stream in &model.laser_streams { - stream.send(move |laser| laser.point_weight = value as _).ok(); + stream + .send(move |laser| laser.point_weight = value as _) + .ok(); } } @@ -450,7 +463,10 @@ fn update(_app: &App, model: &mut Model, _update: Update) { .font_size(16) .set(model.ids.laser_path_interpolation_text, ui); - let label = format!("Distance per point: {:.2}", model.laser_settings.distance_per_point); + let label = format!( + "Distance per point: {:.2}", + model.laser_settings.distance_per_point + ); for value in slider(model.laser_settings.distance_per_point, 0.01, 1.0) .down(20.0) .label(&label) @@ -462,7 +478,10 @@ fn update(_app: &App, model: &mut Model, _update: Update) { } } - let label = format!("Blank delay: {} points", model.laser_settings.blank_delay_points); + let label = format!( + "Blank delay: {} points", + model.laser_settings.blank_delay_points + ); for value in slider(model.laser_settings.blank_delay_points as _, 0.0, 32.0) .label(&label) .set(model.ids.blank_delay_points_slider, ui) @@ -499,7 +518,9 @@ fn update(_app: &App, model: &mut Model, _update: Update) { { model.laser_model.color_profile.red = value; for stream in &model.laser_streams { - stream.send(move |model| model.color_profile.red = value).ok(); + stream + .send(move |model| model.color_profile.red = value) + .ok(); } } @@ -509,7 +530,9 @@ fn update(_app: &App, model: &mut Model, _update: Update) { { model.laser_model.color_profile.green = value; for stream in &model.laser_streams { - stream.send(move |model| model.color_profile.green = value).ok(); + stream + .send(move |model| model.color_profile.green = value) + .ok(); } } @@ -519,7 +542,9 @@ fn update(_app: &App, model: &mut Model, _update: Update) { { model.laser_model.color_profile.blue = value; for stream in &model.laser_streams { - stream.send(move |model| model.color_profile.blue = value).ok(); + stream + .send(move |model| model.color_profile.blue = value) + .ok(); } } } @@ -536,7 +561,9 @@ fn key_pressed(_app: &App, model: &mut Model, key: Key) { _ => return, }; for stream in &model.laser_streams { - stream.send(move |laser| laser.test_pattern = new_pattern).ok(); + stream + .send(move |laser| laser.test_pattern = new_pattern) + .ok(); } } diff --git a/examples/laser/laser_raw_stream.rs b/examples/laser/laser_raw_stream.rs index 660001801..176f7491f 100644 --- a/examples/laser/laser_raw_stream.rs +++ b/examples/laser/laser_raw_stream.rs @@ -1,9 +1,6 @@ //! A simple example demonstrating how to use the position of the mouse to control a single-point //! beam via a raw laser stream. -extern crate lasy; -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -29,14 +26,20 @@ fn model(app: &App) -> Model { .unwrap(); // Initialise the state that we want to live on the laser thread and spawn the stream. - let laser_model = Laser { point_idx: 0, position: pt2(0.0, 0.0) }; + let laser_model = Laser { + point_idx: 0, + position: pt2(0.0, 0.0), + }; let laser_api = lasy::Lasy::new(); let laser_stream = laser_api .new_raw_stream(laser_model, laser) .build() .unwrap(); - Model { laser_api, laser_stream } + Model { + laser_api, + laser_stream, + } } fn laser(laser: &mut Laser, buffer: &mut lasy::Buffer) { @@ -64,9 +67,12 @@ fn mouse_moved(app: &App, model: &mut Model, pos: Point2) { let laser_rect = geom::Rect::from_w_h(2.0, 2.0); let x = win_rect.x.map_value(pos.x, &laser_rect.x); let y = win_rect.y.map_value(pos.y, &laser_rect.y); - model.laser_stream.send(move |laser| { - laser.position = pt2(x, y); - }).unwrap(); + model + .laser_stream + .send(move |laser| { + laser.position = pt2(x, y); + }) + .unwrap(); } fn view(app: &App, _model: &Model, frame: Frame) -> Frame { diff --git a/examples/loop_mode.rs b/examples/loop_mode.rs index 20fa96692..49bb48311 100644 --- a/examples/loop_mode.rs +++ b/examples/loop_mode.rs @@ -7,8 +7,6 @@ //! //! https://docs.rs/nannou/latest/nannou/app/enum.LoopMode.html -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -20,8 +18,12 @@ struct Model; fn model(app: &App) -> Model { // Start in `Wait` mode. In other words, don't keep looping, just wait for events. app.set_loop_mode(LoopMode::wait(3)); - let _window = app.new_window() - .with_title(format!("`LoopMode` Demonstration - `{:?}`", app.loop_mode())) + let _window = app + .new_window() + .with_title(format!( + "`LoopMode` Demonstration - `{:?}`", + app.loop_mode() + )) .key_pressed(key_pressed) .view(view) .build() diff --git a/examples/multi_window.rs b/examples/multi_window.rs index 0c5d4a892..1a2f3276b 100644 --- a/examples/multi_window.rs +++ b/examples/multi_window.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -13,14 +11,28 @@ struct Model { } fn model(app: &App) -> Model { - let a = app.new_window().with_title("window a").event(event_a).build().unwrap(); - let b = app.new_window().with_title("window b").event(event_b).build().unwrap(); - let c = app.new_window().with_title("window c").event(event_c).build().unwrap(); + let a = app + .new_window() + .with_title("window a") + .event(event_a) + .build() + .unwrap(); + let b = app + .new_window() + .with_title("window b") + .event(event_b) + .build() + .unwrap(); + let c = app + .new_window() + .with_title("window c") + .event(event_c) + .build() + .unwrap(); Model { a, b, c } } -fn update(_app: &App, _model: &mut Model, _update: Update) { -} +fn update(_app: &App, _model: &mut Model, _update: Update) {} fn event_a(_app: &App, _model: &mut Model, event: WindowEvent) { println!("window a: {:?}", event); diff --git a/examples/nature_of_code/chp_01_vectors/1_10_motion101_acceleration.rs b/examples/nature_of_code/chp_01_vectors/1_10_motion101_acceleration.rs index 0323942f3..41306be76 100644 --- a/examples/nature_of_code/chp_01_vectors/1_10_motion101_acceleration.rs +++ b/examples/nature_of_code/chp_01_vectors/1_10_motion101_acceleration.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-10: Motion 101 Acceleration -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -59,7 +57,12 @@ impl Mover { } fn model(app: &App) -> Model { - let _window = app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + let _window = app + .new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let mover = Mover::new(app.window_rect()); Model { mover } } diff --git a/examples/nature_of_code/chp_01_vectors/1_11_motion101_acceleration_array.rs b/examples/nature_of_code/chp_01_vectors/1_11_motion101_acceleration_array.rs index 2c0e2cce2..bc3912361 100644 --- a/examples/nature_of_code/chp_01_vectors/1_11_motion101_acceleration_array.rs +++ b/examples/nature_of_code/chp_01_vectors/1_11_motion101_acceleration_array.rs @@ -8,8 +8,6 @@ // A "Mover" object stores position, velocity, and acceleration as vectors // The motion is controlled by affecting the acceleration // (in this case towards the mouse) -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_01_vectors/1_1_bouncingball_novectors.rs b/examples/nature_of_code/chp_01_vectors/1_1_bouncingball_novectors.rs index c08668411..353d44ec3 100644 --- a/examples/nature_of_code/chp_01_vectors/1_1_bouncingball_novectors.rs +++ b/examples/nature_of_code/chp_01_vectors/1_1_bouncingball_novectors.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-1: Bouncing Ball, no vectors -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -24,7 +22,12 @@ fn model(app: &App) -> Model { let x_speed = 2.5; let y_speed = 2.0; - let _window = app.new_window().with_dimensions(800, 200).view(view).build().unwrap(); + let _window = app + .new_window() + .with_dimensions(800, 200) + .view(view) + .build() + .unwrap(); Model { x, y, diff --git a/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors.rs b/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors.rs index 18160a1be..ae5c9e9b5 100644 --- a/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors.rs +++ b/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-2: Bouncing Ball, with Vector! -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -20,7 +18,12 @@ fn model(app: &App) -> Model { let position = pt2(100.0, 100.0); let velocity = vec2(2.5, 5.0); - let _window = app.new_window().with_dimensions(200, 200).view(view).build().unwrap(); + let _window = app + .new_window() + .with_dimensions(200, 200) + .view(view) + .build() + .unwrap(); Model { position, velocity } } diff --git a/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors_object.rs b/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors_object.rs index 2382df2e2..77b34e122 100644 --- a/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors_object.rs +++ b/examples/nature_of_code/chp_01_vectors/1_2_bouncingball_vectors_object.rs @@ -3,15 +3,10 @@ // http://natureofcode.com // // Example 1-2: Bouncing Ball, with Vector! -extern crate nannou; - use nannou::prelude::*; fn main() { - nannou::app(model) - .update(update) - .simple_window(view) - .run(); + nannou::app(model).update(update).simple_window(view).run(); } struct Model { diff --git a/examples/nature_of_code/chp_01_vectors/1_3_vector_subtraction.rs b/examples/nature_of_code/chp_01_vectors/1_3_vector_subtraction.rs index 4dbaa2384..be09dd3f2 100644 --- a/examples/nature_of_code/chp_01_vectors/1_3_vector_subtraction.rs +++ b/examples/nature_of_code/chp_01_vectors/1_3_vector_subtraction.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-3: Vector Subtraction -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_01_vectors/1_4_vector_multiplication.rs b/examples/nature_of_code/chp_01_vectors/1_4_vector_multiplication.rs index 8bf8e1bff..a13179dec 100644 --- a/examples/nature_of_code/chp_01_vectors/1_4_vector_multiplication.rs +++ b/examples/nature_of_code/chp_01_vectors/1_4_vector_multiplication.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-4: Vector Multiplication -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_01_vectors/1_5_vector_magnitude.rs b/examples/nature_of_code/chp_01_vectors/1_5_vector_magnitude.rs index b64064e63..3cfce8dbb 100644 --- a/examples/nature_of_code/chp_01_vectors/1_5_vector_magnitude.rs +++ b/examples/nature_of_code/chp_01_vectors/1_5_vector_magnitude.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-5: Vector Magnitude -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_01_vectors/1_6_vector_normalize.rs b/examples/nature_of_code/chp_01_vectors/1_6_vector_normalize.rs index 22668709c..232712147 100644 --- a/examples/nature_of_code/chp_01_vectors/1_6_vector_normalize.rs +++ b/examples/nature_of_code/chp_01_vectors/1_6_vector_normalize.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-6: Vector Normalize -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_01_vectors/1_7_motion101.rs b/examples/nature_of_code/chp_01_vectors/1_7_motion101.rs index 3bc6fa300..c7ba4f7b4 100644 --- a/examples/nature_of_code/chp_01_vectors/1_7_motion101.rs +++ b/examples/nature_of_code/chp_01_vectors/1_7_motion101.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-7: Motion 101 -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -58,7 +56,11 @@ impl Mover { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let mover = Mover::new(app.window_rect()); Model { mover } } diff --git a/examples/nature_of_code/chp_01_vectors/1_8_motion101_acceleration.rs b/examples/nature_of_code/chp_01_vectors/1_8_motion101_acceleration.rs index 263e872b0..1edf6e698 100644 --- a/examples/nature_of_code/chp_01_vectors/1_8_motion101_acceleration.rs +++ b/examples/nature_of_code/chp_01_vectors/1_8_motion101_acceleration.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-8: Motion 101 Acceleration -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -68,7 +66,11 @@ impl Mover { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let mover = Mover::new(app.window_rect()); Model { mover } } diff --git a/examples/nature_of_code/chp_01_vectors/1_9_motion101_acceleration.rs b/examples/nature_of_code/chp_01_vectors/1_9_motion101_acceleration.rs index 77498a282..78c6c6ed6 100644 --- a/examples/nature_of_code/chp_01_vectors/1_9_motion101_acceleration.rs +++ b/examples/nature_of_code/chp_01_vectors/1_9_motion101_acceleration.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 1-9: Motion 101 Acceleration -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -70,7 +68,11 @@ impl Mover { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let mover = Mover::new(app.window_rect()); Model { mover } } diff --git a/examples/nature_of_code/chp_02_forces/2_10_exercise_attract_repel.rs b/examples/nature_of_code/chp_02_forces/2_10_exercise_attract_repel.rs index d1d05b539..f5d3b810f 100644 --- a/examples/nature_of_code/chp_02_forces/2_10_exercise_attract_repel.rs +++ b/examples/nature_of_code/chp_02_forces/2_10_exercise_attract_repel.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 2-10 Attract Repel -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_1_forces.rs b/examples/nature_of_code/chp_02_forces/2_1_forces.rs index 407154575..c89b61a6f 100644 --- a/examples/nature_of_code/chp_02_forces/2_1_forces.rs +++ b/examples/nature_of_code/chp_02_forces/2_1_forces.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-1: Forces -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_2_forces_many.rs b/examples/nature_of_code/chp_02_forces/2_2_forces_many.rs index e04afb952..d2359779c 100644 --- a/examples/nature_of_code/chp_02_forces/2_2_forces_many.rs +++ b/examples/nature_of_code/chp_02_forces/2_2_forces_many.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-2: Forces Many -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_3_forces_many_real_gravity.rs b/examples/nature_of_code/chp_02_forces/2_3_forces_many_real_gravity.rs index ac68dff64..f303cc083 100644 --- a/examples/nature_of_code/chp_02_forces/2_3_forces_many_real_gravity.rs +++ b/examples/nature_of_code/chp_02_forces/2_3_forces_many_real_gravity.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-3: Forces Many Real Gravity -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_4_forces_friction.rs b/examples/nature_of_code/chp_02_forces/2_4_forces_friction.rs index 968141b30..14892d1e8 100644 --- a/examples/nature_of_code/chp_02_forces/2_4_forces_friction.rs +++ b/examples/nature_of_code/chp_02_forces/2_4_forces_friction.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-4: Forces Friction -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_4_forces_no_friction.rs b/examples/nature_of_code/chp_02_forces/2_4_forces_no_friction.rs index 422fd225e..ac6e0314b 100644 --- a/examples/nature_of_code/chp_02_forces/2_4_forces_no_friction.rs +++ b/examples/nature_of_code/chp_02_forces/2_4_forces_no_friction.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-4: Forces No Friction -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_5_fluid_resistance.rs b/examples/nature_of_code/chp_02_forces/2_5_fluid_resistance.rs index f46041720..921c5e23d 100644 --- a/examples/nature_of_code/chp_02_forces/2_5_fluid_resistance.rs +++ b/examples/nature_of_code/chp_02_forces/2_5_fluid_resistance.rs @@ -7,8 +7,6 @@ // Demonstration of multiple forces acting on bodies (Mover type) // Bodies experience gravity continuously // Bodies experience fluid resistance when in *water* -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -171,10 +169,10 @@ fn update(app: &App, m: &mut Model, _update: Update) { // Apply drag force to Mover m.movers[i].apply_force(drag_force); } - + // Gravity is scaled by mass here! let gravity = vec2(0.0, -0.1 * m.movers[i].mass); - + // Apply gravity m.movers[i].apply_force(gravity); m.movers[i].update(); diff --git a/examples/nature_of_code/chp_02_forces/2_6_attraction.rs b/examples/nature_of_code/chp_02_forces/2_6_attraction.rs index 49a64940d..35dc70cd2 100644 --- a/examples/nature_of_code/chp_02_forces/2_6_attraction.rs +++ b/examples/nature_of_code/chp_02_forces/2_6_attraction.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-6: Attraction -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_7_attraction_many.rs b/examples/nature_of_code/chp_02_forces/2_7_attraction_many.rs index 9db6513fc..1a3b202b1 100644 --- a/examples/nature_of_code/chp_02_forces/2_7_attraction_many.rs +++ b/examples/nature_of_code/chp_02_forces/2_7_attraction_many.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-7: Attraction Many -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_8_mutual_attraction.rs b/examples/nature_of_code/chp_02_forces/2_8_mutual_attraction.rs index c5ba8f5ed..ebb63d069 100644 --- a/examples/nature_of_code/chp_02_forces/2_8_mutual_attraction.rs +++ b/examples/nature_of_code/chp_02_forces/2_8_mutual_attraction.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-8: Mutual Attraction -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_02_forces/2_forces_many_mutual_boundaries.rs b/examples/nature_of_code/chp_02_forces/2_forces_many_mutual_boundaries.rs index 2178431c5..8164b4053 100644 --- a/examples/nature_of_code/chp_02_forces/2_forces_many_mutual_boundaries.rs +++ b/examples/nature_of_code/chp_02_forces/2_forces_many_mutual_boundaries.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 2-0 Many Mutual Boundaries -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_03_oscillation/3_01_angular_motion.rs b/examples/nature_of_code/chp_03_oscillation/3_01_angular_motion.rs index d3a967200..183c65062 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_01_angular_motion.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_01_angular_motion.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 3-01: Angular Motion -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -21,7 +19,11 @@ fn model(app: &App) -> Model { let angle = 0.0; let a_velocity = 0.0; let a_acceleration = 0.0001; - app.new_window().with_dimensions(800, 200).view(view).build().unwrap(); + app.new_window() + .with_dimensions(800, 200) + .view(view) + .build() + .unwrap(); Model { angle, a_velocity, diff --git a/examples/nature_of_code/chp_03_oscillation/3_02_forces_angular_motion.rs b/examples/nature_of_code/chp_03_oscillation/3_02_forces_angular_motion.rs index e1962a18c..04e478350 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_02_forces_angular_motion.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_02_forces_angular_motion.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 3-02: Forces Angular Motion -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_03_oscillation/3_04_exercise_spiral.rs b/examples/nature_of_code/chp_03_oscillation/3_04_exercise_spiral.rs index 42febffa2..02569351f 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_04_exercise_spiral.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_04_exercise_spiral.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 3-04: Spiral -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -20,7 +18,11 @@ fn model(app: &App) -> Model { let r = 0.0; let theta = 0.0; - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); Model { r, theta } } diff --git a/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian.rs b/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian.rs index c23d5c65c..ad6096821 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 3-04: Spiral -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian_trail.rs b/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian_trail.rs index 5124e6a83..a8255b061 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian_trail.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_04_polar_to_cartesian_trail.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 3-04: Spiral -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_03_oscillation/3_05_simple_harmonic_motion.rs b/examples/nature_of_code/chp_03_oscillation/3_05_simple_harmonic_motion.rs index 0ff5f642a..67847388b 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_05_simple_harmonic_motion.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_05_simple_harmonic_motion.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-5: Simple Harmonic Motion -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_03_oscillation/3_06_simple_harmonic_motion.rs b/examples/nature_of_code/chp_03_oscillation/3_06_simple_harmonic_motion.rs index 3fa4f1fab..430bee7dc 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_06_simple_harmonic_motion.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_06_simple_harmonic_motion.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 5-6: Simple Harmonic Motion -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -20,7 +18,11 @@ fn model(app: &App) -> Model { let angle = 0.0; let a_velocity = 0.03; - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); Model { angle, a_velocity } } diff --git a/examples/nature_of_code/chp_03_oscillation/3_07_oscillating_objects.rs b/examples/nature_of_code/chp_03_oscillation/3_07_oscillating_objects.rs index 77d9578a1..87419dc4d 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_07_oscillating_objects.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_07_oscillating_objects.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 5-07: Oscillating Objects -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/nature_of_code/chp_03_oscillation/3_09_wave.rs b/examples/nature_of_code/chp_03_oscillation/3_09_wave.rs index f83859c81..ffd4fc006 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_09_wave.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_09_wave.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-9: Wave -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -17,7 +15,11 @@ struct Model { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let start_angle = 0.0; let angle_vel = 0.23; Model { diff --git a/examples/nature_of_code/chp_03_oscillation/3_09_wave_a.rs b/examples/nature_of_code/chp_03_oscillation/3_09_wave_a.rs index 9281687af..cb0bafbbd 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_09_wave_a.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_09_wave_a.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-9: Wave_A -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -17,7 +15,11 @@ struct Model { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(200, 200).view(view).build().unwrap(); + app.new_window() + .with_dimensions(200, 200) + .view(view) + .build() + .unwrap(); let start_angle = 0.0; let angle_vel = 0.05; Model { diff --git a/examples/nature_of_code/chp_03_oscillation/3_09_wave_b.rs b/examples/nature_of_code/chp_03_oscillation/3_09_wave_b.rs index a7b62290d..bab785dc0 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_09_wave_b.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_09_wave_b.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-9: Wave_B -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -17,7 +15,11 @@ struct Model { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(250, 200).view(view).build().unwrap(); + app.new_window() + .with_dimensions(250, 200) + .view(view) + .build() + .unwrap(); let start_angle = 0.0; let angle_vel = 0.2; Model { diff --git a/examples/nature_of_code/chp_03_oscillation/3_09_wave_c.rs b/examples/nature_of_code/chp_03_oscillation/3_09_wave_c.rs index bea09e104..c15758568 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_09_wave_c.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_09_wave_c.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-9: Wave_C -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -17,7 +15,11 @@ struct Model { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(200, 200).view(view).build().unwrap(); + app.new_window() + .with_dimensions(200, 200) + .view(view) + .build() + .unwrap(); let start_angle = 0.0; let angle_vel = 0.4; Model { diff --git a/examples/nature_of_code/chp_03_oscillation/3_10_exercise_oop_wave.rs b/examples/nature_of_code/chp_03_oscillation/3_10_exercise_oop_wave.rs index 63cf0d7a4..93e5ad992 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_10_exercise_oop_wave.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_10_exercise_oop_wave.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Exercise 3-10: OOP Wave -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -76,7 +74,11 @@ impl Wave { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(750, 200).view(view).build().unwrap(); + app.new_window() + .with_dimensions(750, 200) + .view(view) + .build() + .unwrap(); let wave0 = Wave::new(pt2(-325.0, 25.0), 100.0, 20.0, 500.0); let wave1 = Wave::new(pt2(-75.0, 0.0), 300.0, 40.0, 220.0); Model { wave0, wave1 } diff --git a/examples/nature_of_code/chp_03_oscillation/3_extra_oscillating_up_and_down.rs b/examples/nature_of_code/chp_03_oscillation/3_extra_oscillating_up_and_down.rs index 456549593..551928dcc 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_extra_oscillating_up_and_down.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_extra_oscillating_up_and_down.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-9: Wave_A -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -16,7 +14,11 @@ struct Model { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(400, 400).view(view).build().unwrap(); + app.new_window() + .with_dimensions(400, 400) + .view(view) + .build() + .unwrap(); let angle = 0.0; Model { angle } } diff --git a/examples/nature_of_code/chp_03_oscillation/3_multiple_oscillations.rs b/examples/nature_of_code/chp_03_oscillation/3_multiple_oscillations.rs index 5ff4928bf..cf906da72 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_multiple_oscillations.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_multiple_oscillations.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // Example 3-x: Multiple Oscillations -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -29,7 +27,11 @@ fn model(app: &App) -> Model { let a_velocity2 = 0.3; let amplitude2 = 10.0; - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); Model { angle1, a_velocity1, diff --git a/examples/nature_of_code/chp_03_oscillation/3_oop_wave_particles.rs b/examples/nature_of_code/chp_03_oscillation/3_oop_wave_particles.rs index 8dbcc399a..e50a0b6b1 100644 --- a/examples/nature_of_code/chp_03_oscillation/3_oop_wave_particles.rs +++ b/examples/nature_of_code/chp_03_oscillation/3_oop_wave_particles.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // example 3-x: OOP Wave Particle -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -97,7 +95,11 @@ impl Wave { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(750, 200).view(view).build().unwrap(); + app.new_window() + .with_dimensions(750, 200) + .view(view) + .build() + .unwrap(); let wave0 = Wave::new(pt2(-325.0, 25.0), 100.0, 20.0, 500.0); let wave1 = Wave::new(pt2(-75.0, 0.0), 300.0, 40.0, 220.0); Model { wave0, wave1 } diff --git a/examples/nature_of_code/chp_04_systems/4_01_single_particle.rs b/examples/nature_of_code/chp_04_systems/4_01_single_particle.rs index d58d00725..87e194066 100644 --- a/examples/nature_of_code/chp_04_systems/4_01_single_particle.rs +++ b/examples/nature_of_code/chp_04_systems/4_01_single_particle.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // example 4-01: Single Particle -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -65,7 +63,11 @@ impl Particle { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let p = Particle::new(pt2(0.0, app.window_rect().top() - 20.0)); Model { p } } diff --git a/examples/nature_of_code/chp_04_systems/4_02_vector_particle.rs b/examples/nature_of_code/chp_04_systems/4_02_vector_particle.rs index 6392627f9..003e6ee3a 100644 --- a/examples/nature_of_code/chp_04_systems/4_02_vector_particle.rs +++ b/examples/nature_of_code/chp_04_systems/4_02_vector_particle.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // example 4-02: Vector Particle -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -66,7 +64,11 @@ impl Particle { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let particles = Vec::new(); Model { particles } } diff --git a/examples/nature_of_code/chp_04_systems/4_03_particle_system_type.rs b/examples/nature_of_code/chp_04_systems/4_03_particle_system_type.rs index c2dd67231..5524a7300 100644 --- a/examples/nature_of_code/chp_04_systems/4_03_particle_system_type.rs +++ b/examples/nature_of_code/chp_04_systems/4_03_particle_system_type.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // example 4-03: Particle System Type -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -98,7 +96,11 @@ impl ParticleSystem { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let (_w, h) = app.window_rect().w_h(); let ps = ParticleSystem::new(pt2(0.0, (h as f32 / 2.0) - 50.0)); Model { ps } diff --git a/examples/nature_of_code/chp_04_systems/4_04_system_of_systems.rs b/examples/nature_of_code/chp_04_systems/4_04_system_of_systems.rs index b34e166aa..81e6be194 100644 --- a/examples/nature_of_code/chp_04_systems/4_04_system_of_systems.rs +++ b/examples/nature_of_code/chp_04_systems/4_04_system_of_systems.rs @@ -3,8 +3,6 @@ // http://natureofcode.com // // example 4-04: System of Systems -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -121,7 +119,8 @@ fn model(app: &App) -> Model { } fn mouse_pressed(app: &App, m: &mut Model, _button: MouseButton) { - m.systems.push(ParticleSystem::new(1, pt2(app.mouse.x, app.mouse.y))); + m.systems + .push(ParticleSystem::new(1, pt2(app.mouse.x, app.mouse.y))); } fn update(_app: &App, m: &mut Model, _update: Update) { diff --git a/examples/nature_of_code/chp_06_agents/6_01_seek.rs b/examples/nature_of_code/chp_06_agents/6_01_seek.rs index 0e8e811fc..67da3b2eb 100644 --- a/examples/nature_of_code/chp_06_agents/6_01_seek.rs +++ b/examples/nature_of_code/chp_06_agents/6_01_seek.rs @@ -7,8 +7,6 @@ // Implements Craig Reynold's autonomous steering behaviors // One vehicle "seeks" // See: http://www.red3d.com/cwr/ -extern crate nannou; - use nannou::prelude::*; use nannou::Draw; @@ -68,7 +66,11 @@ impl Vehicle { } fn model(app: &App) -> Model { - app.new_window().with_dimensions(640, 360).view(view).build().unwrap(); + app.new_window() + .with_dimensions(640, 360) + .view(view) + .build() + .unwrap(); let middle = app.window_rect().xy(); let vehicle = Vehicle::new(middle.x, middle.y); Model { vehicle } @@ -132,7 +134,7 @@ fn display(vehicle: &Vehicle, draw: &Draw) { } = vehicle; // Draw a triangle rotated in the direction of velocity // This calculation is wrong - let theta = (velocity.angle() + PI/2.0) * -1.0; + let theta = (velocity.angle() + PI / 2.0) * -1.0; let points = vec![ pt3(0.0, -r * 2.0, 0.0), pt3(-r, r * 2.0, 0.0), diff --git a/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_figures.rs b/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_figures.rs index de546d6ea..8600dd5d0 100644 --- a/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_figures.rs +++ b/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_figures.rs @@ -6,8 +6,6 @@ // Simple demonstration of a Wolfram 1-dimensional cellular automata -extern crate nannou; - use nannou::prelude::*; use std::ops::Range; diff --git a/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_simple.rs b/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_simple.rs index 7f7b59f36..4a764721c 100644 --- a/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_simple.rs +++ b/examples/nature_of_code/chp_07_cellular_automata/7_01_wolfram_ca_simple.rs @@ -6,8 +6,6 @@ // Simple demonstration of a Wolfram 1-dimensional cellular automata -extern crate nannou; - use nannou::prelude::*; use std::ops::Range; diff --git a/examples/nature_of_code/chp_07_cellular_automata/7_02_game_of_life_simple.rs b/examples/nature_of_code/chp_07_cellular_automata/7_02_game_of_life_simple.rs index 8a492f4df..ed09c8c58 100644 --- a/examples/nature_of_code/chp_07_cellular_automata/7_02_game_of_life_simple.rs +++ b/examples/nature_of_code/chp_07_cellular_automata/7_02_game_of_life_simple.rs @@ -10,8 +10,6 @@ // to describe each individual cell and a "cellular automata" class // to describe a collection of cells -extern crate nannou; - use nannou::prelude::*; use std::ops::Range; diff --git a/examples/nature_of_code/chp_07_cellular_automata/7_03_game_of_life_oop.rs b/examples/nature_of_code/chp_07_cellular_automata/7_03_game_of_life_oop.rs index 8bfca1cea..87ea45cc0 100644 --- a/examples/nature_of_code/chp_07_cellular_automata/7_03_game_of_life_oop.rs +++ b/examples/nature_of_code/chp_07_cellular_automata/7_03_game_of_life_oop.rs @@ -7,8 +7,6 @@ // A basic implementation of John Conway's Game of Life CA // Each cell is now an object! -extern crate nannou; - use nannou::prelude::*; use std::ops::Range; diff --git a/examples/nature_of_code/chp_07_cellular_automata/7_04_exercise_wolfram_ca_scrolling.rs b/examples/nature_of_code/chp_07_cellular_automata/7_04_exercise_wolfram_ca_scrolling.rs index fbb58529f..fe6d40188 100644 --- a/examples/nature_of_code/chp_07_cellular_automata/7_04_exercise_wolfram_ca_scrolling.rs +++ b/examples/nature_of_code/chp_07_cellular_automata/7_04_exercise_wolfram_ca_scrolling.rs @@ -8,8 +8,6 @@ // with the system scrolling by // Also implements wrap around -extern crate nannou; - use nannou::prelude::*; use std::ops::Range; @@ -97,8 +95,8 @@ impl Ca { if self.matrix[col][row] == 1 { fill = 0.0; } - let x = ((self.w as i32 / 2) + col as i32 * self.w as i32) as f32 - - rect.right() as f32; + let x = + ((self.w as i32 / 2) + col as i32 * self.w as i32) as f32 - rect.right() as f32; let y = rect.top() - (self.w / 2) as f32 - ((y - 1) * self.w as i32) as f32; draw.rect() .x_y(x, y) diff --git a/examples/osc_receiver.rs b/examples/osc_receiver.rs index f5c3858d1..0eb095f66 100644 --- a/examples/osc_receiver.rs +++ b/examples/osc_receiver.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::osc; use nannou::prelude::*; use nannou::ui::prelude::*; diff --git a/examples/osc_sender.rs b/examples/osc_sender.rs index 129ecb676..d01c2336e 100644 --- a/examples/osc_sender.rs +++ b/examples/osc_sender.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::osc::{self, Type}; use nannou::prelude::*; use nannou::ui::prelude::*; diff --git a/examples/simple_audio.rs b/examples/simple_audio.rs index d17316a1a..0d6fb42dc 100644 --- a/examples/simple_audio.rs +++ b/examples/simple_audio.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::audio::{self, Buffer}; use nannou::prelude::*; use std::f64::consts::PI; @@ -19,9 +17,16 @@ struct Audio { fn model(app: &App) -> Model { // Create a window to receive key pressed events. - app.new_window().key_pressed(key_pressed).view(view).build().unwrap(); + app.new_window() + .key_pressed(key_pressed) + .view(view) + .build() + .unwrap(); // Initialise the state that we want to live on the audio thread. - let model = Audio { phase: 0.0, hz: 440.0 }; + let model = Audio { + phase: 0.0, + hz: 440.0, + }; let stream = app.audio.new_output_stream(model, audio).build().unwrap(); Model { stream } } diff --git a/examples/simple_draw.rs b/examples/simple_draw.rs index 754166e6a..e49b40a1c 100644 --- a/examples/simple_draw.rs +++ b/examples/simple_draw.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/simple_mesh.rs b/examples/simple_mesh.rs index 1207496ba..b7abcfdce 100644 --- a/examples/simple_mesh.rs +++ b/examples/simple_mesh.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/simple_polygon.rs b/examples/simple_polygon.rs index c11e983a9..a74a4b99d 100644 --- a/examples/simple_polygon.rs +++ b/examples/simple_polygon.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/simple_polyline.rs b/examples/simple_polyline.rs index 1e61a9df1..7685adbd9 100644 --- a/examples/simple_polyline.rs +++ b/examples/simple_polyline.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -23,7 +21,7 @@ fn view(app: &App, frame: Frame) -> Frame { let vertices = (0..n_points) // A sine wave mapped to the range of the window. .map(|i| { - let x = map_range(i, 0, n_points-1, win.left(), win.right()); + let x = map_range(i, 0, n_points - 1, win.left(), win.right()); let fract = i as f32 / n_points as f32; let amp = (t + fract * hz * TAU).sin(); let y = map_range(amp, -1.0, 1.0, win.bottom() * 0.75, win.top() * 0.75); diff --git a/examples/simple_ui.rs b/examples/simple_ui.rs index 8d96e87a2..d19746efb 100644 --- a/examples/simple_ui.rs +++ b/examples/simple_ui.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use nannou::ui::prelude::*; @@ -116,14 +114,15 @@ fn update(_app: &App, model: &mut Model, _update: Update) { model.position.y, -200.0, 200.0, - ).down(10.0) - .w_h(200.0, 200.0) - .label("Position") - .label_font_size(15) - .rgb(0.3, 0.3, 0.3) - .label_rgb(1.0, 1.0, 1.0) - .border(0.0) - .set(model.ids.position, ui) + ) + .down(10.0) + .w_h(200.0, 200.0) + .label("Position") + .label_font_size(15) + .rgb(0.3, 0.3, 0.3) + .label_rgb(1.0, 1.0, 1.0) + .border(0.0) + .set(model.ids.position, ui) { model.position = Point2::new(x, y); } diff --git a/examples/simple_window.rs b/examples/simple_window.rs index 13c0b64c0..a203ca8f9 100644 --- a/examples/simple_window.rs +++ b/examples/simple_window.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -13,7 +11,8 @@ struct Model { fn model(app: &App) -> Model { // Create a new window! Store the ID so we can refer to it later. - let _window = app.new_window() + let _window = app + .new_window() .with_dimensions(512, 512) .with_title("nannou") .view(view) // The function that will be called for presenting graphics to a frame. diff --git a/examples/template_app.rs b/examples/template_app.rs index cc7be5fb1..f399790d6 100644 --- a/examples/template_app.rs +++ b/examples/template_app.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { @@ -11,7 +9,8 @@ struct Model { } fn model(app: &App) -> Model { - let _window = app.new_window() + let _window = app + .new_window() .with_dimensions(720, 720) .view(view) .event(window_event) @@ -20,8 +19,7 @@ fn model(app: &App) -> Model { Model { _window } } -fn update(_app: &App, _model: &mut Model, _update: Update) { -} +fn update(_app: &App, _model: &mut Model, _update: Update) {} fn window_event(_app: &App, _model: &mut Model, event: WindowEvent) { match event { diff --git a/examples/template_sketch.rs b/examples/template_sketch.rs index ecdeb1b84..4125c2666 100644 --- a/examples/template_sketch.rs +++ b/examples/template_sketch.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/vulkan/vk_compute_shader.rs b/examples/vulkan/vk_compute_shader.rs index 3d537ce3f..5baf39cf1 100644 --- a/examples/vulkan/vk_compute_shader.rs +++ b/examples/vulkan/vk_compute_shader.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use std::sync::Arc; diff --git a/examples/vulkan/vk_debug.rs b/examples/vulkan/vk_debug.rs index 9465e6a30..1ec8f41ab 100644 --- a/examples/vulkan/vk_debug.rs +++ b/examples/vulkan/vk_debug.rs @@ -9,8 +9,6 @@ //! allow you to specify your own custom set of validation layers. To determine what layers are //! available on a system, see the `nannou::vk::instance::layers_list` function. -extern crate nannou; - use nannou::prelude::*; fn main() { diff --git a/examples/vulkan/vk_hotload.rs b/examples/vulkan/vk_hotload.rs index 2cba19b24..3925b3ee7 100644 --- a/examples/vulkan/vk_hotload.rs +++ b/examples/vulkan/vk_hotload.rs @@ -1,6 +1,3 @@ -extern crate nannou; -extern crate shade_runner; - use nannou::prelude::*; use std::cell::RefCell; use std::ffi::CStr; @@ -49,11 +46,19 @@ fn model(app: &App) -> Model { }; // Get the paths to your vertex and fragment shaders. - let vert_path = concat!(env!("CARGO_MANIFEST_DIR"), "/examples/vulkan/shaders/hotload_vert.glsl"); - let frag_path = concat!(env!("CARGO_MANIFEST_DIR"), "/examples/vulkan/shaders/hotload_frag.glsl"); + let vert_path = concat!( + env!("CARGO_MANIFEST_DIR"), + "/examples/vulkan/shaders/hotload_vert.glsl" + ); + let frag_path = concat!( + env!("CARGO_MANIFEST_DIR"), + "/examples/vulkan/shaders/hotload_frag.glsl" + ); // Create a watcher that will reload both shaders if there is any change to the // parent directory eg. '/examples/vulkan/shaders/' - let shade_watcher = shade_runner::Watch::create(vert_path, frag_path, Duration::from_millis(50)).expect("failed to create watcher"); + let shade_watcher = + shade_runner::Watch::create(vert_path, frag_path, Duration::from_millis(50)) + .expect("failed to create watcher"); // Wait on the first message, // which is the shaders compiling and parsing. // The message is a Result which indicates if @@ -63,8 +68,8 @@ fn model(app: &App) -> Model { .recv() .expect("Failed to receive shader") .expect("failed to compile shader"); - // Create the shader module from the compiled - // shader in the message. It is simply + // Create the shader module from the compiled + // shader in the message. It is simply // a Vec. let vs = unsafe { vk::pipeline::shader::ShaderModule::from_words(device.clone(), &shade_msg.shaders.vertex) @@ -221,7 +226,7 @@ fn update_pipeline(model: &mut Model) { // Here we use the other part of the latest message // from shade_runner. It is the entry point for vulkano // to use your compiled shader. - // If there is any errors here make sure you have the + // If there is any errors here make sure you have the // same version of vulkano in your application and shade_runner. // Cargo patch can be handy for this. let entry = shade_msg.entry.clone(); diff --git a/examples/vulkan/vk_image.rs b/examples/vulkan/vk_image.rs index a37e9f13a..a55645c8e 100644 --- a/examples/vulkan/vk_image.rs +++ b/examples/vulkan/vk_image.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use std::cell::RefCell; use std::sync::Arc; @@ -131,8 +129,12 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { let dynamic_state = vk::DynamicState::default().viewports(vec![viewport]); // Update view_fbo in case of resize. - model.view_fbo.borrow_mut() - .update(&frame, model.render_pass.clone(), |builder, image| builder.add(image)) + model + .view_fbo + .borrow_mut() + .update(&frame, model.render_pass.clone(), |builder, image| { + builder.add(image) + }) .unwrap(); let clear_values = vec![[0.0, 1.0, 0.0, 1.0].into()]; @@ -191,7 +193,7 @@ layout(push_constant) uniform PushConstantData { } pc; void main() { - vec4 c = vec4( abs(tex_coords.x + sin(pc.time)), tex_coords.x, tex_coords.y * abs(cos(pc.time)), 1.0); + vec4 c = vec4( abs(tex_coords.x + sin(pc.time)), tex_coords.x, tex_coords.y * abs(cos(pc.time)), 1.0); f_color = texture(tex, tex_coords) + c; }" } diff --git a/examples/vulkan/vk_image_sequence.rs b/examples/vulkan/vk_image_sequence.rs index 887618ed0..7354494bb 100644 --- a/examples/vulkan/vk_image_sequence.rs +++ b/examples/vulkan/vk_image_sequence.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use std::cell::RefCell; use std::sync::Arc; @@ -139,8 +137,12 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { let dynamic_state = vk::DynamicState::default().viewports(vec![viewport]); // Update view_fbo in case of window resize. - model.view_fbo.borrow_mut() - .update(&frame, model.render_pass.clone(), |builder, image| builder.add(image)) + model + .view_fbo + .borrow_mut() + .update(&frame, model.render_pass.clone(), |builder, image| { + builder.add(image) + }) .unwrap(); let clear_values = vec![[0.0, 1.0, 0.0, 1.0].into()]; @@ -152,11 +154,7 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { frame .add_commands() - .begin_render_pass( - model.view_fbo.borrow().expect_inner(), - false, - clear_values, - ) + .begin_render_pass(model.view_fbo.borrow().expect_inner(), false, clear_values) .unwrap() .draw( model.pipeline.clone(), @@ -213,7 +211,7 @@ layout(push_constant) uniform PushConstantData { } pc; void main() { - vec4 c = vec4( abs(tex_coords.x + sin(pc.time)), tex_coords.x, tex_coords.y * abs(cos(pc.time)), 1.0); + vec4 c = vec4( abs(tex_coords.x + sin(pc.time)), tex_coords.x, tex_coords.y * abs(cos(pc.time)), 1.0); f_color = texture(tex, vec3(tex_coords, pc.sequence_idx)) + (c*0.6); }" } diff --git a/examples/vulkan/vk_images.rs b/examples/vulkan/vk_images.rs index fe84061a3..6fde323e3 100644 --- a/examples/vulkan/vk_images.rs +++ b/examples/vulkan/vk_images.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use std::cell::RefCell; use std::sync::Arc; @@ -148,8 +146,12 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { let dynamic_state = vk::DynamicState::default().viewports(vec![viewport]); // Update view_fbo in case of window resize. - model.view_fbo.borrow_mut() - .update(&frame, model.render_pass.clone(), |builder, image| builder.add(image)) + model + .view_fbo + .borrow_mut() + .update(&frame, model.render_pass.clone(), |builder, image| { + builder.add(image) + }) .unwrap(); let clear_values = vec![[0.0, 1.0, 0.0, 1.0].into()]; @@ -208,7 +210,7 @@ void main() { uv.y *= -1.0; float aspect = uv.x / uv.y; - float squares = pow(2.0,2.0); + float squares = pow(2.0,2.0); float sw = sqrt(squares) / aspect; float sh = sqrt(squares); @@ -222,11 +224,11 @@ void main() { if(a == 0) { c += texture(tex1, vec2(vx,vy)); } else if(a == 1) { - c += texture(tex2, vec2(vx,vy)); + c += texture(tex2, vec2(vx,vy)); } else if(a == 2) { - c += texture(tex3, vec2(vx,vy)); + c += texture(tex3, vec2(vx,vy)); } else if(a == 3) { - c += texture(tex4, vec2(vx,vy)); + c += texture(tex4, vec2(vx,vy)); } f_color = c; }" diff --git a/examples/vulkan/vk_quad_warp/controls.rs b/examples/vulkan/vk_quad_warp/controls.rs index ffc2ce561..e719bac2d 100644 --- a/examples/vulkan/vk_quad_warp/controls.rs +++ b/examples/vulkan/vk_quad_warp/controls.rs @@ -1,8 +1,8 @@ +use self::ui::input::state::mouse::ButtonPosition; use crate::Model; -use nannou::ui::prelude::*; -use nannou::prelude::*; use nannou::geom::rect::Rect; -use self::ui::input::state::mouse::ButtonPosition; +use nannou::prelude::*; +use nannou::ui::prelude::*; pub const PAD_X: f32 = 20.0; pub const PAD_Y: f32 = 20.0; @@ -22,7 +22,6 @@ pub struct Corners { pub struct Corner { pub drag: bool, pub pos: Point2, - } pub struct Ids { @@ -42,21 +41,34 @@ impl Corners { pub fn new(init: Rect) -> Self { Corners { dims: init, - top_left: Corner{ drag: false, pos: pt2(init.x.start, init.y.end) }, - top_right: Corner{ drag: false, pos: pt2(init.x.end, init.y.end) }, - bottom_left: Corner{ drag: false, pos: pt2(init.x.start, init.y.start) }, - bottom_right: Corner{ drag: false, pos: pt2(init.x.end, init.y.start) }, + top_left: Corner { + drag: false, + pos: pt2(init.x.start, init.y.end), + }, + top_right: Corner { + drag: false, + pos: pt2(init.x.end, init.y.end), + }, + bottom_left: Corner { + drag: false, + pos: pt2(init.x.start, init.y.start), + }, + bottom_right: Corner { + drag: false, + pos: pt2(init.x.end, init.y.start), + }, } } } - pub(crate) fn update(model: &mut Model) { let ui = &mut model.ui.set_widgets(); let ref mut corners = model.controls.corners; - widget::Canvas::new().rgb(0.2, 0.0, 0.2).set(model.ids.background, ui); + widget::Canvas::new() + .rgb(0.2, 0.0, 0.2) + .set(model.ids.background, ui); widget::Circle::fill(20.0) .rgb(0.0, 0.7, 0.0) @@ -84,8 +96,12 @@ pub(crate) fn update(model: &mut Model) { widget::Circle::fill(20.0) .rgb(0.0, 0.7, 0.0) - .x_position(position::Position::Absolute(corners.bottom_left.pos.x as f64)) - .y_position(position::Position::Absolute(corners.bottom_left.pos.y as f64)) + .x_position(position::Position::Absolute( + corners.bottom_left.pos.x as f64, + )) + .y_position(position::Position::Absolute( + corners.bottom_left.pos.y as f64, + )) .set(model.ids.bottom_left_corner, ui); widget::Text::new(&format!("bottom left: {:?}", corners.bottom_left.pos)) @@ -96,8 +112,12 @@ pub(crate) fn update(model: &mut Model) { widget::Circle::fill(20.0) .rgb(0.0, 0.7, 0.0) - .x_position(position::Position::Absolute(corners.bottom_right.pos.x as f64)) - .y_position(position::Position::Absolute(corners.bottom_right.pos.y as f64)) + .x_position(position::Position::Absolute( + corners.bottom_right.pos.x as f64, + )) + .y_position(position::Position::Absolute( + corners.bottom_right.pos.y as f64, + )) .set(model.ids.bottom_right_corner, ui); widget::Text::new(&format!("bottom right: {:?}", corners.bottom_right.pos)) @@ -111,17 +131,28 @@ pub(crate) fn update(model: &mut Model) { corners.top_right.pos, corners.bottom_right.pos, corners.bottom_left.pos, - corners.top_left.pos]; + corners.top_left.pos, + ]; widget::PointPath::new(points.into_iter().map(|v| [v.x as f64, v.y as f64])) .set(model.ids.points, ui); - match (ui.global_input().current.widget_capturing_mouse, ui.global_input().current.mouse.buttons.left()) { - (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.top_left_corner => corners.top_left.drag = true, - (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.top_right_corner => corners.top_right.drag = true, - (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.bottom_left_corner => corners.bottom_left.drag = true, - (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.bottom_right_corner => corners.bottom_right.drag = true, + match ( + ui.global_input().current.widget_capturing_mouse, + ui.global_input().current.mouse.buttons.left(), + ) { + (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.top_left_corner => { + corners.top_left.drag = true + } + (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.top_right_corner => { + corners.top_right.drag = true + } + (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.bottom_left_corner => { + corners.bottom_left.drag = true + } + (Some(id), ButtonPosition::Down(_, _)) if id == model.ids.bottom_right_corner => { + corners.bottom_right.drag = true + } _ => (), - } } @@ -129,8 +160,10 @@ pub(crate) fn event(_app: &App, model: &mut Model, event: WindowEvent) { let ref mut corners = model.controls.corners; match event { MouseMoved(pos) => { - let pos = pt2(clamp(pos.x, corners.dims.x.start, corners.dims.x.end), - clamp(pos.y, corners.dims.y.end, corners.dims.y.start)); + let pos = pt2( + clamp(pos.x, corners.dims.x.start, corners.dims.x.end), + clamp(pos.y, corners.dims.y.end, corners.dims.y.start), + ); if corners.top_left.drag { corners.top_left.pos = pos; } else if corners.top_right.drag { @@ -140,7 +173,7 @@ pub(crate) fn event(_app: &App, model: &mut Model, event: WindowEvent) { } else if corners.bottom_right.drag { corners.bottom_right.pos = pos; } - }, + } MouseReleased(b) if b == MouseButton::Left => { corners.top_left.drag = false; corners.top_right.drag = false; diff --git a/examples/vulkan/vk_quad_warp/teapot_verts.rs b/examples/vulkan/vk_quad_warp/teapot_verts.rs index 9a995f9ff..6de84dca6 100644 --- a/examples/vulkan/vk_quad_warp/teapot_verts.rs +++ b/examples/vulkan/vk_quad_warp/teapot_verts.rs @@ -1,2097 +1,3353 @@ -use crate::{Vertex, Normal}; +use crate::{Normal, Vertex}; pub const VERTICES: [Vertex; 531] = [ - Vertex { position: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices - // start at 1 - Vertex { position: (40.6266, 28.3457, -1.10804) }, - Vertex { position: (40.0714, 30.4443, -1.10804) }, - Vertex { position: (40.7155, 31.1438, -1.10804) }, - Vertex { position: (42.0257, 30.4443, -1.10804) }, - Vertex { position: (43.4692, 28.3457, -1.10804) }, - Vertex { position: (37.5425, 28.3457, 14.5117) }, - Vertex { position: (37.0303, 30.4443, 14.2938) }, - Vertex { position: (37.6244, 31.1438, 14.5466) }, - Vertex { position: (38.8331, 30.4443, 15.0609) }, - Vertex { position: (40.1647, 28.3457, 15.6274) }, - Vertex { position: (29.0859, 28.3457, 27.1468) }, - Vertex { position: (28.6917, 30.4443, 26.7527) }, - Vertex { position: (29.149, 31.1438, 27.2099) }, - Vertex { position: (30.0792, 30.4443, 28.1402) }, - Vertex { position: (31.1041, 28.3457, 29.165) }, - Vertex { position: (16.4508, 28.3457, 35.6034) }, - Vertex { position: (16.2329, 30.4443, 35.0912) }, - Vertex { position: (16.4857, 31.1438, 35.6853) }, - Vertex { position: (16.9999, 30.4443, 36.894) }, - Vertex { position: (17.5665, 28.3457, 38.2256) }, - Vertex { position: (0.831025, 28.3457, 38.6876) }, - Vertex { position: (0.831025, 30.4443, 38.1324) }, - Vertex { position: (0.831025, 31.1438, 38.7764) }, - Vertex { position: (0.831025, 30.4443, 40.0866) }, - Vertex { position: (0.831025, 28.3457, 41.5301) }, - Vertex { position: (-15.868, 28.3457, 35.6034) }, - Vertex { position: (-15.0262, 30.4443, 35.0912) }, - Vertex { position: (-14.9585, 31.1438, 35.6853) }, - Vertex { position: (-15.3547, 30.4443, 36.894) }, - Vertex { position: (-15.9044, 28.3457, 38.2256) }, - Vertex { position: (-28.3832, 28.3457, 27.1468) }, - Vertex { position: (-27.4344, 30.4443, 26.7527) }, - Vertex { position: (-27.6068, 31.1438, 27.2099) }, - Vertex { position: (-28.4322, 30.4443, 28.1402) }, - Vertex { position: (-29.4421, 28.3457, 29.165) }, - Vertex { position: (-36.2402, 28.3457, 14.5117) }, - Vertex { position: (-35.52, 30.4443, 14.2938) }, - Vertex { position: (-36.0073, 31.1438, 14.5466) }, - Vertex { position: (-37.1767, 30.4443, 15.0609) }, - Vertex { position: (-38.5027, 28.3457, 15.6274) }, - Vertex { position: (-38.9646, 28.3457, -1.10804) }, - Vertex { position: (-38.4094, 30.4443, -1.10804) }, - Vertex { position: (-39.0534, 31.1438, -1.10804) }, - Vertex { position: (-40.3636, 30.4443, -1.10804) }, - Vertex { position: (-41.8071, 28.3457, -1.10804) }, - Vertex { position: (-35.8804, 28.3457, -16.7278) }, - Vertex { position: (-35.3683, 30.4443, -16.5099) }, - Vertex { position: (-35.9624, 31.1438, -16.7627) }, - Vertex { position: (-37.1711, 30.4443, -17.2769) }, - Vertex { position: (-38.5027, 28.3457, -17.8435) }, - Vertex { position: (-27.4238, 28.3457, -29.3629) }, - Vertex { position: (-27.0297, 30.4443, -28.9687) }, - Vertex { position: (-27.4869, 31.1438, -29.426) }, - Vertex { position: (-28.4172, 30.4443, -30.3562) }, - Vertex { position: (-29.4421, 28.3457, -31.3811) }, - Vertex { position: (-14.7887, 28.3457, -37.8195) }, - Vertex { position: (-14.5708, 30.4443, -37.3073) }, - Vertex { position: (-14.8236, 31.1438, -37.9014) }, - Vertex { position: (-15.3379, 30.4443, -39.1101) }, - Vertex { position: (-15.9044, 28.3457, -40.4417) }, - Vertex { position: (0.831025, 28.3457, -40.9036) }, - Vertex { position: (0.831025, 30.4443, -40.3484) }, - Vertex { position: (0.831025, 31.1438, -40.9925) }, - Vertex { position: (0.831025, 30.4443, -42.3027) }, - Vertex { position: (0.831025, 28.3457, -43.7462) }, - Vertex { position: (16.4508, 28.3457, -37.8195) }, - Vertex { position: (16.2329, 30.4443, -37.3073) }, - Vertex { position: (16.4857, 31.1438, -37.9014) }, - Vertex { position: (16.9999, 30.4443, -39.1101) }, - Vertex { position: (17.5665, 28.3457, -40.4417) }, - Vertex { position: (29.0859, 28.3457, -29.3629) }, - Vertex { position: (28.6917, 30.4443, -28.9687) }, - Vertex { position: (29.149, 31.1438, -29.426) }, - Vertex { position: (30.0792, 30.4443, -30.3562) }, - Vertex { position: (31.1041, 28.3457, -31.3811) }, - Vertex { position: (37.5425, 28.3457, -16.7278) }, - Vertex { position: (37.0303, 30.4443, -16.5099) }, - Vertex { position: (37.6244, 31.1438, -16.7627) }, - Vertex { position: (38.8331, 30.4443, -17.2769) }, - Vertex { position: (40.1647, 28.3457, -17.8435) }, - Vertex { position: (48.6879, 17.1865, -1.10804) }, - Vertex { position: (53.2404, 6.22714, -1.10804) }, - Vertex { position: (56.4605, -4.33246, -1.10804) }, - Vertex { position: (57.6819, -14.2925, -1.10804) }, - Vertex { position: (44.979, 17.1865, 17.6758) }, - Vertex { position: (49.1787, 6.22714, 19.4626) }, - Vertex { position: (52.1492, -4.33246, 20.7265) }, - Vertex { position: (53.2759, -14.2925, 21.2059) }, - Vertex { position: (34.8094, 17.1865, 32.8703) }, - Vertex { position: (38.0417, 6.22714, 36.1026) }, - Vertex { position: (40.3279, -4.33246, 38.3889) }, - Vertex { position: (41.1951, -14.2925, 39.2561) }, - Vertex { position: (19.6148, 17.1865, 43.0399) }, - Vertex { position: (21.4017, 6.22714, 47.2396) }, - Vertex { position: (22.6656, -4.33246, 50.2101) }, - Vertex { position: (23.145, -14.2925, 51.3369) }, - Vertex { position: (0.831025, 17.1865, 46.7488) }, - Vertex { position: (0.831025, 6.22714, 51.3013) }, - Vertex { position: (0.831025, -4.33246, 54.5214) }, - Vertex { position: (0.831025, -14.2925, 55.7428) }, - Vertex { position: (-17.9528, 17.1865, 43.0399) }, - Vertex { position: (-19.7397, 6.22714, 47.2396) }, - Vertex { position: (-21.0035, -4.33246, 50.2101) }, - Vertex { position: (-21.4829, -14.2925, 51.3369) }, - Vertex { position: (-33.1474, 17.1865, 32.8703) }, - Vertex { position: (-36.3796, 6.22714, 36.1026) }, - Vertex { position: (-38.6659, -4.33246, 38.3889) }, - Vertex { position: (-39.5331, -14.2925, 39.2561) }, - Vertex { position: (-43.3169, 17.1865, 17.6758) }, - Vertex { position: (-47.5166, 6.22714, 19.4626) }, - Vertex { position: (-50.4871, -4.33246, 20.7265) }, - Vertex { position: (-51.6139, -14.2925, 21.2059) }, - Vertex { position: (-47.0258, 17.1865, -1.10804) }, - Vertex { position: (-51.5784, 6.22714, -1.10804) }, - Vertex { position: (-54.7984, -4.33246, -1.10804) }, - Vertex { position: (-56.0198, -14.2925, -1.10804) }, - Vertex { position: (-43.3169, 17.1865, -19.8919) }, - Vertex { position: (-47.5166, 6.22714, -21.6787) }, - Vertex { position: (-50.4871, -4.33246, -22.9426) }, - Vertex { position: (-51.6139, -14.2925, -23.422) }, - Vertex { position: (-33.1474, 17.1865, -35.0864) }, - Vertex { position: (-36.3796, 6.22714, -38.3187) }, - Vertex { position: (-38.6659, -4.33246, -40.6049) }, - Vertex { position: (-39.5331, -14.2925, -41.4721) }, - Vertex { position: (-17.9528, 17.1865, -45.256) }, - Vertex { position: (-19.7397, 6.22714, -49.4557) }, - Vertex { position: (-21.0035, -4.33246, -52.4262) }, - Vertex { position: (-21.4829, -14.2925, -53.5529) }, - Vertex { position: (0.831025, 17.1865, -48.9649) }, - Vertex { position: (0.831025, 6.22714, -53.5174) }, - Vertex { position: (0.831025, -4.33246, -56.7375) }, - Vertex { position: (0.831025, -14.2925, -57.9589) }, - Vertex { position: (19.6148, 17.1865, -45.256) }, - Vertex { position: (21.4017, 6.22714, -49.4557) }, - Vertex { position: (22.6656, -4.33246, -52.4262) }, - Vertex { position: (23.145, -14.2925, -53.5529) }, - Vertex { position: (34.8094, 17.1865, -35.0864) }, - Vertex { position: (38.0417, 6.22714, -38.3187) }, - Vertex { position: (40.3279, -4.33246, -40.6049) }, - Vertex { position: (41.1951, -14.2925, -41.4721) }, - Vertex { position: (44.979, 17.1865, -19.8919) }, - Vertex { position: (49.1787, 6.22714, -21.6787) }, - Vertex { position: (52.1492, -4.33246, -22.9426) }, - Vertex { position: (53.2759, -14.2925, -23.422) }, - Vertex { position: (55.4611, -22.7202, -1.10804) }, - Vertex { position: (50.5755, -28.9493, -1.10804) }, - Vertex { position: (45.6899, -33.1798, -1.10804) }, - Vertex { position: (43.4692, -35.6115, -1.10804) }, - Vertex { position: (51.2273, -22.7202, 20.3343) }, - Vertex { position: (46.7203, -28.9493, 18.4167) }, - Vertex { position: (42.2133, -33.1798, 16.4991) }, - Vertex { position: (40.1647, -35.6115, 15.6274) }, - Vertex { position: (39.6184, -22.7202, 37.6793) }, - Vertex { position: (36.1496, -28.9493, 34.2106) }, - Vertex { position: (32.6808, -33.1798, 30.7418) }, - Vertex { position: (31.1041, -35.6115, 29.165) }, - Vertex { position: (22.2733, -22.7202, 49.2882) }, - Vertex { position: (20.3557, -28.9493, 44.7813) }, - Vertex { position: (18.4381, -33.1798, 40.2743) }, - Vertex { position: (17.5665, -35.6115, 38.2256) }, - Vertex { position: (0.831025, -22.7202, 53.5221) }, - Vertex { position: (0.831025, -28.9493, 48.6365) }, - Vertex { position: (0.831025, -33.1798, 43.7508) }, - Vertex { position: (0.831025, -35.6115, 41.5301) }, - Vertex { position: (-20.6113, -22.7202, 49.2882) }, - Vertex { position: (-18.6937, -28.9493, 44.7813) }, - Vertex { position: (-16.7761, -33.1798, 40.2743) }, - Vertex { position: (-15.9044, -35.6115, 38.2256) }, - Vertex { position: (-37.9564, -22.7202, 37.6793) }, - Vertex { position: (-34.4876, -28.9493, 34.2106) }, - Vertex { position: (-31.0188, -33.1798, 30.7418) }, - Vertex { position: (-29.4421, -35.6115, 29.165) }, - Vertex { position: (-49.5653, -22.7202, 20.3343) }, - Vertex { position: (-45.0583, -28.9493, 18.4167) }, - Vertex { position: (-40.5513, -33.1798, 16.4991) }, - Vertex { position: (-38.5027, -35.6115, 15.6274) }, - Vertex { position: (-53.7991, -22.7202, -1.10804) }, - Vertex { position: (-48.9135, -28.9493, -1.10804) }, - Vertex { position: (-44.0279, -33.1798, -1.10804) }, - Vertex { position: (-41.8071, -35.6115, -1.10804) }, - Vertex { position: (-49.5653, -22.7202, -22.5504) }, - Vertex { position: (-45.0583, -28.9493, -20.6327) }, - Vertex { position: (-40.5513, -33.1798, -18.7151) }, - Vertex { position: (-38.5027, -35.6115, -17.8435) }, - Vertex { position: (-37.9564, -22.7202, -39.8954) }, - Vertex { position: (-34.4876, -28.9493, -36.4266) }, - Vertex { position: (-31.0188, -33.1798, -32.9578) }, - Vertex { position: (-29.4421, -35.6115, -31.3811) }, - Vertex { position: (-20.6113, -22.7202, -51.5043) }, - Vertex { position: (-18.6937, -28.9493, -46.9973) }, - Vertex { position: (-16.7761, -33.1798, -42.4903) }, - Vertex { position: (-15.9044, -35.6115, -40.4417) }, - Vertex { position: (0.831025, -22.7202, -55.7382) }, - Vertex { position: (0.831025, -28.9493, -50.8525) }, - Vertex { position: (0.831025, -33.1798, -45.9669) }, - Vertex { position: (0.831025, -35.6115, -43.7462) }, - Vertex { position: (22.2733, -22.7202, -51.5043) }, - Vertex { position: (20.3557, -28.9493, -46.9973) }, - Vertex { position: (18.4381, -33.1798, -42.4903) }, - Vertex { position: (17.5665, -35.6115, -40.4417) }, - Vertex { position: (39.6184, -22.7202, -39.8954) }, - Vertex { position: (36.1496, -28.9493, -36.4266) }, - Vertex { position: (32.6808, -33.1798, -32.9578) }, - Vertex { position: (31.1041, -35.6115, -31.3811) }, - Vertex { position: (51.2273, -22.7202, -22.5504) }, - Vertex { position: (46.7203, -28.9493, -20.6327) }, - Vertex { position: (42.2133, -33.1798, -18.7151) }, - Vertex { position: (40.1647, -35.6115, -17.8435) }, - Vertex { position: (42.5031, -37.1772, -1.10804) }, - Vertex { position: (37.3399, -38.5429, -1.10804) }, - Vertex { position: (24.5818, -39.5089, -1.10804) }, - Vertex { position: (0.831025, -39.8754, -1.10804) }, - Vertex { position: (39.2736, -37.1772, 15.2483) }, - Vertex { position: (34.5105, -38.5429, 13.2217) }, - Vertex { position: (22.7411, -39.5089, 8.21414) }, - Vertex { position: (30.4182, -37.1772, 28.4792) }, - Vertex { position: (26.7523, -38.5429, 24.8133) }, - Vertex { position: (17.6941, -39.5089, 15.755) }, - Vertex { position: (17.1873, -37.1772, 37.3345) }, - Vertex { position: (15.1608, -38.5429, 32.5714) }, - Vertex { position: (10.1532, -39.5089, 20.8021) }, - Vertex { position: (0.831025, -37.1772, 40.5641) }, - Vertex { position: (0.831025, -38.5429, 35.4009) }, - Vertex { position: (0.831025, -39.5089, 22.6427) }, - Vertex { position: (-15.5253, -37.1772, 37.3345) }, - Vertex { position: (-13.4987, -38.5429, 32.5714) }, - Vertex { position: (-8.49115, -39.5089, 20.8021) }, - Vertex { position: (-28.7562, -37.1772, 28.4792) }, - Vertex { position: (-25.0903, -38.5429, 24.8133) }, - Vertex { position: (-16.032, -39.5089, 15.755) }, - Vertex { position: (-37.6115, -37.1772, 15.2483) }, - Vertex { position: (-32.8484, -38.5429, 13.2217) }, - Vertex { position: (-21.0791, -39.5089, 8.21414) }, - Vertex { position: (-40.8411, -37.1772, -1.10804) }, - Vertex { position: (-35.6779, -38.5429, -1.10804) }, - Vertex { position: (-22.9198, -39.5089, -1.10804) }, - Vertex { position: (-37.6115, -37.1772, -17.4643) }, - Vertex { position: (-32.8484, -38.5429, -15.4378) }, - Vertex { position: (-21.0791, -39.5089, -10.4302) }, - Vertex { position: (-28.7562, -37.1772, -30.6952) }, - Vertex { position: (-25.0903, -38.5429, -27.0294) }, - Vertex { position: (-16.032, -39.5089, -17.9711) }, - Vertex { position: (-15.5253, -37.1772, -39.5506) }, - Vertex { position: (-13.4987, -38.5429, -34.7875) }, - Vertex { position: (-8.49115, -39.5089, -23.0181) }, - Vertex { position: (0.831025, -37.1772, -42.7802) }, - Vertex { position: (0.831025, -38.5429, -37.6169) }, - Vertex { position: (0.831025, -39.5089, -24.8588) }, - Vertex { position: (17.1873, -37.1772, -39.5506) }, - Vertex { position: (15.1608, -38.5429, -34.7875) }, - Vertex { position: (10.1532, -39.5089, -23.0181) }, - Vertex { position: (30.4182, -37.1772, -30.6952) }, - Vertex { position: (26.7523, -38.5429, -27.0294) }, - Vertex { position: (17.6941, -39.5089, -17.9711) }, - Vertex { position: (39.2736, -37.1772, -17.4643) }, - Vertex { position: (34.5105, -38.5429, -15.4378) }, - Vertex { position: (22.7411, -39.5089, -10.4302) }, - Vertex { position: (-44.6497, 17.6861, -1.10804) }, - Vertex { position: (-57.9297, 17.5862, -1.10804) }, - Vertex { position: (-67.7453, 16.8867, -1.10804) }, - Vertex { position: (-73.8301, 14.9879, -1.10804) }, - Vertex { position: (-75.9176, 11.2904, -1.10804) }, - Vertex { position: (-44.2055, 18.6855, 3.68876) }, - Vertex { position: (-58.3252, 18.5699, 3.68876) }, - Vertex { position: (-68.6891, 17.7611, 3.68876) }, - Vertex { position: (-75.0724, 15.5657, 3.68876) }, - Vertex { position: (-77.2501, 11.2904, 3.68876) }, - Vertex { position: (-43.2284, 20.884, 5.28769) }, - Vertex { position: (-59.1955, 20.7341, 5.28769) }, - Vertex { position: (-70.7655, 19.6848, 5.28769) }, - Vertex { position: (-77.8053, 16.8367, 5.28769) }, - Vertex { position: (-80.1814, 11.2904, 5.28769) }, - Vertex { position: (-42.2513, 23.0825, 3.68876) }, - Vertex { position: (-60.0657, 22.8983, 3.68876) }, - Vertex { position: (-72.8419, 21.6085, 3.68876) }, - Vertex { position: (-80.5381, 18.1077, 3.68876) }, - Vertex { position: (-83.1128, 11.2904, 3.68876) }, - Vertex { position: (-41.8071, 24.0819, -1.10804) }, - Vertex { position: (-60.4613, 23.882, -1.10804) }, - Vertex { position: (-73.7857, 22.4829, -1.10804) }, - Vertex { position: (-81.7804, 18.6855, -1.10804) }, - Vertex { position: (-84.4453, 11.2904, -1.10804) }, - Vertex { position: (-42.2513, 23.0825, -5.90483) }, - Vertex { position: (-60.0657, 22.8983, -5.90483) }, - Vertex { position: (-72.8419, 21.6085, -5.90483) }, - Vertex { position: (-80.5381, 18.1077, -5.90483) }, - Vertex { position: (-83.1128, 11.2904, -5.90483) }, - Vertex { position: (-43.2284, 20.884, -7.50376) }, - Vertex { position: (-59.1955, 20.7341, -7.50376) }, - Vertex { position: (-70.7655, 19.6848, -7.50376) }, - Vertex { position: (-77.8053, 16.8367, -7.50376) }, - Vertex { position: (-80.1814, 11.2904, -7.50376) }, - Vertex { position: (-44.2055, 18.6855, -5.90483) }, - Vertex { position: (-58.3252, 18.5699, -5.90483) }, - Vertex { position: (-68.6891, 17.7611, -5.90483) }, - Vertex { position: (-75.0724, 15.5657, -5.90483) }, - Vertex { position: (-77.2501, 11.2904, -5.90483) }, - Vertex { position: (-74.8073, 5.4943, -1.10804) }, - Vertex { position: (-71.2985, -1.50103, -1.10804) }, - Vertex { position: (-65.1248, -8.49634, -1.10804) }, - Vertex { position: (-56.0198, -14.2925, -1.10804) }, - Vertex { position: (-76.0183, 4.93477, 3.68876) }, - Vertex { position: (-72.159, -2.35462, 3.68876) }, - Vertex { position: (-65.4267, -9.55033, 3.68876) }, - Vertex { position: (-55.5757, -15.6249, 3.68876) }, - Vertex { position: (-78.6824, 3.70383, 5.28769) }, - Vertex { position: (-74.0522, -4.23253, 5.28769) }, - Vertex { position: (-66.0909, -11.8691, 5.28769) }, - Vertex { position: (-54.5986, -18.5563, 5.28769) }, - Vertex { position: (-81.3466, 2.47288, 3.68876) }, - Vertex { position: (-75.9454, -6.11044, 3.68876) }, - Vertex { position: (-66.755, -14.1878, 3.68876) }, - Vertex { position: (-53.6214, -21.4877, 3.68876) }, - Vertex { position: (-82.5576, 1.91336, -1.10804) }, - Vertex { position: (-76.8059, -6.96404, -1.10804) }, - Vertex { position: (-67.0569, -15.2418, -1.10804) }, - Vertex { position: (-53.1773, -22.8201, -1.10804) }, - Vertex { position: (-81.3466, 2.47288, -5.90483) }, - Vertex { position: (-75.9454, -6.11044, -5.90483) }, - Vertex { position: (-66.755, -14.1878, -5.90483) }, - Vertex { position: (-53.6214, -21.4877, -5.90483) }, - Vertex { position: (-78.6824, 3.70383, -7.50376) }, - Vertex { position: (-74.0522, -4.23253, -7.50376) }, - Vertex { position: (-66.0909, -11.8691, -7.50376) }, - Vertex { position: (-54.5986, -18.5563, -7.50376) }, - Vertex { position: (-76.0183, 4.93477, -5.90483) }, - Vertex { position: (-72.159, -2.35462, -5.90483) }, - Vertex { position: (-65.4267, -9.55033, -5.90483) }, - Vertex { position: (-55.5757, -15.6249, -5.90483) }, - Vertex { position: (49.1543, 0.630882, -1.10804) }, - Vertex { position: (62.7896, 3.76212, -1.10804) }, - Vertex { position: (68.6967, 11.2904, -1.10804) }, - Vertex { position: (71.939, 20.4176, -1.10804) }, - Vertex { position: (77.5797, 28.3457, -1.10804) }, - Vertex { position: (49.1543, -3.03333, 9.4449) }, - Vertex { position: (63.8305, 1.04519, 8.42059) }, - Vertex { position: (70.0292, 9.70814, 6.1671) }, - Vertex { position: (73.5629, 19.8451, 3.91361) }, - Vertex { position: (80.2446, 28.3457, 2.88929) }, - Vertex { position: (49.1543, -11.0946, 12.9626) }, - Vertex { position: (66.1207, -4.93206, 11.5968) }, - Vertex { position: (72.9605, 6.22714, 8.59214) }, - Vertex { position: (77.1355, 18.5855, 5.58749) }, - Vertex { position: (86.1073, 28.3457, 4.22173) }, - Vertex { position: (49.1543, -19.1559, 9.4449) }, - Vertex { position: (68.4108, -10.9093, 8.42059) }, - Vertex { position: (75.8919, 2.74614, 6.1671) }, - Vertex { position: (80.7081, 17.326, 3.91361) }, - Vertex { position: (91.97, 28.3457, 2.88929) }, - Vertex { position: (49.1543, -22.8201, -1.10804) }, - Vertex { position: (69.4518, -13.6262, -1.10804) }, - Vertex { position: (77.2244, 1.16386, -1.10804) }, - Vertex { position: (82.3321, 16.7534, -1.10804) }, - Vertex { position: (94.6349, 28.3457, -1.10804) }, - Vertex { position: (49.1543, -19.1559, -11.661) }, - Vertex { position: (68.4108, -10.9093, -10.6367) }, - Vertex { position: (75.8919, 2.74614, -8.38317) }, - Vertex { position: (80.7081, 17.326, -6.12968) }, - Vertex { position: (91.97, 28.3457, -5.10536) }, - Vertex { position: (49.1543, -11.0946, -15.1786) }, - Vertex { position: (66.1207, -4.93206, -13.8129) }, - Vertex { position: (72.9605, 6.22714, -10.8082) }, - Vertex { position: (77.1355, 18.5855, -7.80356) }, - Vertex { position: (86.1073, 28.3457, -6.4378) }, - Vertex { position: (49.1543, -3.03333, -11.661) }, - Vertex { position: (63.8305, 1.04519, -10.6367) }, - Vertex { position: (70.0292, 9.70814, -8.38317) }, - Vertex { position: (73.5629, 19.8451, -6.12968) }, - Vertex { position: (80.2446, 28.3457, -5.10536) }, - Vertex { position: (79.6227, 29.5449, -1.10804) }, - Vertex { position: (81.1329, 29.9446, -1.10804) }, - Vertex { position: (81.577, 29.5449, -1.10804) }, - Vertex { position: (80.4222, 28.3457, -1.10804) }, - Vertex { position: (82.4767, 29.6034, 2.63946) }, - Vertex { position: (83.8116, 30.0383, 2.08983) }, - Vertex { position: (83.8515, 29.6268, 1.54019) }, - Vertex { position: (82.1988, 28.3457, 1.29036) }, - Vertex { position: (88.7555, 29.7322, 3.88862) }, - Vertex { position: (89.7049, 30.2444, 3.15578) }, - Vertex { position: (88.8555, 29.8072, 2.42294) }, - Vertex { position: (86.1073, 28.3457, 2.08983) }, - Vertex { position: (95.0343, 29.8611, 2.63946) }, - Vertex { position: (95.5982, 30.4505, 2.08983) }, - Vertex { position: (93.8594, 29.9875, 1.54019) }, - Vertex { position: (90.0158, 28.3457, 1.29036) }, - Vertex { position: (97.8883, 29.9196, -1.10804) }, - Vertex { position: (98.2769, 30.5442, -1.10804) }, - Vertex { position: (96.1339, 30.0695, -1.10804) }, - Vertex { position: (91.7924, 28.3457, -1.10804) }, - Vertex { position: (95.0343, 29.8611, -4.85553) }, - Vertex { position: (95.5982, 30.4505, -4.3059) }, - Vertex { position: (93.8594, 29.9875, -3.75626) }, - Vertex { position: (90.0158, 28.3457, -3.50643) }, - Vertex { position: (88.7555, 29.7322, -6.10469) }, - Vertex { position: (89.7049, 30.2444, -5.37185) }, - Vertex { position: (88.8555, 29.8072, -4.63901) }, - Vertex { position: (86.1073, 28.3457, -4.3059) }, - Vertex { position: (82.4767, 29.6034, -4.85553) }, - Vertex { position: (83.8116, 30.0383, -4.3059) }, - Vertex { position: (83.8515, 29.6268, -3.75626) }, - Vertex { position: (82.1988, 28.3457, -3.50643) }, - Vertex { position: (0.831025, 49.6647, -1.10804) }, - Vertex { position: (10.5134, 48.2657, -1.10804) }, - Vertex { position: (10.0693, 44.868, -1.10804) }, - Vertex { position: (6.42728, 40.6708, -1.10804) }, - Vertex { position: (6.51611, 36.8733, -1.10804) }, - Vertex { position: (9.76642, 48.2657, 2.70243) }, - Vertex { position: (9.35632, 44.868, 2.52698) }, - Vertex { position: (5.9947, 40.6708, 1.09187) }, - Vertex { position: (6.07552, 36.8733, 1.12336) }, - Vertex { position: (7.71453, 48.2657, 5.77547) }, - Vertex { position: (7.39819, 44.868, 5.45913) }, - Vertex { position: (4.80736, 40.6708, 2.8683) }, - Vertex { position: (4.86744, 36.8733, 2.92838) }, - Vertex { position: (4.64149, 48.2657, 7.82736) }, - Vertex { position: (4.46604, 44.868, 7.41726) }, - Vertex { position: (3.03093, 40.6708, 4.05564) }, - Vertex { position: (3.06242, 36.8733, 4.13646) }, - Vertex { position: (0.831025, 48.2657, 8.57438) }, - Vertex { position: (0.831025, 44.868, 8.13023) }, - Vertex { position: (0.831025, 40.6708, 4.48822) }, - Vertex { position: (0.831025, 36.8733, 4.57705) }, - Vertex { position: (-2.97944, 48.2657, 7.82736) }, - Vertex { position: (-2.80399, 44.868, 7.41726) }, - Vertex { position: (-1.36888, 40.6708, 4.05564) }, - Vertex { position: (-1.40037, 36.8733, 4.13646) }, - Vertex { position: (-6.05248, 48.2657, 5.77547) }, - Vertex { position: (-5.73614, 44.868, 5.45913) }, - Vertex { position: (-3.14531, 40.6708, 2.8683) }, - Vertex { position: (-3.20539, 36.8733, 2.92838) }, - Vertex { position: (-8.10437, 48.2657, 2.70243) }, - Vertex { position: (-7.69427, 44.868, 2.52698) }, - Vertex { position: (-4.33265, 40.6708, 1.09187) }, - Vertex { position: (-4.41347, 36.8733, 1.12336) }, - Vertex { position: (-8.85139, 48.2657, -1.10804) }, - Vertex { position: (-8.40724, 44.868, -1.10804) }, - Vertex { position: (-4.76523, 40.6708, -1.10804) }, - Vertex { position: (-4.85406, 36.8733, -1.10804) }, - Vertex { position: (-8.10437, 48.2657, -4.9185) }, - Vertex { position: (-7.69427, 44.868, -4.74305) }, - Vertex { position: (-4.33265, 40.6708, -3.30794) }, - Vertex { position: (-4.41347, 36.8733, -3.33943) }, - Vertex { position: (-6.05248, 48.2657, -7.99154) }, - Vertex { position: (-5.73614, 44.868, -7.6752) }, - Vertex { position: (-3.14531, 40.6708, -5.08437) }, - Vertex { position: (-3.20539, 36.8733, -5.14445) }, - Vertex { position: (-2.97944, 48.2657, -10.0434) }, - Vertex { position: (-2.80399, 44.868, -9.63333) }, - Vertex { position: (-1.36888, 40.6708, -6.27171) }, - Vertex { position: (-1.40037, 36.8733, -6.35253) }, - Vertex { position: (0.831025, 48.2657, -10.7904) }, - Vertex { position: (0.831025, 44.868, -10.3463) }, - Vertex { position: (0.831025, 40.6708, -6.70429) }, - Vertex { position: (0.831025, 36.8733, -6.79312) }, - Vertex { position: (4.64149, 48.2657, -10.0434) }, - Vertex { position: (4.46604, 44.868, -9.63333) }, - Vertex { position: (3.03093, 40.6708, -6.27171) }, - Vertex { position: (3.06242, 36.8733, -6.35253) }, - Vertex { position: (7.71453, 48.2657, -7.99154) }, - Vertex { position: (7.39819, 44.868, -7.6752) }, - Vertex { position: (4.80736, 40.6708, -5.08437) }, - Vertex { position: (4.86744, 36.8733, -5.14445) }, - Vertex { position: (9.76642, 48.2657, -4.9185) }, - Vertex { position: (9.35632, 44.868, -4.74305) }, - Vertex { position: (5.9947, 40.6708, -3.30794) }, - Vertex { position: (6.07552, 36.8733, -3.33943) }, - Vertex { position: (13.8001, 34.3417, -1.10804) }, - Vertex { position: (24.282, 32.6095, -1.10804) }, - Vertex { position: (33.6979, 30.8773, -1.10804) }, - Vertex { position: (37.7841, 28.3457, -1.10804) }, - Vertex { position: (12.795, 34.3417, 3.98234) }, - Vertex { position: (22.4646, 32.6095, 8.09647) }, - Vertex { position: (31.1507, 30.8773, 11.7922) }, - Vertex { position: (34.9202, 28.3457, 13.396) }, - Vertex { position: (10.0391, 34.3417, 8.10003) }, - Vertex { position: (17.4812, 32.6095, 15.5422) }, - Vertex { position: (24.1665, 30.8773, 22.2275) }, - Vertex { position: (27.0677, 28.3457, 25.1286) }, - Vertex { position: (5.9214, 34.3417, 10.856) }, - Vertex { position: (10.0355, 32.6095, 20.5255) }, - Vertex { position: (13.7313, 30.8773, 29.2117) }, - Vertex { position: (15.3351, 28.3457, 32.9812) }, - Vertex { position: (0.831025, 34.3417, 11.8611) }, - Vertex { position: (0.831025, 32.6095, 22.3429) }, - Vertex { position: (0.831025, 30.8773, 31.7589) }, - Vertex { position: (0.831025, 28.3457, 35.845) }, - Vertex { position: (-4.25935, 34.3417, 10.856) }, - Vertex { position: (-8.37348, 32.6095, 20.5255) }, - Vertex { position: (-12.0692, 30.8773, 29.2117) }, - Vertex { position: (-13.673, 28.3457, 32.9812) }, - Vertex { position: (-8.37704, 34.3417, 8.10003) }, - Vertex { position: (-15.8192, 32.6095, 15.5422) }, - Vertex { position: (-22.5045, 30.8773, 22.2275) }, - Vertex { position: (-25.4056, 28.3457, 25.1286) }, - Vertex { position: (-11.133, 34.3417, 3.98234) }, - Vertex { position: (-20.8025, 32.6095, 8.09647) }, - Vertex { position: (-29.4887, 30.8773, 11.7922) }, - Vertex { position: (-33.2582, 28.3457, 13.396) }, - Vertex { position: (-12.1381, 34.3417, -1.10804) }, - Vertex { position: (-22.62, 32.6095, -1.10804) }, - Vertex { position: (-32.0359, 30.8773, -1.10804) }, - Vertex { position: (-36.122, 28.3457, -1.10804) }, - Vertex { position: (-11.133, 34.3417, -6.19841) }, - Vertex { position: (-20.8025, 32.6095, -10.3125) }, - Vertex { position: (-29.4887, 30.8773, -14.0083) }, - Vertex { position: (-33.2582, 28.3457, -15.6121) }, - Vertex { position: (-8.37704, 34.3417, -10.3161) }, - Vertex { position: (-15.8192, 32.6095, -17.7582) }, - Vertex { position: (-22.5045, 30.8773, -24.4435) }, - Vertex { position: (-25.4056, 28.3457, -27.3447) }, - Vertex { position: (-4.25935, 34.3417, -13.072) }, - Vertex { position: (-8.37348, 32.6095, -22.7416) }, - Vertex { position: (-12.0692, 30.8773, -31.4277) }, - Vertex { position: (-13.673, 28.3457, -35.1972) }, - Vertex { position: (0.831025, 34.3417, -14.0771) }, - Vertex { position: (0.831025, 32.6095, -24.559) }, - Vertex { position: (0.831025, 30.8773, -33.9749) }, - Vertex { position: (0.831025, 28.3457, -38.0611) }, - Vertex { position: (5.9214, 34.3417, -13.072) }, - Vertex { position: (10.0355, 32.6095, -22.7416) }, - Vertex { position: (13.7313, 30.8773, -31.4277) }, - Vertex { position: (15.3351, 28.3457, -35.1972) }, - Vertex { position: (10.0391, 34.3417, -10.3161) }, - Vertex { position: (17.4812, 32.6095, -17.7582) }, - Vertex { position: (24.1665, 30.8773, -24.4435) }, - Vertex { position: (27.0677, 28.3457, -27.3447) }, - Vertex { position: (12.795, 34.3417, -6.19841) }, - Vertex { position: (22.4646, 32.6095, -10.3125) }, - Vertex { position: (31.1507, 30.8773, -14.0083) }, - Vertex { position: (34.9202, 28.3457, -15.6121) } + Vertex { + position: (0.0, 0.0, 0.0), + }, // dummy vector because in the original model indices + // start at 1 + Vertex { + position: (40.6266, 28.3457, -1.10804), + }, + Vertex { + position: (40.0714, 30.4443, -1.10804), + }, + Vertex { + position: (40.7155, 31.1438, -1.10804), + }, + Vertex { + position: (42.0257, 30.4443, -1.10804), + }, + Vertex { + position: (43.4692, 28.3457, -1.10804), + }, + Vertex { + position: (37.5425, 28.3457, 14.5117), + }, + Vertex { + position: (37.0303, 30.4443, 14.2938), + }, + Vertex { + position: (37.6244, 31.1438, 14.5466), + }, + Vertex { + position: (38.8331, 30.4443, 15.0609), + }, + Vertex { + position: (40.1647, 28.3457, 15.6274), + }, + Vertex { + position: (29.0859, 28.3457, 27.1468), + }, + Vertex { + position: (28.6917, 30.4443, 26.7527), + }, + Vertex { + position: (29.149, 31.1438, 27.2099), + }, + Vertex { + position: (30.0792, 30.4443, 28.1402), + }, + Vertex { + position: (31.1041, 28.3457, 29.165), + }, + Vertex { + position: (16.4508, 28.3457, 35.6034), + }, + Vertex { + position: (16.2329, 30.4443, 35.0912), + }, + Vertex { + position: (16.4857, 31.1438, 35.6853), + }, + Vertex { + position: (16.9999, 30.4443, 36.894), + }, + Vertex { + position: (17.5665, 28.3457, 38.2256), + }, + Vertex { + position: (0.831025, 28.3457, 38.6876), + }, + Vertex { + position: (0.831025, 30.4443, 38.1324), + }, + Vertex { + position: (0.831025, 31.1438, 38.7764), + }, + Vertex { + position: (0.831025, 30.4443, 40.0866), + }, + Vertex { + position: (0.831025, 28.3457, 41.5301), + }, + Vertex { + position: (-15.868, 28.3457, 35.6034), + }, + Vertex { + position: (-15.0262, 30.4443, 35.0912), + }, + Vertex { + position: (-14.9585, 31.1438, 35.6853), + }, + Vertex { + position: (-15.3547, 30.4443, 36.894), + }, + Vertex { + position: (-15.9044, 28.3457, 38.2256), + }, + Vertex { + position: (-28.3832, 28.3457, 27.1468), + }, + Vertex { + position: (-27.4344, 30.4443, 26.7527), + }, + Vertex { + position: (-27.6068, 31.1438, 27.2099), + }, + Vertex { + position: (-28.4322, 30.4443, 28.1402), + }, + Vertex { + position: (-29.4421, 28.3457, 29.165), + }, + Vertex { + position: (-36.2402, 28.3457, 14.5117), + }, + Vertex { + position: (-35.52, 30.4443, 14.2938), + }, + Vertex { + position: (-36.0073, 31.1438, 14.5466), + }, + Vertex { + position: (-37.1767, 30.4443, 15.0609), + }, + Vertex { + position: (-38.5027, 28.3457, 15.6274), + }, + Vertex { + position: (-38.9646, 28.3457, -1.10804), + }, + Vertex { + position: (-38.4094, 30.4443, -1.10804), + }, + Vertex { + position: (-39.0534, 31.1438, -1.10804), + }, + Vertex { + position: (-40.3636, 30.4443, -1.10804), + }, + Vertex { + position: (-41.8071, 28.3457, -1.10804), + }, + Vertex { + position: (-35.8804, 28.3457, -16.7278), + }, + Vertex { + position: (-35.3683, 30.4443, -16.5099), + }, + Vertex { + position: (-35.9624, 31.1438, -16.7627), + }, + Vertex { + position: (-37.1711, 30.4443, -17.2769), + }, + Vertex { + position: (-38.5027, 28.3457, -17.8435), + }, + Vertex { + position: (-27.4238, 28.3457, -29.3629), + }, + Vertex { + position: (-27.0297, 30.4443, -28.9687), + }, + Vertex { + position: (-27.4869, 31.1438, -29.426), + }, + Vertex { + position: (-28.4172, 30.4443, -30.3562), + }, + Vertex { + position: (-29.4421, 28.3457, -31.3811), + }, + Vertex { + position: (-14.7887, 28.3457, -37.8195), + }, + Vertex { + position: (-14.5708, 30.4443, -37.3073), + }, + Vertex { + position: (-14.8236, 31.1438, -37.9014), + }, + Vertex { + position: (-15.3379, 30.4443, -39.1101), + }, + Vertex { + position: (-15.9044, 28.3457, -40.4417), + }, + Vertex { + position: (0.831025, 28.3457, -40.9036), + }, + Vertex { + position: (0.831025, 30.4443, -40.3484), + }, + Vertex { + position: (0.831025, 31.1438, -40.9925), + }, + Vertex { + position: (0.831025, 30.4443, -42.3027), + }, + Vertex { + position: (0.831025, 28.3457, -43.7462), + }, + Vertex { + position: (16.4508, 28.3457, -37.8195), + }, + Vertex { + position: (16.2329, 30.4443, -37.3073), + }, + Vertex { + position: (16.4857, 31.1438, -37.9014), + }, + Vertex { + position: (16.9999, 30.4443, -39.1101), + }, + Vertex { + position: (17.5665, 28.3457, -40.4417), + }, + Vertex { + position: (29.0859, 28.3457, -29.3629), + }, + Vertex { + position: (28.6917, 30.4443, -28.9687), + }, + Vertex { + position: (29.149, 31.1438, -29.426), + }, + Vertex { + position: (30.0792, 30.4443, -30.3562), + }, + Vertex { + position: (31.1041, 28.3457, -31.3811), + }, + Vertex { + position: (37.5425, 28.3457, -16.7278), + }, + Vertex { + position: (37.0303, 30.4443, -16.5099), + }, + Vertex { + position: (37.6244, 31.1438, -16.7627), + }, + Vertex { + position: (38.8331, 30.4443, -17.2769), + }, + Vertex { + position: (40.1647, 28.3457, -17.8435), + }, + Vertex { + position: (48.6879, 17.1865, -1.10804), + }, + Vertex { + position: (53.2404, 6.22714, -1.10804), + }, + Vertex { + position: (56.4605, -4.33246, -1.10804), + }, + Vertex { + position: (57.6819, -14.2925, -1.10804), + }, + Vertex { + position: (44.979, 17.1865, 17.6758), + }, + Vertex { + position: (49.1787, 6.22714, 19.4626), + }, + Vertex { + position: (52.1492, -4.33246, 20.7265), + }, + Vertex { + position: (53.2759, -14.2925, 21.2059), + }, + Vertex { + position: (34.8094, 17.1865, 32.8703), + }, + Vertex { + position: (38.0417, 6.22714, 36.1026), + }, + Vertex { + position: (40.3279, -4.33246, 38.3889), + }, + Vertex { + position: (41.1951, -14.2925, 39.2561), + }, + Vertex { + position: (19.6148, 17.1865, 43.0399), + }, + Vertex { + position: (21.4017, 6.22714, 47.2396), + }, + Vertex { + position: (22.6656, -4.33246, 50.2101), + }, + Vertex { + position: (23.145, -14.2925, 51.3369), + }, + Vertex { + position: (0.831025, 17.1865, 46.7488), + }, + Vertex { + position: (0.831025, 6.22714, 51.3013), + }, + Vertex { + position: (0.831025, -4.33246, 54.5214), + }, + Vertex { + position: (0.831025, -14.2925, 55.7428), + }, + Vertex { + position: (-17.9528, 17.1865, 43.0399), + }, + Vertex { + position: (-19.7397, 6.22714, 47.2396), + }, + Vertex { + position: (-21.0035, -4.33246, 50.2101), + }, + Vertex { + position: (-21.4829, -14.2925, 51.3369), + }, + Vertex { + position: (-33.1474, 17.1865, 32.8703), + }, + Vertex { + position: (-36.3796, 6.22714, 36.1026), + }, + Vertex { + position: (-38.6659, -4.33246, 38.3889), + }, + Vertex { + position: (-39.5331, -14.2925, 39.2561), + }, + Vertex { + position: (-43.3169, 17.1865, 17.6758), + }, + Vertex { + position: (-47.5166, 6.22714, 19.4626), + }, + Vertex { + position: (-50.4871, -4.33246, 20.7265), + }, + Vertex { + position: (-51.6139, -14.2925, 21.2059), + }, + Vertex { + position: (-47.0258, 17.1865, -1.10804), + }, + Vertex { + position: (-51.5784, 6.22714, -1.10804), + }, + Vertex { + position: (-54.7984, -4.33246, -1.10804), + }, + Vertex { + position: (-56.0198, -14.2925, -1.10804), + }, + Vertex { + position: (-43.3169, 17.1865, -19.8919), + }, + Vertex { + position: (-47.5166, 6.22714, -21.6787), + }, + Vertex { + position: (-50.4871, -4.33246, -22.9426), + }, + Vertex { + position: (-51.6139, -14.2925, -23.422), + }, + Vertex { + position: (-33.1474, 17.1865, -35.0864), + }, + Vertex { + position: (-36.3796, 6.22714, -38.3187), + }, + Vertex { + position: (-38.6659, -4.33246, -40.6049), + }, + Vertex { + position: (-39.5331, -14.2925, -41.4721), + }, + Vertex { + position: (-17.9528, 17.1865, -45.256), + }, + Vertex { + position: (-19.7397, 6.22714, -49.4557), + }, + Vertex { + position: (-21.0035, -4.33246, -52.4262), + }, + Vertex { + position: (-21.4829, -14.2925, -53.5529), + }, + Vertex { + position: (0.831025, 17.1865, -48.9649), + }, + Vertex { + position: (0.831025, 6.22714, -53.5174), + }, + Vertex { + position: (0.831025, -4.33246, -56.7375), + }, + Vertex { + position: (0.831025, -14.2925, -57.9589), + }, + Vertex { + position: (19.6148, 17.1865, -45.256), + }, + Vertex { + position: (21.4017, 6.22714, -49.4557), + }, + Vertex { + position: (22.6656, -4.33246, -52.4262), + }, + Vertex { + position: (23.145, -14.2925, -53.5529), + }, + Vertex { + position: (34.8094, 17.1865, -35.0864), + }, + Vertex { + position: (38.0417, 6.22714, -38.3187), + }, + Vertex { + position: (40.3279, -4.33246, -40.6049), + }, + Vertex { + position: (41.1951, -14.2925, -41.4721), + }, + Vertex { + position: (44.979, 17.1865, -19.8919), + }, + Vertex { + position: (49.1787, 6.22714, -21.6787), + }, + Vertex { + position: (52.1492, -4.33246, -22.9426), + }, + Vertex { + position: (53.2759, -14.2925, -23.422), + }, + Vertex { + position: (55.4611, -22.7202, -1.10804), + }, + Vertex { + position: (50.5755, -28.9493, -1.10804), + }, + Vertex { + position: (45.6899, -33.1798, -1.10804), + }, + Vertex { + position: (43.4692, -35.6115, -1.10804), + }, + Vertex { + position: (51.2273, -22.7202, 20.3343), + }, + Vertex { + position: (46.7203, -28.9493, 18.4167), + }, + Vertex { + position: (42.2133, -33.1798, 16.4991), + }, + Vertex { + position: (40.1647, -35.6115, 15.6274), + }, + Vertex { + position: (39.6184, -22.7202, 37.6793), + }, + Vertex { + position: (36.1496, -28.9493, 34.2106), + }, + Vertex { + position: (32.6808, -33.1798, 30.7418), + }, + Vertex { + position: (31.1041, -35.6115, 29.165), + }, + Vertex { + position: (22.2733, -22.7202, 49.2882), + }, + Vertex { + position: (20.3557, -28.9493, 44.7813), + }, + Vertex { + position: (18.4381, -33.1798, 40.2743), + }, + Vertex { + position: (17.5665, -35.6115, 38.2256), + }, + Vertex { + position: (0.831025, -22.7202, 53.5221), + }, + Vertex { + position: (0.831025, -28.9493, 48.6365), + }, + Vertex { + position: (0.831025, -33.1798, 43.7508), + }, + Vertex { + position: (0.831025, -35.6115, 41.5301), + }, + Vertex { + position: (-20.6113, -22.7202, 49.2882), + }, + Vertex { + position: (-18.6937, -28.9493, 44.7813), + }, + Vertex { + position: (-16.7761, -33.1798, 40.2743), + }, + Vertex { + position: (-15.9044, -35.6115, 38.2256), + }, + Vertex { + position: (-37.9564, -22.7202, 37.6793), + }, + Vertex { + position: (-34.4876, -28.9493, 34.2106), + }, + Vertex { + position: (-31.0188, -33.1798, 30.7418), + }, + Vertex { + position: (-29.4421, -35.6115, 29.165), + }, + Vertex { + position: (-49.5653, -22.7202, 20.3343), + }, + Vertex { + position: (-45.0583, -28.9493, 18.4167), + }, + Vertex { + position: (-40.5513, -33.1798, 16.4991), + }, + Vertex { + position: (-38.5027, -35.6115, 15.6274), + }, + Vertex { + position: (-53.7991, -22.7202, -1.10804), + }, + Vertex { + position: (-48.9135, -28.9493, -1.10804), + }, + Vertex { + position: (-44.0279, -33.1798, -1.10804), + }, + Vertex { + position: (-41.8071, -35.6115, -1.10804), + }, + Vertex { + position: (-49.5653, -22.7202, -22.5504), + }, + Vertex { + position: (-45.0583, -28.9493, -20.6327), + }, + Vertex { + position: (-40.5513, -33.1798, -18.7151), + }, + Vertex { + position: (-38.5027, -35.6115, -17.8435), + }, + Vertex { + position: (-37.9564, -22.7202, -39.8954), + }, + Vertex { + position: (-34.4876, -28.9493, -36.4266), + }, + Vertex { + position: (-31.0188, -33.1798, -32.9578), + }, + Vertex { + position: (-29.4421, -35.6115, -31.3811), + }, + Vertex { + position: (-20.6113, -22.7202, -51.5043), + }, + Vertex { + position: (-18.6937, -28.9493, -46.9973), + }, + Vertex { + position: (-16.7761, -33.1798, -42.4903), + }, + Vertex { + position: (-15.9044, -35.6115, -40.4417), + }, + Vertex { + position: (0.831025, -22.7202, -55.7382), + }, + Vertex { + position: (0.831025, -28.9493, -50.8525), + }, + Vertex { + position: (0.831025, -33.1798, -45.9669), + }, + Vertex { + position: (0.831025, -35.6115, -43.7462), + }, + Vertex { + position: (22.2733, -22.7202, -51.5043), + }, + Vertex { + position: (20.3557, -28.9493, -46.9973), + }, + Vertex { + position: (18.4381, -33.1798, -42.4903), + }, + Vertex { + position: (17.5665, -35.6115, -40.4417), + }, + Vertex { + position: (39.6184, -22.7202, -39.8954), + }, + Vertex { + position: (36.1496, -28.9493, -36.4266), + }, + Vertex { + position: (32.6808, -33.1798, -32.9578), + }, + Vertex { + position: (31.1041, -35.6115, -31.3811), + }, + Vertex { + position: (51.2273, -22.7202, -22.5504), + }, + Vertex { + position: (46.7203, -28.9493, -20.6327), + }, + Vertex { + position: (42.2133, -33.1798, -18.7151), + }, + Vertex { + position: (40.1647, -35.6115, -17.8435), + }, + Vertex { + position: (42.5031, -37.1772, -1.10804), + }, + Vertex { + position: (37.3399, -38.5429, -1.10804), + }, + Vertex { + position: (24.5818, -39.5089, -1.10804), + }, + Vertex { + position: (0.831025, -39.8754, -1.10804), + }, + Vertex { + position: (39.2736, -37.1772, 15.2483), + }, + Vertex { + position: (34.5105, -38.5429, 13.2217), + }, + Vertex { + position: (22.7411, -39.5089, 8.21414), + }, + Vertex { + position: (30.4182, -37.1772, 28.4792), + }, + Vertex { + position: (26.7523, -38.5429, 24.8133), + }, + Vertex { + position: (17.6941, -39.5089, 15.755), + }, + Vertex { + position: (17.1873, -37.1772, 37.3345), + }, + Vertex { + position: (15.1608, -38.5429, 32.5714), + }, + Vertex { + position: (10.1532, -39.5089, 20.8021), + }, + Vertex { + position: (0.831025, -37.1772, 40.5641), + }, + Vertex { + position: (0.831025, -38.5429, 35.4009), + }, + Vertex { + position: (0.831025, -39.5089, 22.6427), + }, + Vertex { + position: (-15.5253, -37.1772, 37.3345), + }, + Vertex { + position: (-13.4987, -38.5429, 32.5714), + }, + Vertex { + position: (-8.49115, -39.5089, 20.8021), + }, + Vertex { + position: (-28.7562, -37.1772, 28.4792), + }, + Vertex { + position: (-25.0903, -38.5429, 24.8133), + }, + Vertex { + position: (-16.032, -39.5089, 15.755), + }, + Vertex { + position: (-37.6115, -37.1772, 15.2483), + }, + Vertex { + position: (-32.8484, -38.5429, 13.2217), + }, + Vertex { + position: (-21.0791, -39.5089, 8.21414), + }, + Vertex { + position: (-40.8411, -37.1772, -1.10804), + }, + Vertex { + position: (-35.6779, -38.5429, -1.10804), + }, + Vertex { + position: (-22.9198, -39.5089, -1.10804), + }, + Vertex { + position: (-37.6115, -37.1772, -17.4643), + }, + Vertex { + position: (-32.8484, -38.5429, -15.4378), + }, + Vertex { + position: (-21.0791, -39.5089, -10.4302), + }, + Vertex { + position: (-28.7562, -37.1772, -30.6952), + }, + Vertex { + position: (-25.0903, -38.5429, -27.0294), + }, + Vertex { + position: (-16.032, -39.5089, -17.9711), + }, + Vertex { + position: (-15.5253, -37.1772, -39.5506), + }, + Vertex { + position: (-13.4987, -38.5429, -34.7875), + }, + Vertex { + position: (-8.49115, -39.5089, -23.0181), + }, + Vertex { + position: (0.831025, -37.1772, -42.7802), + }, + Vertex { + position: (0.831025, -38.5429, -37.6169), + }, + Vertex { + position: (0.831025, -39.5089, -24.8588), + }, + Vertex { + position: (17.1873, -37.1772, -39.5506), + }, + Vertex { + position: (15.1608, -38.5429, -34.7875), + }, + Vertex { + position: (10.1532, -39.5089, -23.0181), + }, + Vertex { + position: (30.4182, -37.1772, -30.6952), + }, + Vertex { + position: (26.7523, -38.5429, -27.0294), + }, + Vertex { + position: (17.6941, -39.5089, -17.9711), + }, + Vertex { + position: (39.2736, -37.1772, -17.4643), + }, + Vertex { + position: (34.5105, -38.5429, -15.4378), + }, + Vertex { + position: (22.7411, -39.5089, -10.4302), + }, + Vertex { + position: (-44.6497, 17.6861, -1.10804), + }, + Vertex { + position: (-57.9297, 17.5862, -1.10804), + }, + Vertex { + position: (-67.7453, 16.8867, -1.10804), + }, + Vertex { + position: (-73.8301, 14.9879, -1.10804), + }, + Vertex { + position: (-75.9176, 11.2904, -1.10804), + }, + Vertex { + position: (-44.2055, 18.6855, 3.68876), + }, + Vertex { + position: (-58.3252, 18.5699, 3.68876), + }, + Vertex { + position: (-68.6891, 17.7611, 3.68876), + }, + Vertex { + position: (-75.0724, 15.5657, 3.68876), + }, + Vertex { + position: (-77.2501, 11.2904, 3.68876), + }, + Vertex { + position: (-43.2284, 20.884, 5.28769), + }, + Vertex { + position: (-59.1955, 20.7341, 5.28769), + }, + Vertex { + position: (-70.7655, 19.6848, 5.28769), + }, + Vertex { + position: (-77.8053, 16.8367, 5.28769), + }, + Vertex { + position: (-80.1814, 11.2904, 5.28769), + }, + Vertex { + position: (-42.2513, 23.0825, 3.68876), + }, + Vertex { + position: (-60.0657, 22.8983, 3.68876), + }, + Vertex { + position: (-72.8419, 21.6085, 3.68876), + }, + Vertex { + position: (-80.5381, 18.1077, 3.68876), + }, + Vertex { + position: (-83.1128, 11.2904, 3.68876), + }, + Vertex { + position: (-41.8071, 24.0819, -1.10804), + }, + Vertex { + position: (-60.4613, 23.882, -1.10804), + }, + Vertex { + position: (-73.7857, 22.4829, -1.10804), + }, + Vertex { + position: (-81.7804, 18.6855, -1.10804), + }, + Vertex { + position: (-84.4453, 11.2904, -1.10804), + }, + Vertex { + position: (-42.2513, 23.0825, -5.90483), + }, + Vertex { + position: (-60.0657, 22.8983, -5.90483), + }, + Vertex { + position: (-72.8419, 21.6085, -5.90483), + }, + Vertex { + position: (-80.5381, 18.1077, -5.90483), + }, + Vertex { + position: (-83.1128, 11.2904, -5.90483), + }, + Vertex { + position: (-43.2284, 20.884, -7.50376), + }, + Vertex { + position: (-59.1955, 20.7341, -7.50376), + }, + Vertex { + position: (-70.7655, 19.6848, -7.50376), + }, + Vertex { + position: (-77.8053, 16.8367, -7.50376), + }, + Vertex { + position: (-80.1814, 11.2904, -7.50376), + }, + Vertex { + position: (-44.2055, 18.6855, -5.90483), + }, + Vertex { + position: (-58.3252, 18.5699, -5.90483), + }, + Vertex { + position: (-68.6891, 17.7611, -5.90483), + }, + Vertex { + position: (-75.0724, 15.5657, -5.90483), + }, + Vertex { + position: (-77.2501, 11.2904, -5.90483), + }, + Vertex { + position: (-74.8073, 5.4943, -1.10804), + }, + Vertex { + position: (-71.2985, -1.50103, -1.10804), + }, + Vertex { + position: (-65.1248, -8.49634, -1.10804), + }, + Vertex { + position: (-56.0198, -14.2925, -1.10804), + }, + Vertex { + position: (-76.0183, 4.93477, 3.68876), + }, + Vertex { + position: (-72.159, -2.35462, 3.68876), + }, + Vertex { + position: (-65.4267, -9.55033, 3.68876), + }, + Vertex { + position: (-55.5757, -15.6249, 3.68876), + }, + Vertex { + position: (-78.6824, 3.70383, 5.28769), + }, + Vertex { + position: (-74.0522, -4.23253, 5.28769), + }, + Vertex { + position: (-66.0909, -11.8691, 5.28769), + }, + Vertex { + position: (-54.5986, -18.5563, 5.28769), + }, + Vertex { + position: (-81.3466, 2.47288, 3.68876), + }, + Vertex { + position: (-75.9454, -6.11044, 3.68876), + }, + Vertex { + position: (-66.755, -14.1878, 3.68876), + }, + Vertex { + position: (-53.6214, -21.4877, 3.68876), + }, + Vertex { + position: (-82.5576, 1.91336, -1.10804), + }, + Vertex { + position: (-76.8059, -6.96404, -1.10804), + }, + Vertex { + position: (-67.0569, -15.2418, -1.10804), + }, + Vertex { + position: (-53.1773, -22.8201, -1.10804), + }, + Vertex { + position: (-81.3466, 2.47288, -5.90483), + }, + Vertex { + position: (-75.9454, -6.11044, -5.90483), + }, + Vertex { + position: (-66.755, -14.1878, -5.90483), + }, + Vertex { + position: (-53.6214, -21.4877, -5.90483), + }, + Vertex { + position: (-78.6824, 3.70383, -7.50376), + }, + Vertex { + position: (-74.0522, -4.23253, -7.50376), + }, + Vertex { + position: (-66.0909, -11.8691, -7.50376), + }, + Vertex { + position: (-54.5986, -18.5563, -7.50376), + }, + Vertex { + position: (-76.0183, 4.93477, -5.90483), + }, + Vertex { + position: (-72.159, -2.35462, -5.90483), + }, + Vertex { + position: (-65.4267, -9.55033, -5.90483), + }, + Vertex { + position: (-55.5757, -15.6249, -5.90483), + }, + Vertex { + position: (49.1543, 0.630882, -1.10804), + }, + Vertex { + position: (62.7896, 3.76212, -1.10804), + }, + Vertex { + position: (68.6967, 11.2904, -1.10804), + }, + Vertex { + position: (71.939, 20.4176, -1.10804), + }, + Vertex { + position: (77.5797, 28.3457, -1.10804), + }, + Vertex { + position: (49.1543, -3.03333, 9.4449), + }, + Vertex { + position: (63.8305, 1.04519, 8.42059), + }, + Vertex { + position: (70.0292, 9.70814, 6.1671), + }, + Vertex { + position: (73.5629, 19.8451, 3.91361), + }, + Vertex { + position: (80.2446, 28.3457, 2.88929), + }, + Vertex { + position: (49.1543, -11.0946, 12.9626), + }, + Vertex { + position: (66.1207, -4.93206, 11.5968), + }, + Vertex { + position: (72.9605, 6.22714, 8.59214), + }, + Vertex { + position: (77.1355, 18.5855, 5.58749), + }, + Vertex { + position: (86.1073, 28.3457, 4.22173), + }, + Vertex { + position: (49.1543, -19.1559, 9.4449), + }, + Vertex { + position: (68.4108, -10.9093, 8.42059), + }, + Vertex { + position: (75.8919, 2.74614, 6.1671), + }, + Vertex { + position: (80.7081, 17.326, 3.91361), + }, + Vertex { + position: (91.97, 28.3457, 2.88929), + }, + Vertex { + position: (49.1543, -22.8201, -1.10804), + }, + Vertex { + position: (69.4518, -13.6262, -1.10804), + }, + Vertex { + position: (77.2244, 1.16386, -1.10804), + }, + Vertex { + position: (82.3321, 16.7534, -1.10804), + }, + Vertex { + position: (94.6349, 28.3457, -1.10804), + }, + Vertex { + position: (49.1543, -19.1559, -11.661), + }, + Vertex { + position: (68.4108, -10.9093, -10.6367), + }, + Vertex { + position: (75.8919, 2.74614, -8.38317), + }, + Vertex { + position: (80.7081, 17.326, -6.12968), + }, + Vertex { + position: (91.97, 28.3457, -5.10536), + }, + Vertex { + position: (49.1543, -11.0946, -15.1786), + }, + Vertex { + position: (66.1207, -4.93206, -13.8129), + }, + Vertex { + position: (72.9605, 6.22714, -10.8082), + }, + Vertex { + position: (77.1355, 18.5855, -7.80356), + }, + Vertex { + position: (86.1073, 28.3457, -6.4378), + }, + Vertex { + position: (49.1543, -3.03333, -11.661), + }, + Vertex { + position: (63.8305, 1.04519, -10.6367), + }, + Vertex { + position: (70.0292, 9.70814, -8.38317), + }, + Vertex { + position: (73.5629, 19.8451, -6.12968), + }, + Vertex { + position: (80.2446, 28.3457, -5.10536), + }, + Vertex { + position: (79.6227, 29.5449, -1.10804), + }, + Vertex { + position: (81.1329, 29.9446, -1.10804), + }, + Vertex { + position: (81.577, 29.5449, -1.10804), + }, + Vertex { + position: (80.4222, 28.3457, -1.10804), + }, + Vertex { + position: (82.4767, 29.6034, 2.63946), + }, + Vertex { + position: (83.8116, 30.0383, 2.08983), + }, + Vertex { + position: (83.8515, 29.6268, 1.54019), + }, + Vertex { + position: (82.1988, 28.3457, 1.29036), + }, + Vertex { + position: (88.7555, 29.7322, 3.88862), + }, + Vertex { + position: (89.7049, 30.2444, 3.15578), + }, + Vertex { + position: (88.8555, 29.8072, 2.42294), + }, + Vertex { + position: (86.1073, 28.3457, 2.08983), + }, + Vertex { + position: (95.0343, 29.8611, 2.63946), + }, + Vertex { + position: (95.5982, 30.4505, 2.08983), + }, + Vertex { + position: (93.8594, 29.9875, 1.54019), + }, + Vertex { + position: (90.0158, 28.3457, 1.29036), + }, + Vertex { + position: (97.8883, 29.9196, -1.10804), + }, + Vertex { + position: (98.2769, 30.5442, -1.10804), + }, + Vertex { + position: (96.1339, 30.0695, -1.10804), + }, + Vertex { + position: (91.7924, 28.3457, -1.10804), + }, + Vertex { + position: (95.0343, 29.8611, -4.85553), + }, + Vertex { + position: (95.5982, 30.4505, -4.3059), + }, + Vertex { + position: (93.8594, 29.9875, -3.75626), + }, + Vertex { + position: (90.0158, 28.3457, -3.50643), + }, + Vertex { + position: (88.7555, 29.7322, -6.10469), + }, + Vertex { + position: (89.7049, 30.2444, -5.37185), + }, + Vertex { + position: (88.8555, 29.8072, -4.63901), + }, + Vertex { + position: (86.1073, 28.3457, -4.3059), + }, + Vertex { + position: (82.4767, 29.6034, -4.85553), + }, + Vertex { + position: (83.8116, 30.0383, -4.3059), + }, + Vertex { + position: (83.8515, 29.6268, -3.75626), + }, + Vertex { + position: (82.1988, 28.3457, -3.50643), + }, + Vertex { + position: (0.831025, 49.6647, -1.10804), + }, + Vertex { + position: (10.5134, 48.2657, -1.10804), + }, + Vertex { + position: (10.0693, 44.868, -1.10804), + }, + Vertex { + position: (6.42728, 40.6708, -1.10804), + }, + Vertex { + position: (6.51611, 36.8733, -1.10804), + }, + Vertex { + position: (9.76642, 48.2657, 2.70243), + }, + Vertex { + position: (9.35632, 44.868, 2.52698), + }, + Vertex { + position: (5.9947, 40.6708, 1.09187), + }, + Vertex { + position: (6.07552, 36.8733, 1.12336), + }, + Vertex { + position: (7.71453, 48.2657, 5.77547), + }, + Vertex { + position: (7.39819, 44.868, 5.45913), + }, + Vertex { + position: (4.80736, 40.6708, 2.8683), + }, + Vertex { + position: (4.86744, 36.8733, 2.92838), + }, + Vertex { + position: (4.64149, 48.2657, 7.82736), + }, + Vertex { + position: (4.46604, 44.868, 7.41726), + }, + Vertex { + position: (3.03093, 40.6708, 4.05564), + }, + Vertex { + position: (3.06242, 36.8733, 4.13646), + }, + Vertex { + position: (0.831025, 48.2657, 8.57438), + }, + Vertex { + position: (0.831025, 44.868, 8.13023), + }, + Vertex { + position: (0.831025, 40.6708, 4.48822), + }, + Vertex { + position: (0.831025, 36.8733, 4.57705), + }, + Vertex { + position: (-2.97944, 48.2657, 7.82736), + }, + Vertex { + position: (-2.80399, 44.868, 7.41726), + }, + Vertex { + position: (-1.36888, 40.6708, 4.05564), + }, + Vertex { + position: (-1.40037, 36.8733, 4.13646), + }, + Vertex { + position: (-6.05248, 48.2657, 5.77547), + }, + Vertex { + position: (-5.73614, 44.868, 5.45913), + }, + Vertex { + position: (-3.14531, 40.6708, 2.8683), + }, + Vertex { + position: (-3.20539, 36.8733, 2.92838), + }, + Vertex { + position: (-8.10437, 48.2657, 2.70243), + }, + Vertex { + position: (-7.69427, 44.868, 2.52698), + }, + Vertex { + position: (-4.33265, 40.6708, 1.09187), + }, + Vertex { + position: (-4.41347, 36.8733, 1.12336), + }, + Vertex { + position: (-8.85139, 48.2657, -1.10804), + }, + Vertex { + position: (-8.40724, 44.868, -1.10804), + }, + Vertex { + position: (-4.76523, 40.6708, -1.10804), + }, + Vertex { + position: (-4.85406, 36.8733, -1.10804), + }, + Vertex { + position: (-8.10437, 48.2657, -4.9185), + }, + Vertex { + position: (-7.69427, 44.868, -4.74305), + }, + Vertex { + position: (-4.33265, 40.6708, -3.30794), + }, + Vertex { + position: (-4.41347, 36.8733, -3.33943), + }, + Vertex { + position: (-6.05248, 48.2657, -7.99154), + }, + Vertex { + position: (-5.73614, 44.868, -7.6752), + }, + Vertex { + position: (-3.14531, 40.6708, -5.08437), + }, + Vertex { + position: (-3.20539, 36.8733, -5.14445), + }, + Vertex { + position: (-2.97944, 48.2657, -10.0434), + }, + Vertex { + position: (-2.80399, 44.868, -9.63333), + }, + Vertex { + position: (-1.36888, 40.6708, -6.27171), + }, + Vertex { + position: (-1.40037, 36.8733, -6.35253), + }, + Vertex { + position: (0.831025, 48.2657, -10.7904), + }, + Vertex { + position: (0.831025, 44.868, -10.3463), + }, + Vertex { + position: (0.831025, 40.6708, -6.70429), + }, + Vertex { + position: (0.831025, 36.8733, -6.79312), + }, + Vertex { + position: (4.64149, 48.2657, -10.0434), + }, + Vertex { + position: (4.46604, 44.868, -9.63333), + }, + Vertex { + position: (3.03093, 40.6708, -6.27171), + }, + Vertex { + position: (3.06242, 36.8733, -6.35253), + }, + Vertex { + position: (7.71453, 48.2657, -7.99154), + }, + Vertex { + position: (7.39819, 44.868, -7.6752), + }, + Vertex { + position: (4.80736, 40.6708, -5.08437), + }, + Vertex { + position: (4.86744, 36.8733, -5.14445), + }, + Vertex { + position: (9.76642, 48.2657, -4.9185), + }, + Vertex { + position: (9.35632, 44.868, -4.74305), + }, + Vertex { + position: (5.9947, 40.6708, -3.30794), + }, + Vertex { + position: (6.07552, 36.8733, -3.33943), + }, + Vertex { + position: (13.8001, 34.3417, -1.10804), + }, + Vertex { + position: (24.282, 32.6095, -1.10804), + }, + Vertex { + position: (33.6979, 30.8773, -1.10804), + }, + Vertex { + position: (37.7841, 28.3457, -1.10804), + }, + Vertex { + position: (12.795, 34.3417, 3.98234), + }, + Vertex { + position: (22.4646, 32.6095, 8.09647), + }, + Vertex { + position: (31.1507, 30.8773, 11.7922), + }, + Vertex { + position: (34.9202, 28.3457, 13.396), + }, + Vertex { + position: (10.0391, 34.3417, 8.10003), + }, + Vertex { + position: (17.4812, 32.6095, 15.5422), + }, + Vertex { + position: (24.1665, 30.8773, 22.2275), + }, + Vertex { + position: (27.0677, 28.3457, 25.1286), + }, + Vertex { + position: (5.9214, 34.3417, 10.856), + }, + Vertex { + position: (10.0355, 32.6095, 20.5255), + }, + Vertex { + position: (13.7313, 30.8773, 29.2117), + }, + Vertex { + position: (15.3351, 28.3457, 32.9812), + }, + Vertex { + position: (0.831025, 34.3417, 11.8611), + }, + Vertex { + position: (0.831025, 32.6095, 22.3429), + }, + Vertex { + position: (0.831025, 30.8773, 31.7589), + }, + Vertex { + position: (0.831025, 28.3457, 35.845), + }, + Vertex { + position: (-4.25935, 34.3417, 10.856), + }, + Vertex { + position: (-8.37348, 32.6095, 20.5255), + }, + Vertex { + position: (-12.0692, 30.8773, 29.2117), + }, + Vertex { + position: (-13.673, 28.3457, 32.9812), + }, + Vertex { + position: (-8.37704, 34.3417, 8.10003), + }, + Vertex { + position: (-15.8192, 32.6095, 15.5422), + }, + Vertex { + position: (-22.5045, 30.8773, 22.2275), + }, + Vertex { + position: (-25.4056, 28.3457, 25.1286), + }, + Vertex { + position: (-11.133, 34.3417, 3.98234), + }, + Vertex { + position: (-20.8025, 32.6095, 8.09647), + }, + Vertex { + position: (-29.4887, 30.8773, 11.7922), + }, + Vertex { + position: (-33.2582, 28.3457, 13.396), + }, + Vertex { + position: (-12.1381, 34.3417, -1.10804), + }, + Vertex { + position: (-22.62, 32.6095, -1.10804), + }, + Vertex { + position: (-32.0359, 30.8773, -1.10804), + }, + Vertex { + position: (-36.122, 28.3457, -1.10804), + }, + Vertex { + position: (-11.133, 34.3417, -6.19841), + }, + Vertex { + position: (-20.8025, 32.6095, -10.3125), + }, + Vertex { + position: (-29.4887, 30.8773, -14.0083), + }, + Vertex { + position: (-33.2582, 28.3457, -15.6121), + }, + Vertex { + position: (-8.37704, 34.3417, -10.3161), + }, + Vertex { + position: (-15.8192, 32.6095, -17.7582), + }, + Vertex { + position: (-22.5045, 30.8773, -24.4435), + }, + Vertex { + position: (-25.4056, 28.3457, -27.3447), + }, + Vertex { + position: (-4.25935, 34.3417, -13.072), + }, + Vertex { + position: (-8.37348, 32.6095, -22.7416), + }, + Vertex { + position: (-12.0692, 30.8773, -31.4277), + }, + Vertex { + position: (-13.673, 28.3457, -35.1972), + }, + Vertex { + position: (0.831025, 34.3417, -14.0771), + }, + Vertex { + position: (0.831025, 32.6095, -24.559), + }, + Vertex { + position: (0.831025, 30.8773, -33.9749), + }, + Vertex { + position: (0.831025, 28.3457, -38.0611), + }, + Vertex { + position: (5.9214, 34.3417, -13.072), + }, + Vertex { + position: (10.0355, 32.6095, -22.7416), + }, + Vertex { + position: (13.7313, 30.8773, -31.4277), + }, + Vertex { + position: (15.3351, 28.3457, -35.1972), + }, + Vertex { + position: (10.0391, 34.3417, -10.3161), + }, + Vertex { + position: (17.4812, 32.6095, -17.7582), + }, + Vertex { + position: (24.1665, 30.8773, -24.4435), + }, + Vertex { + position: (27.0677, 28.3457, -27.3447), + }, + Vertex { + position: (12.795, 34.3417, -6.19841), + }, + Vertex { + position: (22.4646, 32.6095, -10.3125), + }, + Vertex { + position: (31.1507, 30.8773, -14.0083), + }, + Vertex { + position: (34.9202, 28.3457, -15.6121), + }, ]; pub const NORMALS: [Normal; 531] = [ - Normal { normal: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices - // start at 1 - Normal { normal: (-0.966742, -0.255752, 0.0) }, - Normal { normal: (-0.966824, 0.255443, 0.0) }, - Normal { normal: (-0.092052, 0.995754, 0.0) }, - Normal { normal: (0.68205, 0.731305, 0.0) }, - Normal { normal: (0.870301, 0.492521, -0.0) }, - Normal { normal: (-0.893014, -0.256345, -0.369882) }, - Normal { normal: (-0.893437, 0.255997, -0.369102) }, - Normal { normal: (-0.0838771, 0.995843, -0.0355068) }, - Normal { normal: (0.629724, 0.73186, 0.260439) }, - Normal { normal: (0.803725, 0.49337, 0.332584) }, - Normal { normal: (-0.683407, -0.256729, -0.683407) }, - Normal { normal: (-0.683531, 0.256067, -0.683531) }, - Normal { normal: (-0.0649249, 0.995776, -0.0649248) }, - Normal { normal: (0.481398, 0.732469, 0.481398) }, - Normal { normal: (0.614804, 0.493997, 0.614804) }, - Normal { normal: (-0.369882, -0.256345, -0.893014) }, - Normal { normal: (-0.369102, 0.255997, -0.893437) }, - Normal { normal: (-0.0355067, 0.995843, -0.0838772) }, - Normal { normal: (0.260439, 0.73186, 0.629724) }, - Normal { normal: (0.332584, 0.49337, 0.803725) }, - Normal { normal: (-0.00284834, -0.257863, -0.966177) }, - Normal { normal: (-0.00192311, 0.254736, -0.967009) }, - Normal { normal: (-0.000266114, 0.995734, -0.0922702) }, - Normal { normal: (0.0, 0.731295, 0.682061) }, - Normal { normal: (0.0, 0.492521, 0.870301) }, - Normal { normal: (0.379058, -0.3593, -0.852771) }, - Normal { normal: (0.37711, 0.149086, -0.914091) }, - Normal { normal: (0.0275022, 0.992081, -0.122551) }, - Normal { normal: (-0.26101, 0.726762, 0.635367) }, - Normal { normal: (-0.332485, 0.492546, 0.804271) }, - Normal { normal: (0.663548, -0.410791, -0.625264) }, - Normal { normal: (0.712664, 0.0737216, -0.697621) }, - Normal { normal: (0.0997268, 0.987509, -0.121984) }, - Normal { normal: (-0.48732, 0.723754, 0.488568) }, - Normal { normal: (-0.615242, 0.492602, 0.615484) }, - Normal { normal: (0.880028, -0.332908, -0.338709) }, - Normal { normal: (0.917276, 0.167113, -0.361493) }, - Normal { normal: (0.113584, 0.992365, -0.0480695) }, - Normal { normal: (-0.63415, 0.727508, 0.261889) }, - Normal { normal: (-0.804126, 0.492634, 0.332705) }, - Normal { normal: (0.96669, -0.255738, 0.0104537) }, - Normal { normal: (0.967442, 0.252962, 0.00810329) }, - Normal { normal: (0.0934365, 0.995624, 0.00128063) }, - Normal { normal: (-0.682167, 0.731196, -0.00034353) }, - Normal { normal: (-0.870322, 0.492483, -0.0) }, - Normal { normal: (0.893014, -0.256345, 0.369882) }, - Normal { normal: (0.893437, 0.255997, 0.369102) }, - Normal { normal: (0.0838768, 0.995843, 0.0355066) }, - Normal { normal: (-0.629724, 0.73186, -0.260439) }, - Normal { normal: (-0.803725, 0.49337, -0.332584) }, - Normal { normal: (0.683407, -0.256729, 0.683407) }, - Normal { normal: (0.683531, 0.256067, 0.683531) }, - Normal { normal: (0.0649249, 0.995776, 0.0649249) }, - Normal { normal: (-0.481398, 0.732469, -0.481398) }, - Normal { normal: (-0.614804, 0.493997, -0.614804) }, - Normal { normal: (0.369882, -0.256345, 0.893014) }, - Normal { normal: (0.369102, 0.255997, 0.893437) }, - Normal { normal: (0.0355067, 0.995843, 0.083877) }, - Normal { normal: (-0.260439, 0.73186, -0.629724) }, - Normal { normal: (-0.332584, 0.49337, -0.803725) }, - Normal { normal: (0.0, -0.255752, 0.966742) }, - Normal { normal: (0.0, 0.255443, 0.966824) }, - Normal { normal: (0.0, 0.995754, 0.092052) }, - Normal { normal: (0.0, 0.731305, -0.68205) }, - Normal { normal: (-0.0, 0.492521, -0.870301) }, - Normal { normal: (-0.369882, -0.256345, 0.893014) }, - Normal { normal: (-0.369102, 0.255996, 0.893437) }, - Normal { normal: (-0.0355068, 0.995843, 0.0838771) }, - Normal { normal: (0.260439, 0.73186, -0.629724) }, - Normal { normal: (0.332584, 0.49337, -0.803725) }, - Normal { normal: (-0.683407, -0.256729, 0.683407) }, - Normal { normal: (-0.683531, 0.256067, 0.683531) }, - Normal { normal: (-0.0649249, 0.995776, 0.064925) }, - Normal { normal: (0.481398, 0.732469, -0.481398) }, - Normal { normal: (0.614804, 0.493997, -0.614804) }, - Normal { normal: (-0.893014, -0.256345, 0.369882) }, - Normal { normal: (-0.893437, 0.255997, 0.369102) }, - Normal { normal: (-0.0838767, 0.995843, 0.0355066) }, - Normal { normal: (0.629724, 0.73186, -0.260439) }, - Normal { normal: (0.803725, 0.49337, -0.332584) }, - Normal { normal: (0.915321, 0.402725, 0.0) }, - Normal { normal: (0.941808, 0.336151, -0.0) }, - Normal { normal: (0.97869, 0.205342, 0.0) }, - Normal { normal: (0.997804, -0.0662397, 0.0) }, - Normal { normal: (0.845438, 0.403546, 0.349835) }, - Normal { normal: (0.869996, 0.336859, 0.360047) }, - Normal { normal: (0.904193, 0.205791, 0.37428) }, - Normal { normal: (0.921879, -0.0663697, 0.381752) }, - Normal { normal: (0.646802, 0.404096, 0.646802) }, - Normal { normal: (0.665655, 0.337351, 0.665655) }, - Normal { normal: (0.691923, 0.20612, 0.691923) }, - Normal { normal: (0.705542, -0.0664796, 0.705543) }, - Normal { normal: (0.349835, 0.403546, 0.845438) }, - Normal { normal: (0.360047, 0.336859, 0.869996) }, - Normal { normal: (0.37428, 0.205791, 0.904193) }, - Normal { normal: (0.381752, -0.0663697, 0.921879) }, - Normal { normal: (-0.0, 0.402725, 0.915321) }, - Normal { normal: (0.0, 0.336151, 0.941808) }, - Normal { normal: (-0.0, 0.205342, 0.97869) }, - Normal { normal: (-0.0, -0.0662397, 0.997804) }, - Normal { normal: (-0.349835, 0.403546, 0.845438) }, - Normal { normal: (-0.360047, 0.336859, 0.869996) }, - Normal { normal: (-0.37428, 0.205791, 0.904193) }, - Normal { normal: (-0.381752, -0.0663697, 0.921879) }, - Normal { normal: (-0.646802, 0.404096, 0.646802) }, - Normal { normal: (-0.665655, 0.337351, 0.665655) }, - Normal { normal: (-0.691923, 0.20612, 0.691923) }, - Normal { normal: (-0.705543, -0.0664796, 0.705543) }, - Normal { normal: (-0.845438, 0.403546, 0.349835) }, - Normal { normal: (-0.869996, 0.336859, 0.360047) }, - Normal { normal: (-0.904193, 0.205791, 0.37428) }, - Normal { normal: (-0.921879, -0.0663697, 0.381752) }, - Normal { normal: (-0.915321, 0.402725, -0.0) }, - Normal { normal: (-0.941808, 0.336151, -0.0) }, - Normal { normal: (-0.97869, 0.205342, -0.0) }, - Normal { normal: (-0.997804, -0.0662397, -0.0) }, - Normal { normal: (-0.845438, 0.403546, -0.349835) }, - Normal { normal: (-0.869996, 0.336859, -0.360047) }, - Normal { normal: (-0.904193, 0.205791, -0.37428) }, - Normal { normal: (-0.921879, -0.0663697, -0.381752) }, - Normal { normal: (-0.646802, 0.404096, -0.646802) }, - Normal { normal: (-0.665655, 0.337351, -0.665655) }, - Normal { normal: (-0.691923, 0.20612, -0.691923) }, - Normal { normal: (-0.705542, -0.0664796, -0.705543) }, - Normal { normal: (-0.349835, 0.403546, -0.845438) }, - Normal { normal: (-0.360047, 0.336859, -0.869996) }, - Normal { normal: (-0.37428, 0.205791, -0.904193) }, - Normal { normal: (-0.381752, -0.0663697, -0.921879) }, - Normal { normal: (0.0, 0.402725, -0.915321) }, - Normal { normal: (-0.0, 0.336151, -0.941808) }, - Normal { normal: (0.0, 0.205342, -0.97869) }, - Normal { normal: (0.0, -0.0662397, -0.997804) }, - Normal { normal: (0.349835, 0.403546, -0.845438) }, - Normal { normal: (0.360047, 0.336859, -0.869996) }, - Normal { normal: (0.37428, 0.205791, -0.904193) }, - Normal { normal: (0.381752, -0.0663697, -0.921879) }, - Normal { normal: (0.646802, 0.404096, -0.646802) }, - Normal { normal: (0.665655, 0.337351, -0.665655) }, - Normal { normal: (0.691923, 0.20612, -0.691923) }, - Normal { normal: (0.705543, -0.0664796, -0.705542) }, - Normal { normal: (0.845438, 0.403546, -0.349835) }, - Normal { normal: (0.869996, 0.336859, -0.360047) }, - Normal { normal: (0.904193, 0.205791, -0.37428) }, - Normal { normal: (0.921879, -0.0663697, -0.381752) }, - Normal { normal: (0.900182, -0.435513, -0.0) }, - Normal { normal: (0.729611, -0.683863, -0.0) }, - Normal { normal: (0.693951, -0.720022, -0.0) }, - Normal { normal: (0.79395, -0.607984, 0.0) }, - Normal { normal: (0.831437, -0.43618, 0.344179) }, - Normal { normal: (0.673512, -0.684665, 0.278594) }, - Normal { normal: (0.640399, -0.720924, 0.264874) }, - Normal { normal: (0.732949, -0.608996, 0.303166) }, - Normal { normal: (0.636092, -0.436777, 0.636092) }, - Normal { normal: (0.514965, -0.685289, 0.514965) }, - Normal { normal: (0.489651, -0.721446, 0.489651) }, - Normal { normal: (0.560555, -0.609554, 0.560555) }, - Normal { normal: (0.344179, -0.43618, 0.831437) }, - Normal { normal: (0.278594, -0.684665, 0.673512) }, - Normal { normal: (0.264874, -0.720924, 0.640399) }, - Normal { normal: (0.303166, -0.608996, 0.732949) }, - Normal { normal: (0.0, -0.435513, 0.900182) }, - Normal { normal: (-0.0, -0.683863, 0.729611) }, - Normal { normal: (0.0, -0.720022, 0.693951) }, - Normal { normal: (-0.0, -0.607984, 0.79395) }, - Normal { normal: (-0.344179, -0.43618, 0.831437) }, - Normal { normal: (-0.278594, -0.684665, 0.673512) }, - Normal { normal: (-0.264874, -0.720924, 0.640399) }, - Normal { normal: (-0.303166, -0.608996, 0.732949) }, - Normal { normal: (-0.636092, -0.436777, 0.636092) }, - Normal { normal: (-0.514965, -0.685289, 0.514965) }, - Normal { normal: (-0.489651, -0.721446, 0.489651) }, - Normal { normal: (-0.560555, -0.609554, 0.560555) }, - Normal { normal: (-0.831437, -0.43618, 0.344179) }, - Normal { normal: (-0.673512, -0.684665, 0.278595) }, - Normal { normal: (-0.640399, -0.720924, 0.264874) }, - Normal { normal: (-0.732949, -0.608996, 0.303166) }, - Normal { normal: (-0.900182, -0.435513, -0.0) }, - Normal { normal: (-0.729611, -0.683863, -0.0) }, - Normal { normal: (-0.693951, -0.720022, 0.0) }, - Normal { normal: (-0.79395, -0.607983, -0.0) }, - Normal { normal: (-0.831437, -0.43618, -0.344179) }, - Normal { normal: (-0.673512, -0.684665, -0.278594) }, - Normal { normal: (-0.640399, -0.720924, -0.264874) }, - Normal { normal: (-0.732949, -0.608996, -0.303166) }, - Normal { normal: (-0.636092, -0.436777, -0.636092) }, - Normal { normal: (-0.514965, -0.685289, -0.514965) }, - Normal { normal: (-0.489651, -0.721446, -0.489651) }, - Normal { normal: (-0.560555, -0.609554, -0.560555) }, - Normal { normal: (-0.344179, -0.43618, -0.831437) }, - Normal { normal: (-0.278594, -0.684665, -0.673512) }, - Normal { normal: (-0.264874, -0.720924, -0.640399) }, - Normal { normal: (-0.303166, -0.608996, -0.732949) }, - Normal { normal: (-0.0, -0.435513, -0.900182) }, - Normal { normal: (0.0, -0.683863, -0.729611) }, - Normal { normal: (-0.0, -0.720022, -0.693951) }, - Normal { normal: (0.0, -0.607984, -0.79395) }, - Normal { normal: (0.344179, -0.43618, -0.831437) }, - Normal { normal: (0.278594, -0.684665, -0.673512) }, - Normal { normal: (0.264874, -0.720924, -0.640399) }, - Normal { normal: (0.303167, -0.608996, -0.732949) }, - Normal { normal: (0.636092, -0.436777, -0.636092) }, - Normal { normal: (0.514965, -0.685289, -0.514965) }, - Normal { normal: (0.489651, -0.721446, -0.489651) }, - Normal { normal: (0.560555, -0.609554, -0.560555) }, - Normal { normal: (0.831437, -0.43618, -0.344179) }, - Normal { normal: (0.673512, -0.684665, -0.278595) }, - Normal { normal: (0.640399, -0.720924, -0.264874) }, - Normal { normal: (0.732949, -0.608996, -0.303166) }, - Normal { normal: (0.62386, -0.781536, 0.0) }, - Normal { normal: (0.177291, -0.984159, -0.0) }, - Normal { normal: (0.0492072, -0.998789, 0.0) }, - Normal { normal: (0.0, -1.0, -0.0) }, - Normal { normal: (0.576229, -0.781801, 0.238217) }, - Normal { normal: (0.163629, -0.984208, 0.0675273) }, - Normal { normal: (0.0454217, -0.998792, 0.0187357) }, - Normal { normal: (0.440416, -0.782348, 0.440416) }, - Normal { normal: (0.124903, -0.984276, 0.124903) }, - Normal { normal: (0.0346621, -0.998798, 0.0346621) }, - Normal { normal: (0.238217, -0.781801, 0.576229) }, - Normal { normal: (0.0675273, -0.984208, 0.163629) }, - Normal { normal: (0.0187357, -0.998792, 0.0454217) }, - Normal { normal: (-0.0, -0.781536, 0.62386) }, - Normal { normal: (0.0, -0.984159, 0.177291) }, - Normal { normal: (-0.0, -0.998789, 0.0492072) }, - Normal { normal: (-0.238216, -0.781801, 0.576229) }, - Normal { normal: (-0.0675273, -0.984208, 0.163629) }, - Normal { normal: (-0.0187357, -0.998792, 0.0454217) }, - Normal { normal: (-0.440416, -0.782348, 0.440416) }, - Normal { normal: (-0.124903, -0.984276, 0.124903) }, - Normal { normal: (-0.0346621, -0.998798, 0.0346621) }, - Normal { normal: (-0.576229, -0.781801, 0.238217) }, - Normal { normal: (-0.163629, -0.984208, 0.0675273) }, - Normal { normal: (-0.0454217, -0.998792, 0.0187357) }, - Normal { normal: (-0.62386, -0.781536, -0.0) }, - Normal { normal: (-0.177291, -0.984159, 0.0) }, - Normal { normal: (-0.0492072, -0.998789, -0.0) }, - Normal { normal: (-0.576229, -0.781801, -0.238217) }, - Normal { normal: (-0.163629, -0.984208, -0.0675273) }, - Normal { normal: (-0.0454217, -0.998792, -0.0187357) }, - Normal { normal: (-0.440416, -0.782348, -0.440416) }, - Normal { normal: (-0.124903, -0.984276, -0.124903) }, - Normal { normal: (-0.0346621, -0.998798, -0.0346621) }, - Normal { normal: (-0.238217, -0.781801, -0.576229) }, - Normal { normal: (-0.0675273, -0.984208, -0.163629) }, - Normal { normal: (-0.0187357, -0.998792, -0.0454217) }, - Normal { normal: (0.0, -0.781536, -0.62386) }, - Normal { normal: (-0.0, -0.984159, -0.177291) }, - Normal { normal: (0.0, -0.998789, -0.0492072) }, - Normal { normal: (0.238217, -0.781801, -0.576229) }, - Normal { normal: (0.0675273, -0.984208, -0.163629) }, - Normal { normal: (0.0187357, -0.998792, -0.0454217) }, - Normal { normal: (0.440416, -0.782348, -0.440416) }, - Normal { normal: (0.124903, -0.984276, -0.124903) }, - Normal { normal: (0.0346621, -0.998798, -0.0346621) }, - Normal { normal: (0.576229, -0.781801, -0.238217) }, - Normal { normal: (0.163629, -0.984208, -0.0675273) }, - Normal { normal: (0.0454217, -0.998792, -0.0187357) }, - Normal { normal: (0.00778619, -0.99997, -0.000215809) }, - Normal { normal: (0.0391385, -0.999233, -0.000988567) }, - Normal { normal: (0.179511, -0.983746, -0.00436856) }, - Normal { normal: (0.6123, -0.790556, -0.0104598) }, - Normal { normal: (0.986152, -0.165707, -0.00666949) }, - Normal { normal: (0.00703893, -0.812495, 0.582926) }, - Normal { normal: (0.0361273, -0.837257, 0.545614) }, - Normal { normal: (0.161845, -0.810421, 0.563048) }, - Normal { normal: (0.482365, -0.595148, 0.642746) }, - Normal { normal: (0.73872, -0.114593, 0.664199) }, - Normal { normal: (-0.00190867, 0.162121, 0.986769) }, - Normal { normal: (0.0027616, 0.0171073, 0.99985) }, - Normal { normal: (0.0105326, 0.0733989, 0.997247) }, - Normal { normal: (-0.0660406, 0.130069, 0.989303) }, - Normal { normal: (-0.0944272, 0.0165946, 0.995393) }, - Normal { normal: (-0.009203, 0.871509, 0.490293) }, - Normal { normal: (-0.0486064, 0.840609, 0.539457) }, - Normal { normal: (-0.223298, 0.802881, 0.552739) }, - Normal { normal: (-0.596365, 0.559971, 0.575135) }, - Normal { normal: (-0.803337, 0.0682361, 0.591602) }, - Normal { normal: (-0.0105609, 0.999944, 0.000103364) }, - Normal { normal: (-0.0587986, 0.99827, 0.000709759) }, - Normal { normal: (-0.28071, 0.959787, 0.00326876) }, - Normal { normal: (-0.749723, 0.661738, 0.0042684) }, - Normal { normal: (-0.997351, 0.0727144, 0.00205923) }, - Normal { normal: (-0.00879197, 0.871493, -0.49033) }, - Normal { normal: (-0.0464937, 0.841178, -0.538756) }, - Normal { normal: (-0.217909, 0.806807, -0.549161) }, - Normal { normal: (-0.597291, 0.560026, -0.574121) }, - Normal { normal: (-0.804, 0.0629127, -0.591291) }, - Normal { normal: (-0.00180555, 0.161691, -0.98684) }, - Normal { normal: (0.00203087, 0.014555, -0.999892) }, - Normal { normal: (0.00921499, 0.0600698, -0.998152) }, - Normal { normal: (-0.0593333, 0.113865, -0.991723) }, - Normal { normal: (-0.0868992, 0.0122903, -0.996141) }, - Normal { normal: (0.00641779, -0.812379, -0.583094) }, - Normal { normal: (0.0337833, -0.837512, -0.545373) }, - Normal { normal: (0.157112, -0.811947, -0.56219) }, - Normal { normal: (0.484407, -0.589365, -0.646528) }, - Normal { normal: (0.73887, -0.10132, -0.666187) }, - Normal { normal: (0.946512, 0.32265, -0.0033571) }, - Normal { normal: (0.82583, 0.56387, -0.00745213) }, - Normal { normal: (0.650011, 0.759893, -0.00693681) }, - Normal { normal: (0.532429, 0.846458, -0.00524544) }, - Normal { normal: (0.725608, 0.259351, 0.637362) }, - Normal { normal: (0.645945, 0.461988, 0.607719) }, - Normal { normal: (0.531614, 0.63666, 0.558615) }, - Normal { normal: (0.424964, 0.681717, 0.59554) }, - Normal { normal: (-0.0495616, -0.019755, 0.998576) }, - Normal { normal: (-0.0378162, -0.0356243, 0.99865) }, - Normal { normal: (-0.0379139, -0.0365122, 0.998614) }, - Normal { normal: (-0.168854, -0.297946, 0.93953) }, - Normal { normal: (-0.742342, -0.299166, 0.599523) }, - Normal { normal: (-0.619602, -0.529406, 0.579503) }, - Normal { normal: (-0.483708, -0.685761, 0.543837) }, - Normal { normal: (-0.445293, -0.794355, 0.413176) }, - Normal { normal: (-0.926513, -0.376257, 0.00199587) }, - Normal { normal: (-0.75392, -0.656952, 0.00431723) }, - Normal { normal: (-0.566224, -0.824244, 0.00346105) }, - Normal { normal: (-0.481804, -0.876277, 0.00185047) }, - Normal { normal: (-0.744675, -0.294424, -0.598977) }, - Normal { normal: (-0.621949, -0.528114, -0.578165) }, - Normal { normal: (-0.481171, -0.68834, -0.542828) }, - Normal { normal: (-0.438055, -0.797035, -0.415744) }, - Normal { normal: (-0.0443368, -0.0170558, -0.998871) }, - Normal { normal: (-0.0261761, -0.0281665, -0.99926) }, - Normal { normal: (-0.0252939, -0.0283323, -0.999278) }, - Normal { normal: (-0.157482, -0.289392, -0.944167) }, - Normal { normal: (0.728244, 0.25241, -0.637142) }, - Normal { normal: (0.647055, 0.459725, -0.608254) }, - Normal { normal: (0.522994, 0.640657, -0.562171) }, - Normal { normal: (0.409978, 0.682857, -0.604669) }, - Normal { normal: (-0.230787, 0.972982, -0.00652338) }, - Normal { normal: (-0.548936, 0.835863, -0.00151111) }, - Normal { normal: (-0.875671, 0.482807, 0.00989278) }, - Normal { normal: (-0.877554, 0.479097, 0.0190923) }, - Normal { normal: (-0.69619, 0.717439, 0.024497) }, - Normal { normal: (-0.152878, 0.687211, 0.71019) }, - Normal { normal: (-0.316721, 0.63775, 0.702113) }, - Normal { normal: (-0.601067, 0.471452, 0.64533) }, - Normal { normal: (-0.635889, 0.44609, 0.6298) }, - Normal { normal: (-0.435746, 0.601008, 0.670011) }, - Normal { normal: (0.111112, -0.0850694, 0.99016) }, - Normal { normal: (0.22331, 0.00654036, 0.974726) }, - Normal { normal: (0.190097, 0.154964, 0.969458) }, - Normal { normal: (0.00527077, 0.189482, 0.98187) }, - Normal { normal: (-0.0117518, 0.246688, 0.969024) }, - Normal { normal: (0.343906, -0.722796, 0.599412) }, - Normal { normal: (0.572489, -0.567656, 0.591627) }, - Normal { normal: (0.787436, -0.256459, 0.560512) }, - Normal { normal: (0.647097, -0.306374, 0.698141) }, - Normal { normal: (0.427528, -0.499343, 0.753576) }, - Normal { normal: (0.410926, -0.911668, 0.00128446) }, - Normal { normal: (0.67152, -0.740986, -0.000899122) }, - Normal { normal: (0.922026, -0.38706, -0.00725269) }, - Normal { normal: (0.84691, -0.531556, -0.0138542) }, - Normal { normal: (0.535925, -0.8442, -0.0105045) }, - Normal { normal: (0.341188, -0.722822, -0.600931) }, - Normal { normal: (0.578664, -0.561139, -0.591838) }, - Normal { normal: (0.784869, -0.25102, -0.566542) }, - Normal { normal: (0.642681, -0.302257, -0.70399) }, - Normal { normal: (0.418589, -0.500042, -0.758117) }, - Normal { normal: (0.115806, -0.0791394, -0.990114) }, - Normal { normal: (0.232811, 0.0125652, -0.972441) }, - Normal { normal: (0.206662, 0.153601, -0.96628) }, - Normal { normal: (0.0244996, 0.161443, -0.986578) }, - Normal { normal: (0.00338193, 0.211115, -0.977455) }, - Normal { normal: (-0.134912, 0.687491, -0.713551) }, - Normal { normal: (-0.31954, 0.633073, -0.705062) }, - Normal { normal: (-0.603902, 0.461442, -0.649903) }, - Normal { normal: (-0.631816, 0.437169, -0.640072) }, - Normal { normal: (-0.424306, 0.612706, -0.66675) }, - Normal { normal: (-0.4258, 0.904753, 0.0108049) }, - Normal { normal: (0.0220472, 0.999756, 0.00162273) }, - Normal { normal: (0.999599, 0.0258705, 0.0115556) }, - Normal { normal: (0.709585, -0.704553, 0.00967183) }, - Normal { normal: (-0.259858, 0.791936, 0.552549) }, - Normal { normal: (0.00953916, 0.99972, -0.0216718) }, - Normal { normal: (0.410156, 0.332912, -0.849083) }, - Normal { normal: (0.541523, -0.54862, -0.637) }, - Normal { normal: (0.0463104, 0.455224, 0.889172) }, - Normal { normal: (-0.0106883, 0.988794, 0.148901) }, - Normal { normal: (-0.0443756, 0.682947, -0.729118) }, - Normal { normal: (0.122825, 0.00923214, -0.992385) }, - Normal { normal: (0.481839, -0.180439, 0.85748) }, - Normal { normal: (0.455272, 0.736752, 0.499925) }, - Normal { normal: (-0.220542, 0.907193, -0.358276) }, - Normal { normal: (-0.23592, 0.657249, -0.715797) }, - Normal { normal: (0.728092, -0.685302, -0.0155853) }, - Normal { normal: (0.888739, 0.45811, -0.0166791) }, - Normal { normal: (-0.260097, 0.965582, 0.000800195) }, - Normal { normal: (-0.371612, 0.928378, -0.00441745) }, - Normal { normal: (0.480166, -0.17836, -0.858853) }, - Normal { normal: (0.488103, 0.716801, -0.497947) }, - Normal { normal: (-0.222004, 0.905399, 0.361893) }, - Normal { normal: (-0.235405, 0.66318, 0.710477) }, - Normal { normal: (0.0587203, 0.437704, -0.8972) }, - Normal { normal: (0.00132612, 0.986459, -0.164003) }, - Normal { normal: (-0.0441901, 0.681677, 0.730317) }, - Normal { normal: (0.138801, -0.0341896, 0.98973) }, - Normal { normal: (-0.25889, 0.797206, -0.54538) }, - Normal { normal: (0.0122703, 0.999739, 0.0192865) }, - Normal { normal: (0.39863, 0.35489, 0.845663) }, - Normal { normal: (0.537564, -0.5814, 0.610737) }, - Normal { normal: (-0.0, 1.0, 0.0) }, - Normal { normal: (0.82454, 0.565804, 0.0) }, - Normal { normal: (0.917701, -0.397272, 0.0) }, - Normal { normal: (0.935269, -0.353939, 0.000112842) }, - Normal { normal: (0.780712, 0.624891, 0.0) }, - Normal { normal: (0.762641, 0.565035, 0.314825) }, - Normal { normal: (0.847982, -0.397998, 0.350034) }, - Normal { normal: (0.864141, -0.355261, 0.356441) }, - Normal { normal: (0.720991, 0.625625, 0.297933) }, - Normal { normal: (0.583357, 0.565165, 0.583338) }, - Normal { normal: (0.648485, -0.398726, 0.648448) }, - Normal { normal: (0.660872, -0.355894, 0.660748) }, - Normal { normal: (0.551862, 0.62529, 0.55178) }, - Normal { normal: (0.314824, 0.565051, 0.762629) }, - Normal { normal: (0.350045, -0.397976, 0.847988) }, - Normal { normal: (0.356474, -0.3552, 0.864153) }, - Normal { normal: (0.297983, 0.625515, 0.721067) }, - Normal { normal: (-0.0, 0.565804, 0.82454) }, - Normal { normal: (-0.0, -0.397272, 0.917701) }, - Normal { normal: (-0.000112839, -0.353939, 0.935269) }, - Normal { normal: (-0.0, 0.624891, 0.780712) }, - Normal { normal: (-0.314825, 0.565035, 0.762641) }, - Normal { normal: (-0.350034, -0.397998, 0.847982) }, - Normal { normal: (-0.356441, -0.355261, 0.864141) }, - Normal { normal: (-0.297933, 0.625625, 0.720991) }, - Normal { normal: (-0.583338, 0.565165, 0.583357) }, - Normal { normal: (-0.648448, -0.398726, 0.648485) }, - Normal { normal: (-0.660748, -0.355894, 0.660872) }, - Normal { normal: (-0.55178, 0.62529, 0.551862) }, - Normal { normal: (-0.762629, 0.565051, 0.314824) }, - Normal { normal: (-0.847988, -0.397976, 0.350045) }, - Normal { normal: (-0.864153, -0.3552, 0.356474) }, - Normal { normal: (-0.721067, 0.625515, 0.297983) }, - Normal { normal: (-0.82454, 0.565804, -0.0) }, - Normal { normal: (-0.917701, -0.397272, -0.0) }, - Normal { normal: (-0.935269, -0.353939, -0.000112839) }, - Normal { normal: (-0.780712, 0.624891, -0.0) }, - Normal { normal: (-0.76264, 0.565035, -0.314825) }, - Normal { normal: (-0.847982, -0.397998, -0.350034) }, - Normal { normal: (-0.864141, -0.355261, -0.356441) }, - Normal { normal: (-0.720991, 0.625625, -0.297933) }, - Normal { normal: (-0.583357, 0.565165, -0.583338) }, - Normal { normal: (-0.648485, -0.398726, -0.648448) }, - Normal { normal: (-0.660872, -0.355894, -0.660748) }, - Normal { normal: (-0.551862, 0.62529, -0.55178) }, - Normal { normal: (-0.314824, 0.565051, -0.762629) }, - Normal { normal: (-0.350045, -0.397976, -0.847988) }, - Normal { normal: (-0.356474, -0.3552, -0.864153) }, - Normal { normal: (-0.297983, 0.625515, -0.721067) }, - Normal { normal: (0.0, 0.565804, -0.82454) }, - Normal { normal: (0.0, -0.397272, -0.917701) }, - Normal { normal: (0.000112839, -0.353939, -0.935269) }, - Normal { normal: (0.0, 0.624891, -0.780712) }, - Normal { normal: (0.314825, 0.565035, -0.762641) }, - Normal { normal: (0.350034, -0.397998, -0.847982) }, - Normal { normal: (0.356441, -0.355261, -0.864141) }, - Normal { normal: (0.297933, 0.625625, -0.720991) }, - Normal { normal: (0.583338, 0.565165, -0.583357) }, - Normal { normal: (0.648448, -0.398726, -0.648485) }, - Normal { normal: (0.660748, -0.355894, -0.660872) }, - Normal { normal: (0.55178, 0.62529, -0.551862) }, - Normal { normal: (0.762629, 0.565051, -0.314824) }, - Normal { normal: (0.847988, -0.397976, -0.350045) }, - Normal { normal: (0.864153, -0.3552, -0.356474) }, - Normal { normal: (0.721067, 0.625515, -0.297983) }, - Normal { normal: (0.236584, 0.971611, 0.0) }, - Normal { normal: (0.173084, 0.984907, -0.0) }, - Normal { normal: (0.379703, 0.925108, 0.0) }, - Normal { normal: (0.526673, 0.850068, 0.0) }, - Normal { normal: (0.217978, 0.971775, 0.0902162) }, - Normal { normal: (0.15959, 0.984977, 0.0659615) }, - Normal { normal: (0.350498, 0.925312, 0.14474) }, - Normal { normal: (0.48559, 0.850653, 0.201474) }, - Normal { normal: (0.166631, 0.971838, 0.166631) }, - Normal { normal: (0.121908, 0.985026, 0.121908) }, - Normal { normal: (0.267668, 0.925585, 0.267668) }, - Normal { normal: (0.371315, 0.851029, 0.371315) }, - Normal { normal: (0.0902162, 0.971775, 0.217978) }, - Normal { normal: (0.0659615, 0.984977, 0.15959) }, - Normal { normal: (0.14474, 0.925312, 0.350498) }, - Normal { normal: (0.201474, 0.850653, 0.48559) }, - Normal { normal: (-0.0, 0.971611, 0.236584) }, - Normal { normal: (0.0, 0.984907, 0.173084) }, - Normal { normal: (0.0, 0.925108, 0.379703) }, - Normal { normal: (0.0, 0.850068, 0.526673) }, - Normal { normal: (-0.0902162, 0.971775, 0.217978) }, - Normal { normal: (-0.0659615, 0.984977, 0.15959) }, - Normal { normal: (-0.14474, 0.925312, 0.350498) }, - Normal { normal: (-0.201474, 0.850653, 0.48559) }, - Normal { normal: (-0.166631, 0.971838, 0.166631) }, - Normal { normal: (-0.121908, 0.985026, 0.121908) }, - Normal { normal: (-0.267668, 0.925585, 0.267668) }, - Normal { normal: (-0.371315, 0.851029, 0.371315) }, - Normal { normal: (-0.217978, 0.971775, 0.0902162) }, - Normal { normal: (-0.15959, 0.984977, 0.0659615) }, - Normal { normal: (-0.350498, 0.925312, 0.14474) }, - Normal { normal: (-0.48559, 0.850653, 0.201474) }, - Normal { normal: (-0.236583, 0.971611, -0.0) }, - Normal { normal: (-0.173084, 0.984907, 0.0) }, - Normal { normal: (-0.379703, 0.925108, -0.0) }, - Normal { normal: (-0.526673, 0.850068, 0.0) }, - Normal { normal: (-0.217978, 0.971775, -0.0902162) }, - Normal { normal: (-0.15959, 0.984977, -0.0659615) }, - Normal { normal: (-0.350498, 0.925312, -0.14474) }, - Normal { normal: (-0.48559, 0.850653, -0.201474) }, - Normal { normal: (-0.166631, 0.971838, -0.166631) }, - Normal { normal: (-0.121908, 0.985026, -0.121908) }, - Normal { normal: (-0.267668, 0.925585, -0.267668) }, - Normal { normal: (-0.371315, 0.851029, -0.371315) }, - Normal { normal: (-0.0902162, 0.971775, -0.217978) }, - Normal { normal: (-0.0659615, 0.984977, -0.15959) }, - Normal { normal: (-0.14474, 0.925312, -0.350498) }, - Normal { normal: (-0.201474, 0.850653, -0.485589) }, - Normal { normal: (0.0, 0.971611, -0.236584) }, - Normal { normal: (-0.0, 0.984907, -0.173084) }, - Normal { normal: (-0.0, 0.925108, -0.379703) }, - Normal { normal: (-0.0, 0.850068, -0.526673) }, - Normal { normal: (0.0902162, 0.971775, -0.217978) }, - Normal { normal: (0.0659615, 0.984977, -0.15959) }, - Normal { normal: (0.14474, 0.925312, -0.350498) }, - Normal { normal: (0.201474, 0.850653, -0.48559) }, - Normal { normal: (0.166631, 0.971838, -0.166631) }, - Normal { normal: (0.121908, 0.985026, -0.121908) }, - Normal { normal: (0.267668, 0.925585, -0.267668) }, - Normal { normal: (0.371315, 0.851029, -0.371315) }, - Normal { normal: (0.217978, 0.971775, -0.0902162) }, - Normal { normal: (0.15959, 0.984977, -0.0659615) }, - Normal { normal: (0.350498, 0.925312, -0.14474) }, - Normal { normal: (0.48559, 0.850653, -0.201474) }, + Normal { + normal: (0.0, 0.0, 0.0), + }, // dummy vector because in the original model indices + // start at 1 + Normal { + normal: (-0.966742, -0.255752, 0.0), + }, + Normal { + normal: (-0.966824, 0.255443, 0.0), + }, + Normal { + normal: (-0.092052, 0.995754, 0.0), + }, + Normal { + normal: (0.68205, 0.731305, 0.0), + }, + Normal { + normal: (0.870301, 0.492521, -0.0), + }, + Normal { + normal: (-0.893014, -0.256345, -0.369882), + }, + Normal { + normal: (-0.893437, 0.255997, -0.369102), + }, + Normal { + normal: (-0.0838771, 0.995843, -0.0355068), + }, + Normal { + normal: (0.629724, 0.73186, 0.260439), + }, + Normal { + normal: (0.803725, 0.49337, 0.332584), + }, + Normal { + normal: (-0.683407, -0.256729, -0.683407), + }, + Normal { + normal: (-0.683531, 0.256067, -0.683531), + }, + Normal { + normal: (-0.0649249, 0.995776, -0.0649248), + }, + Normal { + normal: (0.481398, 0.732469, 0.481398), + }, + Normal { + normal: (0.614804, 0.493997, 0.614804), + }, + Normal { + normal: (-0.369882, -0.256345, -0.893014), + }, + Normal { + normal: (-0.369102, 0.255997, -0.893437), + }, + Normal { + normal: (-0.0355067, 0.995843, -0.0838772), + }, + Normal { + normal: (0.260439, 0.73186, 0.629724), + }, + Normal { + normal: (0.332584, 0.49337, 0.803725), + }, + Normal { + normal: (-0.00284834, -0.257863, -0.966177), + }, + Normal { + normal: (-0.00192311, 0.254736, -0.967009), + }, + Normal { + normal: (-0.000266114, 0.995734, -0.0922702), + }, + Normal { + normal: (0.0, 0.731295, 0.682061), + }, + Normal { + normal: (0.0, 0.492521, 0.870301), + }, + Normal { + normal: (0.379058, -0.3593, -0.852771), + }, + Normal { + normal: (0.37711, 0.149086, -0.914091), + }, + Normal { + normal: (0.0275022, 0.992081, -0.122551), + }, + Normal { + normal: (-0.26101, 0.726762, 0.635367), + }, + Normal { + normal: (-0.332485, 0.492546, 0.804271), + }, + Normal { + normal: (0.663548, -0.410791, -0.625264), + }, + Normal { + normal: (0.712664, 0.0737216, -0.697621), + }, + Normal { + normal: (0.0997268, 0.987509, -0.121984), + }, + Normal { + normal: (-0.48732, 0.723754, 0.488568), + }, + Normal { + normal: (-0.615242, 0.492602, 0.615484), + }, + Normal { + normal: (0.880028, -0.332908, -0.338709), + }, + Normal { + normal: (0.917276, 0.167113, -0.361493), + }, + Normal { + normal: (0.113584, 0.992365, -0.0480695), + }, + Normal { + normal: (-0.63415, 0.727508, 0.261889), + }, + Normal { + normal: (-0.804126, 0.492634, 0.332705), + }, + Normal { + normal: (0.96669, -0.255738, 0.0104537), + }, + Normal { + normal: (0.967442, 0.252962, 0.00810329), + }, + Normal { + normal: (0.0934365, 0.995624, 0.00128063), + }, + Normal { + normal: (-0.682167, 0.731196, -0.00034353), + }, + Normal { + normal: (-0.870322, 0.492483, -0.0), + }, + Normal { + normal: (0.893014, -0.256345, 0.369882), + }, + Normal { + normal: (0.893437, 0.255997, 0.369102), + }, + Normal { + normal: (0.0838768, 0.995843, 0.0355066), + }, + Normal { + normal: (-0.629724, 0.73186, -0.260439), + }, + Normal { + normal: (-0.803725, 0.49337, -0.332584), + }, + Normal { + normal: (0.683407, -0.256729, 0.683407), + }, + Normal { + normal: (0.683531, 0.256067, 0.683531), + }, + Normal { + normal: (0.0649249, 0.995776, 0.0649249), + }, + Normal { + normal: (-0.481398, 0.732469, -0.481398), + }, + Normal { + normal: (-0.614804, 0.493997, -0.614804), + }, + Normal { + normal: (0.369882, -0.256345, 0.893014), + }, + Normal { + normal: (0.369102, 0.255997, 0.893437), + }, + Normal { + normal: (0.0355067, 0.995843, 0.083877), + }, + Normal { + normal: (-0.260439, 0.73186, -0.629724), + }, + Normal { + normal: (-0.332584, 0.49337, -0.803725), + }, + Normal { + normal: (0.0, -0.255752, 0.966742), + }, + Normal { + normal: (0.0, 0.255443, 0.966824), + }, + Normal { + normal: (0.0, 0.995754, 0.092052), + }, + Normal { + normal: (0.0, 0.731305, -0.68205), + }, + Normal { + normal: (-0.0, 0.492521, -0.870301), + }, + Normal { + normal: (-0.369882, -0.256345, 0.893014), + }, + Normal { + normal: (-0.369102, 0.255996, 0.893437), + }, + Normal { + normal: (-0.0355068, 0.995843, 0.0838771), + }, + Normal { + normal: (0.260439, 0.73186, -0.629724), + }, + Normal { + normal: (0.332584, 0.49337, -0.803725), + }, + Normal { + normal: (-0.683407, -0.256729, 0.683407), + }, + Normal { + normal: (-0.683531, 0.256067, 0.683531), + }, + Normal { + normal: (-0.0649249, 0.995776, 0.064925), + }, + Normal { + normal: (0.481398, 0.732469, -0.481398), + }, + Normal { + normal: (0.614804, 0.493997, -0.614804), + }, + Normal { + normal: (-0.893014, -0.256345, 0.369882), + }, + Normal { + normal: (-0.893437, 0.255997, 0.369102), + }, + Normal { + normal: (-0.0838767, 0.995843, 0.0355066), + }, + Normal { + normal: (0.629724, 0.73186, -0.260439), + }, + Normal { + normal: (0.803725, 0.49337, -0.332584), + }, + Normal { + normal: (0.915321, 0.402725, 0.0), + }, + Normal { + normal: (0.941808, 0.336151, -0.0), + }, + Normal { + normal: (0.97869, 0.205342, 0.0), + }, + Normal { + normal: (0.997804, -0.0662397, 0.0), + }, + Normal { + normal: (0.845438, 0.403546, 0.349835), + }, + Normal { + normal: (0.869996, 0.336859, 0.360047), + }, + Normal { + normal: (0.904193, 0.205791, 0.37428), + }, + Normal { + normal: (0.921879, -0.0663697, 0.381752), + }, + Normal { + normal: (0.646802, 0.404096, 0.646802), + }, + Normal { + normal: (0.665655, 0.337351, 0.665655), + }, + Normal { + normal: (0.691923, 0.20612, 0.691923), + }, + Normal { + normal: (0.705542, -0.0664796, 0.705543), + }, + Normal { + normal: (0.349835, 0.403546, 0.845438), + }, + Normal { + normal: (0.360047, 0.336859, 0.869996), + }, + Normal { + normal: (0.37428, 0.205791, 0.904193), + }, + Normal { + normal: (0.381752, -0.0663697, 0.921879), + }, + Normal { + normal: (-0.0, 0.402725, 0.915321), + }, + Normal { + normal: (0.0, 0.336151, 0.941808), + }, + Normal { + normal: (-0.0, 0.205342, 0.97869), + }, + Normal { + normal: (-0.0, -0.0662397, 0.997804), + }, + Normal { + normal: (-0.349835, 0.403546, 0.845438), + }, + Normal { + normal: (-0.360047, 0.336859, 0.869996), + }, + Normal { + normal: (-0.37428, 0.205791, 0.904193), + }, + Normal { + normal: (-0.381752, -0.0663697, 0.921879), + }, + Normal { + normal: (-0.646802, 0.404096, 0.646802), + }, + Normal { + normal: (-0.665655, 0.337351, 0.665655), + }, + Normal { + normal: (-0.691923, 0.20612, 0.691923), + }, + Normal { + normal: (-0.705543, -0.0664796, 0.705543), + }, + Normal { + normal: (-0.845438, 0.403546, 0.349835), + }, + Normal { + normal: (-0.869996, 0.336859, 0.360047), + }, + Normal { + normal: (-0.904193, 0.205791, 0.37428), + }, + Normal { + normal: (-0.921879, -0.0663697, 0.381752), + }, + Normal { + normal: (-0.915321, 0.402725, -0.0), + }, + Normal { + normal: (-0.941808, 0.336151, -0.0), + }, + Normal { + normal: (-0.97869, 0.205342, -0.0), + }, + Normal { + normal: (-0.997804, -0.0662397, -0.0), + }, + Normal { + normal: (-0.845438, 0.403546, -0.349835), + }, + Normal { + normal: (-0.869996, 0.336859, -0.360047), + }, + Normal { + normal: (-0.904193, 0.205791, -0.37428), + }, + Normal { + normal: (-0.921879, -0.0663697, -0.381752), + }, + Normal { + normal: (-0.646802, 0.404096, -0.646802), + }, + Normal { + normal: (-0.665655, 0.337351, -0.665655), + }, + Normal { + normal: (-0.691923, 0.20612, -0.691923), + }, + Normal { + normal: (-0.705542, -0.0664796, -0.705543), + }, + Normal { + normal: (-0.349835, 0.403546, -0.845438), + }, + Normal { + normal: (-0.360047, 0.336859, -0.869996), + }, + Normal { + normal: (-0.37428, 0.205791, -0.904193), + }, + Normal { + normal: (-0.381752, -0.0663697, -0.921879), + }, + Normal { + normal: (0.0, 0.402725, -0.915321), + }, + Normal { + normal: (-0.0, 0.336151, -0.941808), + }, + Normal { + normal: (0.0, 0.205342, -0.97869), + }, + Normal { + normal: (0.0, -0.0662397, -0.997804), + }, + Normal { + normal: (0.349835, 0.403546, -0.845438), + }, + Normal { + normal: (0.360047, 0.336859, -0.869996), + }, + Normal { + normal: (0.37428, 0.205791, -0.904193), + }, + Normal { + normal: (0.381752, -0.0663697, -0.921879), + }, + Normal { + normal: (0.646802, 0.404096, -0.646802), + }, + Normal { + normal: (0.665655, 0.337351, -0.665655), + }, + Normal { + normal: (0.691923, 0.20612, -0.691923), + }, + Normal { + normal: (0.705543, -0.0664796, -0.705542), + }, + Normal { + normal: (0.845438, 0.403546, -0.349835), + }, + Normal { + normal: (0.869996, 0.336859, -0.360047), + }, + Normal { + normal: (0.904193, 0.205791, -0.37428), + }, + Normal { + normal: (0.921879, -0.0663697, -0.381752), + }, + Normal { + normal: (0.900182, -0.435513, -0.0), + }, + Normal { + normal: (0.729611, -0.683863, -0.0), + }, + Normal { + normal: (0.693951, -0.720022, -0.0), + }, + Normal { + normal: (0.79395, -0.607984, 0.0), + }, + Normal { + normal: (0.831437, -0.43618, 0.344179), + }, + Normal { + normal: (0.673512, -0.684665, 0.278594), + }, + Normal { + normal: (0.640399, -0.720924, 0.264874), + }, + Normal { + normal: (0.732949, -0.608996, 0.303166), + }, + Normal { + normal: (0.636092, -0.436777, 0.636092), + }, + Normal { + normal: (0.514965, -0.685289, 0.514965), + }, + Normal { + normal: (0.489651, -0.721446, 0.489651), + }, + Normal { + normal: (0.560555, -0.609554, 0.560555), + }, + Normal { + normal: (0.344179, -0.43618, 0.831437), + }, + Normal { + normal: (0.278594, -0.684665, 0.673512), + }, + Normal { + normal: (0.264874, -0.720924, 0.640399), + }, + Normal { + normal: (0.303166, -0.608996, 0.732949), + }, + Normal { + normal: (0.0, -0.435513, 0.900182), + }, + Normal { + normal: (-0.0, -0.683863, 0.729611), + }, + Normal { + normal: (0.0, -0.720022, 0.693951), + }, + Normal { + normal: (-0.0, -0.607984, 0.79395), + }, + Normal { + normal: (-0.344179, -0.43618, 0.831437), + }, + Normal { + normal: (-0.278594, -0.684665, 0.673512), + }, + Normal { + normal: (-0.264874, -0.720924, 0.640399), + }, + Normal { + normal: (-0.303166, -0.608996, 0.732949), + }, + Normal { + normal: (-0.636092, -0.436777, 0.636092), + }, + Normal { + normal: (-0.514965, -0.685289, 0.514965), + }, + Normal { + normal: (-0.489651, -0.721446, 0.489651), + }, + Normal { + normal: (-0.560555, -0.609554, 0.560555), + }, + Normal { + normal: (-0.831437, -0.43618, 0.344179), + }, + Normal { + normal: (-0.673512, -0.684665, 0.278595), + }, + Normal { + normal: (-0.640399, -0.720924, 0.264874), + }, + Normal { + normal: (-0.732949, -0.608996, 0.303166), + }, + Normal { + normal: (-0.900182, -0.435513, -0.0), + }, + Normal { + normal: (-0.729611, -0.683863, -0.0), + }, + Normal { + normal: (-0.693951, -0.720022, 0.0), + }, + Normal { + normal: (-0.79395, -0.607983, -0.0), + }, + Normal { + normal: (-0.831437, -0.43618, -0.344179), + }, + Normal { + normal: (-0.673512, -0.684665, -0.278594), + }, + Normal { + normal: (-0.640399, -0.720924, -0.264874), + }, + Normal { + normal: (-0.732949, -0.608996, -0.303166), + }, + Normal { + normal: (-0.636092, -0.436777, -0.636092), + }, + Normal { + normal: (-0.514965, -0.685289, -0.514965), + }, + Normal { + normal: (-0.489651, -0.721446, -0.489651), + }, + Normal { + normal: (-0.560555, -0.609554, -0.560555), + }, + Normal { + normal: (-0.344179, -0.43618, -0.831437), + }, + Normal { + normal: (-0.278594, -0.684665, -0.673512), + }, + Normal { + normal: (-0.264874, -0.720924, -0.640399), + }, + Normal { + normal: (-0.303166, -0.608996, -0.732949), + }, + Normal { + normal: (-0.0, -0.435513, -0.900182), + }, + Normal { + normal: (0.0, -0.683863, -0.729611), + }, + Normal { + normal: (-0.0, -0.720022, -0.693951), + }, + Normal { + normal: (0.0, -0.607984, -0.79395), + }, + Normal { + normal: (0.344179, -0.43618, -0.831437), + }, + Normal { + normal: (0.278594, -0.684665, -0.673512), + }, + Normal { + normal: (0.264874, -0.720924, -0.640399), + }, + Normal { + normal: (0.303167, -0.608996, -0.732949), + }, + Normal { + normal: (0.636092, -0.436777, -0.636092), + }, + Normal { + normal: (0.514965, -0.685289, -0.514965), + }, + Normal { + normal: (0.489651, -0.721446, -0.489651), + }, + Normal { + normal: (0.560555, -0.609554, -0.560555), + }, + Normal { + normal: (0.831437, -0.43618, -0.344179), + }, + Normal { + normal: (0.673512, -0.684665, -0.278595), + }, + Normal { + normal: (0.640399, -0.720924, -0.264874), + }, + Normal { + normal: (0.732949, -0.608996, -0.303166), + }, + Normal { + normal: (0.62386, -0.781536, 0.0), + }, + Normal { + normal: (0.177291, -0.984159, -0.0), + }, + Normal { + normal: (0.0492072, -0.998789, 0.0), + }, + Normal { + normal: (0.0, -1.0, -0.0), + }, + Normal { + normal: (0.576229, -0.781801, 0.238217), + }, + Normal { + normal: (0.163629, -0.984208, 0.0675273), + }, + Normal { + normal: (0.0454217, -0.998792, 0.0187357), + }, + Normal { + normal: (0.440416, -0.782348, 0.440416), + }, + Normal { + normal: (0.124903, -0.984276, 0.124903), + }, + Normal { + normal: (0.0346621, -0.998798, 0.0346621), + }, + Normal { + normal: (0.238217, -0.781801, 0.576229), + }, + Normal { + normal: (0.0675273, -0.984208, 0.163629), + }, + Normal { + normal: (0.0187357, -0.998792, 0.0454217), + }, + Normal { + normal: (-0.0, -0.781536, 0.62386), + }, + Normal { + normal: (0.0, -0.984159, 0.177291), + }, + Normal { + normal: (-0.0, -0.998789, 0.0492072), + }, + Normal { + normal: (-0.238216, -0.781801, 0.576229), + }, + Normal { + normal: (-0.0675273, -0.984208, 0.163629), + }, + Normal { + normal: (-0.0187357, -0.998792, 0.0454217), + }, + Normal { + normal: (-0.440416, -0.782348, 0.440416), + }, + Normal { + normal: (-0.124903, -0.984276, 0.124903), + }, + Normal { + normal: (-0.0346621, -0.998798, 0.0346621), + }, + Normal { + normal: (-0.576229, -0.781801, 0.238217), + }, + Normal { + normal: (-0.163629, -0.984208, 0.0675273), + }, + Normal { + normal: (-0.0454217, -0.998792, 0.0187357), + }, + Normal { + normal: (-0.62386, -0.781536, -0.0), + }, + Normal { + normal: (-0.177291, -0.984159, 0.0), + }, + Normal { + normal: (-0.0492072, -0.998789, -0.0), + }, + Normal { + normal: (-0.576229, -0.781801, -0.238217), + }, + Normal { + normal: (-0.163629, -0.984208, -0.0675273), + }, + Normal { + normal: (-0.0454217, -0.998792, -0.0187357), + }, + Normal { + normal: (-0.440416, -0.782348, -0.440416), + }, + Normal { + normal: (-0.124903, -0.984276, -0.124903), + }, + Normal { + normal: (-0.0346621, -0.998798, -0.0346621), + }, + Normal { + normal: (-0.238217, -0.781801, -0.576229), + }, + Normal { + normal: (-0.0675273, -0.984208, -0.163629), + }, + Normal { + normal: (-0.0187357, -0.998792, -0.0454217), + }, + Normal { + normal: (0.0, -0.781536, -0.62386), + }, + Normal { + normal: (-0.0, -0.984159, -0.177291), + }, + Normal { + normal: (0.0, -0.998789, -0.0492072), + }, + Normal { + normal: (0.238217, -0.781801, -0.576229), + }, + Normal { + normal: (0.0675273, -0.984208, -0.163629), + }, + Normal { + normal: (0.0187357, -0.998792, -0.0454217), + }, + Normal { + normal: (0.440416, -0.782348, -0.440416), + }, + Normal { + normal: (0.124903, -0.984276, -0.124903), + }, + Normal { + normal: (0.0346621, -0.998798, -0.0346621), + }, + Normal { + normal: (0.576229, -0.781801, -0.238217), + }, + Normal { + normal: (0.163629, -0.984208, -0.0675273), + }, + Normal { + normal: (0.0454217, -0.998792, -0.0187357), + }, + Normal { + normal: (0.00778619, -0.99997, -0.000215809), + }, + Normal { + normal: (0.0391385, -0.999233, -0.000988567), + }, + Normal { + normal: (0.179511, -0.983746, -0.00436856), + }, + Normal { + normal: (0.6123, -0.790556, -0.0104598), + }, + Normal { + normal: (0.986152, -0.165707, -0.00666949), + }, + Normal { + normal: (0.00703893, -0.812495, 0.582926), + }, + Normal { + normal: (0.0361273, -0.837257, 0.545614), + }, + Normal { + normal: (0.161845, -0.810421, 0.563048), + }, + Normal { + normal: (0.482365, -0.595148, 0.642746), + }, + Normal { + normal: (0.73872, -0.114593, 0.664199), + }, + Normal { + normal: (-0.00190867, 0.162121, 0.986769), + }, + Normal { + normal: (0.0027616, 0.0171073, 0.99985), + }, + Normal { + normal: (0.0105326, 0.0733989, 0.997247), + }, + Normal { + normal: (-0.0660406, 0.130069, 0.989303), + }, + Normal { + normal: (-0.0944272, 0.0165946, 0.995393), + }, + Normal { + normal: (-0.009203, 0.871509, 0.490293), + }, + Normal { + normal: (-0.0486064, 0.840609, 0.539457), + }, + Normal { + normal: (-0.223298, 0.802881, 0.552739), + }, + Normal { + normal: (-0.596365, 0.559971, 0.575135), + }, + Normal { + normal: (-0.803337, 0.0682361, 0.591602), + }, + Normal { + normal: (-0.0105609, 0.999944, 0.000103364), + }, + Normal { + normal: (-0.0587986, 0.99827, 0.000709759), + }, + Normal { + normal: (-0.28071, 0.959787, 0.00326876), + }, + Normal { + normal: (-0.749723, 0.661738, 0.0042684), + }, + Normal { + normal: (-0.997351, 0.0727144, 0.00205923), + }, + Normal { + normal: (-0.00879197, 0.871493, -0.49033), + }, + Normal { + normal: (-0.0464937, 0.841178, -0.538756), + }, + Normal { + normal: (-0.217909, 0.806807, -0.549161), + }, + Normal { + normal: (-0.597291, 0.560026, -0.574121), + }, + Normal { + normal: (-0.804, 0.0629127, -0.591291), + }, + Normal { + normal: (-0.00180555, 0.161691, -0.98684), + }, + Normal { + normal: (0.00203087, 0.014555, -0.999892), + }, + Normal { + normal: (0.00921499, 0.0600698, -0.998152), + }, + Normal { + normal: (-0.0593333, 0.113865, -0.991723), + }, + Normal { + normal: (-0.0868992, 0.0122903, -0.996141), + }, + Normal { + normal: (0.00641779, -0.812379, -0.583094), + }, + Normal { + normal: (0.0337833, -0.837512, -0.545373), + }, + Normal { + normal: (0.157112, -0.811947, -0.56219), + }, + Normal { + normal: (0.484407, -0.589365, -0.646528), + }, + Normal { + normal: (0.73887, -0.10132, -0.666187), + }, + Normal { + normal: (0.946512, 0.32265, -0.0033571), + }, + Normal { + normal: (0.82583, 0.56387, -0.00745213), + }, + Normal { + normal: (0.650011, 0.759893, -0.00693681), + }, + Normal { + normal: (0.532429, 0.846458, -0.00524544), + }, + Normal { + normal: (0.725608, 0.259351, 0.637362), + }, + Normal { + normal: (0.645945, 0.461988, 0.607719), + }, + Normal { + normal: (0.531614, 0.63666, 0.558615), + }, + Normal { + normal: (0.424964, 0.681717, 0.59554), + }, + Normal { + normal: (-0.0495616, -0.019755, 0.998576), + }, + Normal { + normal: (-0.0378162, -0.0356243, 0.99865), + }, + Normal { + normal: (-0.0379139, -0.0365122, 0.998614), + }, + Normal { + normal: (-0.168854, -0.297946, 0.93953), + }, + Normal { + normal: (-0.742342, -0.299166, 0.599523), + }, + Normal { + normal: (-0.619602, -0.529406, 0.579503), + }, + Normal { + normal: (-0.483708, -0.685761, 0.543837), + }, + Normal { + normal: (-0.445293, -0.794355, 0.413176), + }, + Normal { + normal: (-0.926513, -0.376257, 0.00199587), + }, + Normal { + normal: (-0.75392, -0.656952, 0.00431723), + }, + Normal { + normal: (-0.566224, -0.824244, 0.00346105), + }, + Normal { + normal: (-0.481804, -0.876277, 0.00185047), + }, + Normal { + normal: (-0.744675, -0.294424, -0.598977), + }, + Normal { + normal: (-0.621949, -0.528114, -0.578165), + }, + Normal { + normal: (-0.481171, -0.68834, -0.542828), + }, + Normal { + normal: (-0.438055, -0.797035, -0.415744), + }, + Normal { + normal: (-0.0443368, -0.0170558, -0.998871), + }, + Normal { + normal: (-0.0261761, -0.0281665, -0.99926), + }, + Normal { + normal: (-0.0252939, -0.0283323, -0.999278), + }, + Normal { + normal: (-0.157482, -0.289392, -0.944167), + }, + Normal { + normal: (0.728244, 0.25241, -0.637142), + }, + Normal { + normal: (0.647055, 0.459725, -0.608254), + }, + Normal { + normal: (0.522994, 0.640657, -0.562171), + }, + Normal { + normal: (0.409978, 0.682857, -0.604669), + }, + Normal { + normal: (-0.230787, 0.972982, -0.00652338), + }, + Normal { + normal: (-0.548936, 0.835863, -0.00151111), + }, + Normal { + normal: (-0.875671, 0.482807, 0.00989278), + }, + Normal { + normal: (-0.877554, 0.479097, 0.0190923), + }, + Normal { + normal: (-0.69619, 0.717439, 0.024497), + }, + Normal { + normal: (-0.152878, 0.687211, 0.71019), + }, + Normal { + normal: (-0.316721, 0.63775, 0.702113), + }, + Normal { + normal: (-0.601067, 0.471452, 0.64533), + }, + Normal { + normal: (-0.635889, 0.44609, 0.6298), + }, + Normal { + normal: (-0.435746, 0.601008, 0.670011), + }, + Normal { + normal: (0.111112, -0.0850694, 0.99016), + }, + Normal { + normal: (0.22331, 0.00654036, 0.974726), + }, + Normal { + normal: (0.190097, 0.154964, 0.969458), + }, + Normal { + normal: (0.00527077, 0.189482, 0.98187), + }, + Normal { + normal: (-0.0117518, 0.246688, 0.969024), + }, + Normal { + normal: (0.343906, -0.722796, 0.599412), + }, + Normal { + normal: (0.572489, -0.567656, 0.591627), + }, + Normal { + normal: (0.787436, -0.256459, 0.560512), + }, + Normal { + normal: (0.647097, -0.306374, 0.698141), + }, + Normal { + normal: (0.427528, -0.499343, 0.753576), + }, + Normal { + normal: (0.410926, -0.911668, 0.00128446), + }, + Normal { + normal: (0.67152, -0.740986, -0.000899122), + }, + Normal { + normal: (0.922026, -0.38706, -0.00725269), + }, + Normal { + normal: (0.84691, -0.531556, -0.0138542), + }, + Normal { + normal: (0.535925, -0.8442, -0.0105045), + }, + Normal { + normal: (0.341188, -0.722822, -0.600931), + }, + Normal { + normal: (0.578664, -0.561139, -0.591838), + }, + Normal { + normal: (0.784869, -0.25102, -0.566542), + }, + Normal { + normal: (0.642681, -0.302257, -0.70399), + }, + Normal { + normal: (0.418589, -0.500042, -0.758117), + }, + Normal { + normal: (0.115806, -0.0791394, -0.990114), + }, + Normal { + normal: (0.232811, 0.0125652, -0.972441), + }, + Normal { + normal: (0.206662, 0.153601, -0.96628), + }, + Normal { + normal: (0.0244996, 0.161443, -0.986578), + }, + Normal { + normal: (0.00338193, 0.211115, -0.977455), + }, + Normal { + normal: (-0.134912, 0.687491, -0.713551), + }, + Normal { + normal: (-0.31954, 0.633073, -0.705062), + }, + Normal { + normal: (-0.603902, 0.461442, -0.649903), + }, + Normal { + normal: (-0.631816, 0.437169, -0.640072), + }, + Normal { + normal: (-0.424306, 0.612706, -0.66675), + }, + Normal { + normal: (-0.4258, 0.904753, 0.0108049), + }, + Normal { + normal: (0.0220472, 0.999756, 0.00162273), + }, + Normal { + normal: (0.999599, 0.0258705, 0.0115556), + }, + Normal { + normal: (0.709585, -0.704553, 0.00967183), + }, + Normal { + normal: (-0.259858, 0.791936, 0.552549), + }, + Normal { + normal: (0.00953916, 0.99972, -0.0216718), + }, + Normal { + normal: (0.410156, 0.332912, -0.849083), + }, + Normal { + normal: (0.541523, -0.54862, -0.637), + }, + Normal { + normal: (0.0463104, 0.455224, 0.889172), + }, + Normal { + normal: (-0.0106883, 0.988794, 0.148901), + }, + Normal { + normal: (-0.0443756, 0.682947, -0.729118), + }, + Normal { + normal: (0.122825, 0.00923214, -0.992385), + }, + Normal { + normal: (0.481839, -0.180439, 0.85748), + }, + Normal { + normal: (0.455272, 0.736752, 0.499925), + }, + Normal { + normal: (-0.220542, 0.907193, -0.358276), + }, + Normal { + normal: (-0.23592, 0.657249, -0.715797), + }, + Normal { + normal: (0.728092, -0.685302, -0.0155853), + }, + Normal { + normal: (0.888739, 0.45811, -0.0166791), + }, + Normal { + normal: (-0.260097, 0.965582, 0.000800195), + }, + Normal { + normal: (-0.371612, 0.928378, -0.00441745), + }, + Normal { + normal: (0.480166, -0.17836, -0.858853), + }, + Normal { + normal: (0.488103, 0.716801, -0.497947), + }, + Normal { + normal: (-0.222004, 0.905399, 0.361893), + }, + Normal { + normal: (-0.235405, 0.66318, 0.710477), + }, + Normal { + normal: (0.0587203, 0.437704, -0.8972), + }, + Normal { + normal: (0.00132612, 0.986459, -0.164003), + }, + Normal { + normal: (-0.0441901, 0.681677, 0.730317), + }, + Normal { + normal: (0.138801, -0.0341896, 0.98973), + }, + Normal { + normal: (-0.25889, 0.797206, -0.54538), + }, + Normal { + normal: (0.0122703, 0.999739, 0.0192865), + }, + Normal { + normal: (0.39863, 0.35489, 0.845663), + }, + Normal { + normal: (0.537564, -0.5814, 0.610737), + }, + Normal { + normal: (-0.0, 1.0, 0.0), + }, + Normal { + normal: (0.82454, 0.565804, 0.0), + }, + Normal { + normal: (0.917701, -0.397272, 0.0), + }, + Normal { + normal: (0.935269, -0.353939, 0.000112842), + }, + Normal { + normal: (0.780712, 0.624891, 0.0), + }, + Normal { + normal: (0.762641, 0.565035, 0.314825), + }, + Normal { + normal: (0.847982, -0.397998, 0.350034), + }, + Normal { + normal: (0.864141, -0.355261, 0.356441), + }, + Normal { + normal: (0.720991, 0.625625, 0.297933), + }, + Normal { + normal: (0.583357, 0.565165, 0.583338), + }, + Normal { + normal: (0.648485, -0.398726, 0.648448), + }, + Normal { + normal: (0.660872, -0.355894, 0.660748), + }, + Normal { + normal: (0.551862, 0.62529, 0.55178), + }, + Normal { + normal: (0.314824, 0.565051, 0.762629), + }, + Normal { + normal: (0.350045, -0.397976, 0.847988), + }, + Normal { + normal: (0.356474, -0.3552, 0.864153), + }, + Normal { + normal: (0.297983, 0.625515, 0.721067), + }, + Normal { + normal: (-0.0, 0.565804, 0.82454), + }, + Normal { + normal: (-0.0, -0.397272, 0.917701), + }, + Normal { + normal: (-0.000112839, -0.353939, 0.935269), + }, + Normal { + normal: (-0.0, 0.624891, 0.780712), + }, + Normal { + normal: (-0.314825, 0.565035, 0.762641), + }, + Normal { + normal: (-0.350034, -0.397998, 0.847982), + }, + Normal { + normal: (-0.356441, -0.355261, 0.864141), + }, + Normal { + normal: (-0.297933, 0.625625, 0.720991), + }, + Normal { + normal: (-0.583338, 0.565165, 0.583357), + }, + Normal { + normal: (-0.648448, -0.398726, 0.648485), + }, + Normal { + normal: (-0.660748, -0.355894, 0.660872), + }, + Normal { + normal: (-0.55178, 0.62529, 0.551862), + }, + Normal { + normal: (-0.762629, 0.565051, 0.314824), + }, + Normal { + normal: (-0.847988, -0.397976, 0.350045), + }, + Normal { + normal: (-0.864153, -0.3552, 0.356474), + }, + Normal { + normal: (-0.721067, 0.625515, 0.297983), + }, + Normal { + normal: (-0.82454, 0.565804, -0.0), + }, + Normal { + normal: (-0.917701, -0.397272, -0.0), + }, + Normal { + normal: (-0.935269, -0.353939, -0.000112839), + }, + Normal { + normal: (-0.780712, 0.624891, -0.0), + }, + Normal { + normal: (-0.76264, 0.565035, -0.314825), + }, + Normal { + normal: (-0.847982, -0.397998, -0.350034), + }, + Normal { + normal: (-0.864141, -0.355261, -0.356441), + }, + Normal { + normal: (-0.720991, 0.625625, -0.297933), + }, + Normal { + normal: (-0.583357, 0.565165, -0.583338), + }, + Normal { + normal: (-0.648485, -0.398726, -0.648448), + }, + Normal { + normal: (-0.660872, -0.355894, -0.660748), + }, + Normal { + normal: (-0.551862, 0.62529, -0.55178), + }, + Normal { + normal: (-0.314824, 0.565051, -0.762629), + }, + Normal { + normal: (-0.350045, -0.397976, -0.847988), + }, + Normal { + normal: (-0.356474, -0.3552, -0.864153), + }, + Normal { + normal: (-0.297983, 0.625515, -0.721067), + }, + Normal { + normal: (0.0, 0.565804, -0.82454), + }, + Normal { + normal: (0.0, -0.397272, -0.917701), + }, + Normal { + normal: (0.000112839, -0.353939, -0.935269), + }, + Normal { + normal: (0.0, 0.624891, -0.780712), + }, + Normal { + normal: (0.314825, 0.565035, -0.762641), + }, + Normal { + normal: (0.350034, -0.397998, -0.847982), + }, + Normal { + normal: (0.356441, -0.355261, -0.864141), + }, + Normal { + normal: (0.297933, 0.625625, -0.720991), + }, + Normal { + normal: (0.583338, 0.565165, -0.583357), + }, + Normal { + normal: (0.648448, -0.398726, -0.648485), + }, + Normal { + normal: (0.660748, -0.355894, -0.660872), + }, + Normal { + normal: (0.55178, 0.62529, -0.551862), + }, + Normal { + normal: (0.762629, 0.565051, -0.314824), + }, + Normal { + normal: (0.847988, -0.397976, -0.350045), + }, + Normal { + normal: (0.864153, -0.3552, -0.356474), + }, + Normal { + normal: (0.721067, 0.625515, -0.297983), + }, + Normal { + normal: (0.236584, 0.971611, 0.0), + }, + Normal { + normal: (0.173084, 0.984907, -0.0), + }, + Normal { + normal: (0.379703, 0.925108, 0.0), + }, + Normal { + normal: (0.526673, 0.850068, 0.0), + }, + Normal { + normal: (0.217978, 0.971775, 0.0902162), + }, + Normal { + normal: (0.15959, 0.984977, 0.0659615), + }, + Normal { + normal: (0.350498, 0.925312, 0.14474), + }, + Normal { + normal: (0.48559, 0.850653, 0.201474), + }, + Normal { + normal: (0.166631, 0.971838, 0.166631), + }, + Normal { + normal: (0.121908, 0.985026, 0.121908), + }, + Normal { + normal: (0.267668, 0.925585, 0.267668), + }, + Normal { + normal: (0.371315, 0.851029, 0.371315), + }, + Normal { + normal: (0.0902162, 0.971775, 0.217978), + }, + Normal { + normal: (0.0659615, 0.984977, 0.15959), + }, + Normal { + normal: (0.14474, 0.925312, 0.350498), + }, + Normal { + normal: (0.201474, 0.850653, 0.48559), + }, + Normal { + normal: (-0.0, 0.971611, 0.236584), + }, + Normal { + normal: (0.0, 0.984907, 0.173084), + }, + Normal { + normal: (0.0, 0.925108, 0.379703), + }, + Normal { + normal: (0.0, 0.850068, 0.526673), + }, + Normal { + normal: (-0.0902162, 0.971775, 0.217978), + }, + Normal { + normal: (-0.0659615, 0.984977, 0.15959), + }, + Normal { + normal: (-0.14474, 0.925312, 0.350498), + }, + Normal { + normal: (-0.201474, 0.850653, 0.48559), + }, + Normal { + normal: (-0.166631, 0.971838, 0.166631), + }, + Normal { + normal: (-0.121908, 0.985026, 0.121908), + }, + Normal { + normal: (-0.267668, 0.925585, 0.267668), + }, + Normal { + normal: (-0.371315, 0.851029, 0.371315), + }, + Normal { + normal: (-0.217978, 0.971775, 0.0902162), + }, + Normal { + normal: (-0.15959, 0.984977, 0.0659615), + }, + Normal { + normal: (-0.350498, 0.925312, 0.14474), + }, + Normal { + normal: (-0.48559, 0.850653, 0.201474), + }, + Normal { + normal: (-0.236583, 0.971611, -0.0), + }, + Normal { + normal: (-0.173084, 0.984907, 0.0), + }, + Normal { + normal: (-0.379703, 0.925108, -0.0), + }, + Normal { + normal: (-0.526673, 0.850068, 0.0), + }, + Normal { + normal: (-0.217978, 0.971775, -0.0902162), + }, + Normal { + normal: (-0.15959, 0.984977, -0.0659615), + }, + Normal { + normal: (-0.350498, 0.925312, -0.14474), + }, + Normal { + normal: (-0.48559, 0.850653, -0.201474), + }, + Normal { + normal: (-0.166631, 0.971838, -0.166631), + }, + Normal { + normal: (-0.121908, 0.985026, -0.121908), + }, + Normal { + normal: (-0.267668, 0.925585, -0.267668), + }, + Normal { + normal: (-0.371315, 0.851029, -0.371315), + }, + Normal { + normal: (-0.0902162, 0.971775, -0.217978), + }, + Normal { + normal: (-0.0659615, 0.984977, -0.15959), + }, + Normal { + normal: (-0.14474, 0.925312, -0.350498), + }, + Normal { + normal: (-0.201474, 0.850653, -0.485589), + }, + Normal { + normal: (0.0, 0.971611, -0.236584), + }, + Normal { + normal: (-0.0, 0.984907, -0.173084), + }, + Normal { + normal: (-0.0, 0.925108, -0.379703), + }, + Normal { + normal: (-0.0, 0.850068, -0.526673), + }, + Normal { + normal: (0.0902162, 0.971775, -0.217978), + }, + Normal { + normal: (0.0659615, 0.984977, -0.15959), + }, + Normal { + normal: (0.14474, 0.925312, -0.350498), + }, + Normal { + normal: (0.201474, 0.850653, -0.48559), + }, + Normal { + normal: (0.166631, 0.971838, -0.166631), + }, + Normal { + normal: (0.121908, 0.985026, -0.121908), + }, + Normal { + normal: (0.267668, 0.925585, -0.267668), + }, + Normal { + normal: (0.371315, 0.851029, -0.371315), + }, + Normal { + normal: (0.217978, 0.971775, -0.0902162), + }, + Normal { + normal: (0.15959, 0.984977, -0.0659615), + }, + Normal { + normal: (0.350498, 0.925312, -0.14474), + }, + Normal { + normal: (0.48559, 0.850653, -0.201474), + }, ]; pub const INDICES: [u16; 3072] = [ - 7, 6, 1, - 1, 2, 7, - 8, 7, 2, - 2, 3, 8, - 9, 8, 3, - 3, 4, 9, - 10, 9, 4, - 4, 5, 10, - 12, 11, 6, - 6, 7, 12, - 13, 12, 7, - 7, 8, 13, - 14, 13, 8, - 8, 9, 14, - 15, 14, 9, - 9, 10, 15, - 17, 16, 11, - 11, 12, 17, - 18, 17, 12, - 12, 13, 18, - 19, 18, 13, - 13, 14, 19, - 20, 19, 14, - 14, 15, 20, - 22, 21, 16, - 16, 17, 22, - 23, 22, 17, - 17, 18, 23, - 24, 23, 18, - 18, 19, 24, - 25, 24, 19, - 19, 20, 25, - 27, 26, 21, - 21, 22, 27, - 28, 27, 22, - 22, 23, 28, - 29, 28, 23, - 23, 24, 29, - 30, 29, 24, - 24, 25, 30, - 32, 31, 26, - 26, 27, 32, - 33, 32, 27, - 27, 28, 33, - 34, 33, 28, - 28, 29, 34, - 35, 34, 29, - 29, 30, 35, - 37, 36, 31, - 31, 32, 37, - 38, 37, 32, - 32, 33, 38, - 39, 38, 33, - 33, 34, 39, - 40, 39, 34, - 34, 35, 40, - 42, 41, 36, - 36, 37, 42, - 43, 42, 37, - 37, 38, 43, - 44, 43, 38, - 38, 39, 44, - 45, 44, 39, - 39, 40, 45, - 47, 46, 41, - 41, 42, 47, - 48, 47, 42, - 42, 43, 48, - 49, 48, 43, - 43, 44, 49, - 50, 49, 44, - 44, 45, 50, - 52, 51, 46, - 46, 47, 52, - 53, 52, 47, - 47, 48, 53, - 54, 53, 48, - 48, 49, 54, - 55, 54, 49, - 49, 50, 55, - 57, 56, 51, - 51, 52, 57, - 58, 57, 52, - 52, 53, 58, - 59, 58, 53, - 53, 54, 59, - 60, 59, 54, - 54, 55, 60, - 62, 61, 56, - 56, 57, 62, - 63, 62, 57, - 57, 58, 63, - 64, 63, 58, - 58, 59, 64, - 65, 64, 59, - 59, 60, 65, - 67, 66, 61, - 61, 62, 67, - 68, 67, 62, - 62, 63, 68, - 69, 68, 63, - 63, 64, 69, - 70, 69, 64, - 64, 65, 70, - 72, 71, 66, - 66, 67, 72, - 73, 72, 67, - 67, 68, 73, - 74, 73, 68, - 68, 69, 74, - 75, 74, 69, - 69, 70, 75, - 77, 76, 71, - 71, 72, 77, - 78, 77, 72, - 72, 73, 78, - 79, 78, 73, - 73, 74, 79, - 80, 79, 74, - 74, 75, 80, - 2, 1, 76, - 76, 77, 2, - 3, 2, 77, - 77, 78, 3, - 4, 3, 78, - 78, 79, 4, - 5, 4, 79, - 79, 80, 5, - 85, 10, 5, - 5, 81, 85, - 86, 85, 81, - 81, 82, 86, - 87, 86, 82, - 82, 83, 87, - 88, 87, 83, - 83, 84, 88, - 89, 15, 10, - 10, 85, 89, - 90, 89, 85, - 85, 86, 90, - 91, 90, 86, - 86, 87, 91, - 92, 91, 87, - 87, 88, 92, - 93, 20, 15, - 15, 89, 93, - 94, 93, 89, - 89, 90, 94, - 95, 94, 90, - 90, 91, 95, - 96, 95, 91, - 91, 92, 96, - 97, 25, 20, - 20, 93, 97, - 98, 97, 93, - 93, 94, 98, - 99, 98, 94, - 94, 95, 99, - 100, 99, 95, - 95, 96, 100, - 101, 30, 25, - 25, 97, 101, - 102, 101, 97, - 97, 98, 102, - 103, 102, 98, - 98, 99, 103, - 104, 103, 99, - 99, 100, 104, - 105, 35, 30, - 30, 101, 105, - 106, 105, 101, - 101, 102, 106, - 107, 106, 102, - 102, 103, 107, - 108, 107, 103, - 103, 104, 108, - 109, 40, 35, - 35, 105, 109, - 110, 109, 105, - 105, 106, 110, - 111, 110, 106, - 106, 107, 111, - 112, 111, 107, - 107, 108, 112, - 113, 45, 40, - 40, 109, 113, - 114, 113, 109, - 109, 110, 114, - 115, 114, 110, - 110, 111, 115, - 116, 115, 111, - 111, 112, 116, - 117, 50, 45, - 45, 113, 117, - 118, 117, 113, - 113, 114, 118, - 119, 118, 114, - 114, 115, 119, - 120, 119, 115, - 115, 116, 120, - 121, 55, 50, - 50, 117, 121, - 122, 121, 117, - 117, 118, 122, - 123, 122, 118, - 118, 119, 123, - 124, 123, 119, - 119, 120, 124, - 125, 60, 55, - 55, 121, 125, - 126, 125, 121, - 121, 122, 126, - 127, 126, 122, - 122, 123, 127, - 128, 127, 123, - 123, 124, 128, - 129, 65, 60, - 60, 125, 129, - 130, 129, 125, - 125, 126, 130, - 131, 130, 126, - 126, 127, 131, - 132, 131, 127, - 127, 128, 132, - 133, 70, 65, - 65, 129, 133, - 134, 133, 129, - 129, 130, 134, - 135, 134, 130, - 130, 131, 135, - 136, 135, 131, - 131, 132, 136, - 137, 75, 70, - 70, 133, 137, - 138, 137, 133, - 133, 134, 138, - 139, 138, 134, - 134, 135, 139, - 140, 139, 135, - 135, 136, 140, - 141, 80, 75, - 75, 137, 141, - 142, 141, 137, - 137, 138, 142, - 143, 142, 138, - 138, 139, 143, - 144, 143, 139, - 139, 140, 144, - 81, 5, 80, - 80, 141, 81, - 82, 81, 141, - 141, 142, 82, - 83, 82, 142, - 142, 143, 83, - 84, 83, 143, - 143, 144, 84, - 149, 88, 84, - 84, 145, 149, - 150, 149, 145, - 145, 146, 150, - 151, 150, 146, - 146, 147, 151, - 152, 151, 147, - 147, 148, 152, - 153, 92, 88, - 88, 149, 153, - 154, 153, 149, - 149, 150, 154, - 155, 154, 150, - 150, 151, 155, - 156, 155, 151, - 151, 152, 156, - 157, 96, 92, - 92, 153, 157, - 158, 157, 153, - 153, 154, 158, - 159, 158, 154, - 154, 155, 159, - 160, 159, 155, - 155, 156, 160, - 161, 100, 96, - 96, 157, 161, - 162, 161, 157, - 157, 158, 162, - 163, 162, 158, - 158, 159, 163, - 164, 163, 159, - 159, 160, 164, - 165, 104, 100, - 100, 161, 165, - 166, 165, 161, - 161, 162, 166, - 167, 166, 162, - 162, 163, 167, - 168, 167, 163, - 163, 164, 168, - 169, 108, 104, - 104, 165, 169, - 170, 169, 165, - 165, 166, 170, - 171, 170, 166, - 166, 167, 171, - 172, 171, 167, - 167, 168, 172, - 173, 112, 108, - 108, 169, 173, - 174, 173, 169, - 169, 170, 174, - 175, 174, 170, - 170, 171, 175, - 176, 175, 171, - 171, 172, 176, - 177, 116, 112, - 112, 173, 177, - 178, 177, 173, - 173, 174, 178, - 179, 178, 174, - 174, 175, 179, - 180, 179, 175, - 175, 176, 180, - 181, 120, 116, - 116, 177, 181, - 182, 181, 177, - 177, 178, 182, - 183, 182, 178, - 178, 179, 183, - 184, 183, 179, - 179, 180, 184, - 185, 124, 120, - 120, 181, 185, - 186, 185, 181, - 181, 182, 186, - 187, 186, 182, - 182, 183, 187, - 188, 187, 183, - 183, 184, 188, - 189, 128, 124, - 124, 185, 189, - 190, 189, 185, - 185, 186, 190, - 191, 190, 186, - 186, 187, 191, - 192, 191, 187, - 187, 188, 192, - 193, 132, 128, - 128, 189, 193, - 194, 193, 189, - 189, 190, 194, - 195, 194, 190, - 190, 191, 195, - 196, 195, 191, - 191, 192, 196, - 197, 136, 132, - 132, 193, 197, - 198, 197, 193, - 193, 194, 198, - 199, 198, 194, - 194, 195, 199, - 200, 199, 195, - 195, 196, 200, - 201, 140, 136, - 136, 197, 201, - 202, 201, 197, - 197, 198, 202, - 203, 202, 198, - 198, 199, 203, - 204, 203, 199, - 199, 200, 204, - 205, 144, 140, - 140, 201, 205, - 206, 205, 201, - 201, 202, 206, - 207, 206, 202, - 202, 203, 207, - 208, 207, 203, - 203, 204, 208, - 145, 84, 144, - 144, 205, 145, - 146, 145, 205, - 205, 206, 146, - 147, 146, 206, - 206, 207, 147, - 148, 147, 207, - 207, 208, 148, - 213, 152, 148, - 148, 209, 213, - 214, 213, 209, - 209, 210, 214, - 215, 214, 210, - 210, 211, 215, - 212, 215, 211, - 211, 212, 212, - 216, 156, 152, - 152, 213, 216, - 217, 216, 213, - 213, 214, 217, - 218, 217, 214, - 214, 215, 218, - 212, 218, 215, - 215, 212, 212, - 219, 160, 156, - 156, 216, 219, - 220, 219, 216, - 216, 217, 220, - 221, 220, 217, - 217, 218, 221, - 212, 221, 218, - 218, 212, 212, - 222, 164, 160, - 160, 219, 222, - 223, 222, 219, - 219, 220, 223, - 224, 223, 220, - 220, 221, 224, - 212, 224, 221, - 221, 212, 212, - 225, 168, 164, - 164, 222, 225, - 226, 225, 222, - 222, 223, 226, - 227, 226, 223, - 223, 224, 227, - 212, 227, 224, - 224, 212, 212, - 228, 172, 168, - 168, 225, 228, - 229, 228, 225, - 225, 226, 229, - 230, 229, 226, - 226, 227, 230, - 212, 230, 227, - 227, 212, 212, - 231, 176, 172, - 172, 228, 231, - 232, 231, 228, - 228, 229, 232, - 233, 232, 229, - 229, 230, 233, - 212, 233, 230, - 230, 212, 212, - 234, 180, 176, - 176, 231, 234, - 235, 234, 231, - 231, 232, 235, - 236, 235, 232, - 232, 233, 236, - 212, 236, 233, - 233, 212, 212, - 237, 184, 180, - 180, 234, 237, - 238, 237, 234, - 234, 235, 238, - 239, 238, 235, - 235, 236, 239, - 212, 239, 236, - 236, 212, 212, - 240, 188, 184, - 184, 237, 240, - 241, 240, 237, - 237, 238, 241, - 242, 241, 238, - 238, 239, 242, - 212, 242, 239, - 239, 212, 212, - 243, 192, 188, - 188, 240, 243, - 244, 243, 240, - 240, 241, 244, - 245, 244, 241, - 241, 242, 245, - 212, 245, 242, - 242, 212, 212, - 246, 196, 192, - 192, 243, 246, - 247, 246, 243, - 243, 244, 247, - 248, 247, 244, - 244, 245, 248, - 212, 248, 245, - 245, 212, 212, - 249, 200, 196, - 196, 246, 249, - 250, 249, 246, - 246, 247, 250, - 251, 250, 247, - 247, 248, 251, - 212, 251, 248, - 248, 212, 212, - 252, 204, 200, - 200, 249, 252, - 253, 252, 249, - 249, 250, 253, - 254, 253, 250, - 250, 251, 254, - 212, 254, 251, - 251, 212, 212, - 255, 208, 204, - 204, 252, 255, - 256, 255, 252, - 252, 253, 256, - 257, 256, 253, - 253, 254, 257, - 212, 257, 254, - 254, 212, 212, - 209, 148, 208, - 208, 255, 209, - 210, 209, 255, - 255, 256, 210, - 211, 210, 256, - 256, 257, 211, - 212, 211, 257, - 257, 212, 212, - 264, 263, 258, - 258, 259, 264, - 265, 264, 259, - 259, 260, 265, - 266, 265, 260, - 260, 261, 266, - 267, 266, 261, - 261, 262, 267, - 269, 268, 263, - 263, 264, 269, - 270, 269, 264, - 264, 265, 270, - 271, 270, 265, - 265, 266, 271, - 272, 271, 266, - 266, 267, 272, - 274, 273, 268, - 268, 269, 274, - 275, 274, 269, - 269, 270, 275, - 276, 275, 270, - 270, 271, 276, - 277, 276, 271, - 271, 272, 277, - 279, 278, 273, - 273, 274, 279, - 280, 279, 274, - 274, 275, 280, - 281, 280, 275, - 275, 276, 281, - 282, 281, 276, - 276, 277, 282, - 284, 283, 278, - 278, 279, 284, - 285, 284, 279, - 279, 280, 285, - 286, 285, 280, - 280, 281, 286, - 287, 286, 281, - 281, 282, 287, - 289, 288, 283, - 283, 284, 289, - 290, 289, 284, - 284, 285, 290, - 291, 290, 285, - 285, 286, 291, - 292, 291, 286, - 286, 287, 292, - 294, 293, 288, - 288, 289, 294, - 295, 294, 289, - 289, 290, 295, - 296, 295, 290, - 290, 291, 296, - 297, 296, 291, - 291, 292, 297, - 259, 258, 293, - 293, 294, 259, - 260, 259, 294, - 294, 295, 260, - 261, 260, 295, - 295, 296, 261, - 262, 261, 296, - 296, 297, 262, - 302, 267, 262, - 262, 298, 302, - 303, 302, 298, - 298, 299, 303, - 304, 303, 299, - 299, 300, 304, - 305, 304, 300, - 300, 301, 305, - 306, 272, 267, - 267, 302, 306, - 307, 306, 302, - 302, 303, 307, - 308, 307, 303, - 303, 304, 308, - 309, 308, 304, - 304, 305, 309, - 310, 277, 272, - 272, 306, 310, - 311, 310, 306, - 306, 307, 311, - 312, 311, 307, - 307, 308, 312, - 313, 312, 308, - 308, 309, 313, - 314, 282, 277, - 277, 310, 314, - 315, 314, 310, - 310, 311, 315, - 316, 315, 311, - 311, 312, 316, - 317, 316, 312, - 312, 313, 317, - 318, 287, 282, - 282, 314, 318, - 319, 318, 314, - 314, 315, 319, - 320, 319, 315, - 315, 316, 320, - 321, 320, 316, - 316, 317, 321, - 322, 292, 287, - 287, 318, 322, - 323, 322, 318, - 318, 319, 323, - 324, 323, 319, - 319, 320, 324, - 325, 324, 320, - 320, 321, 325, - 326, 297, 292, - 292, 322, 326, - 327, 326, 322, - 322, 323, 327, - 328, 327, 323, - 323, 324, 328, - 329, 328, 324, - 324, 325, 329, - 298, 262, 297, - 297, 326, 298, - 299, 298, 326, - 326, 327, 299, - 300, 299, 327, - 327, 328, 300, - 301, 300, 328, - 328, 329, 301, - 336, 335, 330, - 330, 331, 336, - 337, 336, 331, - 331, 332, 337, - 338, 337, 332, - 332, 333, 338, - 339, 338, 333, - 333, 334, 339, - 341, 340, 335, - 335, 336, 341, - 342, 341, 336, - 336, 337, 342, - 343, 342, 337, - 337, 338, 343, - 344, 343, 338, - 338, 339, 344, - 346, 345, 340, - 340, 341, 346, - 347, 346, 341, - 341, 342, 347, - 348, 347, 342, - 342, 343, 348, - 349, 348, 343, - 343, 344, 349, - 351, 350, 345, - 345, 346, 351, - 352, 351, 346, - 346, 347, 352, - 353, 352, 347, - 347, 348, 353, - 354, 353, 348, - 348, 349, 354, - 356, 355, 350, - 350, 351, 356, - 357, 356, 351, - 351, 352, 357, - 358, 357, 352, - 352, 353, 358, - 359, 358, 353, - 353, 354, 359, - 361, 360, 355, - 355, 356, 361, - 362, 361, 356, - 356, 357, 362, - 363, 362, 357, - 357, 358, 363, - 364, 363, 358, - 358, 359, 364, - 366, 365, 360, - 360, 361, 366, - 367, 366, 361, - 361, 362, 367, - 368, 367, 362, - 362, 363, 368, - 369, 368, 363, - 363, 364, 369, - 331, 330, 365, - 365, 366, 331, - 332, 331, 366, - 366, 367, 332, - 333, 332, 367, - 367, 368, 333, - 334, 333, 368, - 368, 369, 334, - 374, 339, 334, - 334, 370, 374, - 375, 374, 370, - 370, 371, 375, - 376, 375, 371, - 371, 372, 376, - 377, 376, 372, - 372, 373, 377, - 378, 344, 339, - 339, 374, 378, - 379, 378, 374, - 374, 375, 379, - 380, 379, 375, - 375, 376, 380, - 381, 380, 376, - 376, 377, 381, - 382, 349, 344, - 344, 378, 382, - 383, 382, 378, - 378, 379, 383, - 384, 383, 379, - 379, 380, 384, - 385, 384, 380, - 380, 381, 385, - 386, 354, 349, - 349, 382, 386, - 387, 386, 382, - 382, 383, 387, - 388, 387, 383, - 383, 384, 388, - 389, 388, 384, - 384, 385, 389, - 390, 359, 354, - 354, 386, 390, - 391, 390, 386, - 386, 387, 391, - 392, 391, 387, - 387, 388, 392, - 393, 392, 388, - 388, 389, 393, - 394, 364, 359, - 359, 390, 394, - 395, 394, 390, - 390, 391, 395, - 396, 395, 391, - 391, 392, 396, - 397, 396, 392, - 392, 393, 397, - 398, 369, 364, - 364, 394, 398, - 399, 398, 394, - 394, 395, 399, - 400, 399, 395, - 395, 396, 400, - 401, 400, 396, - 396, 397, 401, - 370, 334, 369, - 369, 398, 370, - 371, 370, 398, - 398, 399, 371, - 372, 371, 399, - 399, 400, 372, - 373, 372, 400, - 400, 401, 373, - 407, 402, 402, - 402, 403, 407, - 408, 407, 403, - 403, 404, 408, - 409, 408, 404, - 404, 405, 409, - 410, 409, 405, - 405, 406, 410, - 411, 402, 402, - 402, 407, 411, - 412, 411, 407, - 407, 408, 412, - 413, 412, 408, - 408, 409, 413, - 414, 413, 409, - 409, 410, 414, - 415, 402, 402, - 402, 411, 415, - 416, 415, 411, - 411, 412, 416, - 417, 416, 412, - 412, 413, 417, - 418, 417, 413, - 413, 414, 418, - 419, 402, 402, - 402, 415, 419, - 420, 419, 415, - 415, 416, 420, - 421, 420, 416, - 416, 417, 421, - 422, 421, 417, - 417, 418, 422, - 423, 402, 402, - 402, 419, 423, - 424, 423, 419, - 419, 420, 424, - 425, 424, 420, - 420, 421, 425, - 426, 425, 421, - 421, 422, 426, - 427, 402, 402, - 402, 423, 427, - 428, 427, 423, - 423, 424, 428, - 429, 428, 424, - 424, 425, 429, - 430, 429, 425, - 425, 426, 430, - 431, 402, 402, - 402, 427, 431, - 432, 431, 427, - 427, 428, 432, - 433, 432, 428, - 428, 429, 433, - 434, 433, 429, - 429, 430, 434, - 435, 402, 402, - 402, 431, 435, - 436, 435, 431, - 431, 432, 436, - 437, 436, 432, - 432, 433, 437, - 438, 437, 433, - 433, 434, 438, - 439, 402, 402, - 402, 435, 439, - 440, 439, 435, - 435, 436, 440, - 441, 440, 436, - 436, 437, 441, - 442, 441, 437, - 437, 438, 442, - 443, 402, 402, - 402, 439, 443, - 444, 443, 439, - 439, 440, 444, - 445, 444, 440, - 440, 441, 445, - 446, 445, 441, - 441, 442, 446, - 447, 402, 402, - 402, 443, 447, - 448, 447, 443, - 443, 444, 448, - 449, 448, 444, - 444, 445, 449, - 450, 449, 445, - 445, 446, 450, - 451, 402, 402, - 402, 447, 451, - 452, 451, 447, - 447, 448, 452, - 453, 452, 448, - 448, 449, 453, - 454, 453, 449, - 449, 450, 454, - 455, 402, 402, - 402, 451, 455, - 456, 455, 451, - 451, 452, 456, - 457, 456, 452, - 452, 453, 457, - 458, 457, 453, - 453, 454, 458, - 459, 402, 402, - 402, 455, 459, - 460, 459, 455, - 455, 456, 460, - 461, 460, 456, - 456, 457, 461, - 462, 461, 457, - 457, 458, 462, - 463, 402, 402, - 402, 459, 463, - 464, 463, 459, - 459, 460, 464, - 465, 464, 460, - 460, 461, 465, - 466, 465, 461, - 461, 462, 466, - 403, 402, 402, - 402, 463, 403, - 404, 403, 463, - 463, 464, 404, - 405, 404, 464, - 464, 465, 405, - 406, 405, 465, - 465, 466, 406, - 471, 410, 406, - 406, 467, 471, - 472, 471, 467, - 467, 468, 472, - 473, 472, 468, - 468, 469, 473, - 474, 473, 469, - 469, 470, 474, - 475, 414, 410, - 410, 471, 475, - 476, 475, 471, - 471, 472, 476, - 477, 476, 472, - 472, 473, 477, - 478, 477, 473, - 473, 474, 478, - 479, 418, 414, - 414, 475, 479, - 480, 479, 475, - 475, 476, 480, - 481, 480, 476, - 476, 477, 481, - 482, 481, 477, - 477, 478, 482, - 483, 422, 418, - 418, 479, 483, - 484, 483, 479, - 479, 480, 484, - 485, 484, 480, - 480, 481, 485, - 486, 485, 481, - 481, 482, 486, - 487, 426, 422, - 422, 483, 487, - 488, 487, 483, - 483, 484, 488, - 489, 488, 484, - 484, 485, 489, - 490, 489, 485, - 485, 486, 490, - 491, 430, 426, - 426, 487, 491, - 492, 491, 487, - 487, 488, 492, - 493, 492, 488, - 488, 489, 493, - 494, 493, 489, - 489, 490, 494, - 495, 434, 430, - 430, 491, 495, - 496, 495, 491, - 491, 492, 496, - 497, 496, 492, - 492, 493, 497, - 498, 497, 493, - 493, 494, 498, - 499, 438, 434, - 434, 495, 499, - 500, 499, 495, - 495, 496, 500, - 501, 500, 496, - 496, 497, 501, - 502, 501, 497, - 497, 498, 502, - 503, 442, 438, - 438, 499, 503, - 504, 503, 499, - 499, 500, 504, - 505, 504, 500, - 500, 501, 505, - 506, 505, 501, - 501, 502, 506, - 507, 446, 442, - 442, 503, 507, - 508, 507, 503, - 503, 504, 508, - 509, 508, 504, - 504, 505, 509, - 510, 509, 505, - 505, 506, 510, - 511, 450, 446, - 446, 507, 511, - 512, 511, 507, - 507, 508, 512, - 513, 512, 508, - 508, 509, 513, - 514, 513, 509, - 509, 510, 514, - 515, 454, 450, - 450, 511, 515, - 516, 515, 511, - 511, 512, 516, - 517, 516, 512, - 512, 513, 517, - 518, 517, 513, - 513, 514, 518, - 519, 458, 454, - 454, 515, 519, - 520, 519, 515, - 515, 516, 520, - 521, 520, 516, - 516, 517, 521, - 522, 521, 517, - 517, 518, 522, - 523, 462, 458, - 458, 519, 523, - 524, 523, 519, - 519, 520, 524, - 525, 524, 520, - 520, 521, 525, - 526, 525, 521, - 521, 522, 526, - 527, 466, 462, - 462, 523, 527, - 528, 527, 523, - 523, 524, 528, - 529, 528, 524, - 524, 525, 529, - 530, 529, 525, - 525, 526, 530, - 467, 406, 466, - 466, 527, 467, - 468, 467, 527, - 527, 528, 468, - 469, 468, 528, - 528, 529, 469, - 470, 469, 529, - 529, 530, 470u16, + 7, 6, 1, 1, 2, 7, 8, 7, 2, 2, 3, 8, 9, 8, 3, 3, 4, 9, 10, 9, 4, 4, 5, 10, 12, 11, 6, 6, 7, 12, + 13, 12, 7, 7, 8, 13, 14, 13, 8, 8, 9, 14, 15, 14, 9, 9, 10, 15, 17, 16, 11, 11, 12, 17, 18, 17, + 12, 12, 13, 18, 19, 18, 13, 13, 14, 19, 20, 19, 14, 14, 15, 20, 22, 21, 16, 16, 17, 22, 23, 22, + 17, 17, 18, 23, 24, 23, 18, 18, 19, 24, 25, 24, 19, 19, 20, 25, 27, 26, 21, 21, 22, 27, 28, 27, + 22, 22, 23, 28, 29, 28, 23, 23, 24, 29, 30, 29, 24, 24, 25, 30, 32, 31, 26, 26, 27, 32, 33, 32, + 27, 27, 28, 33, 34, 33, 28, 28, 29, 34, 35, 34, 29, 29, 30, 35, 37, 36, 31, 31, 32, 37, 38, 37, + 32, 32, 33, 38, 39, 38, 33, 33, 34, 39, 40, 39, 34, 34, 35, 40, 42, 41, 36, 36, 37, 42, 43, 42, + 37, 37, 38, 43, 44, 43, 38, 38, 39, 44, 45, 44, 39, 39, 40, 45, 47, 46, 41, 41, 42, 47, 48, 47, + 42, 42, 43, 48, 49, 48, 43, 43, 44, 49, 50, 49, 44, 44, 45, 50, 52, 51, 46, 46, 47, 52, 53, 52, + 47, 47, 48, 53, 54, 53, 48, 48, 49, 54, 55, 54, 49, 49, 50, 55, 57, 56, 51, 51, 52, 57, 58, 57, + 52, 52, 53, 58, 59, 58, 53, 53, 54, 59, 60, 59, 54, 54, 55, 60, 62, 61, 56, 56, 57, 62, 63, 62, + 57, 57, 58, 63, 64, 63, 58, 58, 59, 64, 65, 64, 59, 59, 60, 65, 67, 66, 61, 61, 62, 67, 68, 67, + 62, 62, 63, 68, 69, 68, 63, 63, 64, 69, 70, 69, 64, 64, 65, 70, 72, 71, 66, 66, 67, 72, 73, 72, + 67, 67, 68, 73, 74, 73, 68, 68, 69, 74, 75, 74, 69, 69, 70, 75, 77, 76, 71, 71, 72, 77, 78, 77, + 72, 72, 73, 78, 79, 78, 73, 73, 74, 79, 80, 79, 74, 74, 75, 80, 2, 1, 76, 76, 77, 2, 3, 2, 77, + 77, 78, 3, 4, 3, 78, 78, 79, 4, 5, 4, 79, 79, 80, 5, 85, 10, 5, 5, 81, 85, 86, 85, 81, 81, 82, + 86, 87, 86, 82, 82, 83, 87, 88, 87, 83, 83, 84, 88, 89, 15, 10, 10, 85, 89, 90, 89, 85, 85, 86, + 90, 91, 90, 86, 86, 87, 91, 92, 91, 87, 87, 88, 92, 93, 20, 15, 15, 89, 93, 94, 93, 89, 89, 90, + 94, 95, 94, 90, 90, 91, 95, 96, 95, 91, 91, 92, 96, 97, 25, 20, 20, 93, 97, 98, 97, 93, 93, 94, + 98, 99, 98, 94, 94, 95, 99, 100, 99, 95, 95, 96, 100, 101, 30, 25, 25, 97, 101, 102, 101, 97, + 97, 98, 102, 103, 102, 98, 98, 99, 103, 104, 103, 99, 99, 100, 104, 105, 35, 30, 30, 101, 105, + 106, 105, 101, 101, 102, 106, 107, 106, 102, 102, 103, 107, 108, 107, 103, 103, 104, 108, 109, + 40, 35, 35, 105, 109, 110, 109, 105, 105, 106, 110, 111, 110, 106, 106, 107, 111, 112, 111, + 107, 107, 108, 112, 113, 45, 40, 40, 109, 113, 114, 113, 109, 109, 110, 114, 115, 114, 110, + 110, 111, 115, 116, 115, 111, 111, 112, 116, 117, 50, 45, 45, 113, 117, 118, 117, 113, 113, + 114, 118, 119, 118, 114, 114, 115, 119, 120, 119, 115, 115, 116, 120, 121, 55, 50, 50, 117, + 121, 122, 121, 117, 117, 118, 122, 123, 122, 118, 118, 119, 123, 124, 123, 119, 119, 120, 124, + 125, 60, 55, 55, 121, 125, 126, 125, 121, 121, 122, 126, 127, 126, 122, 122, 123, 127, 128, + 127, 123, 123, 124, 128, 129, 65, 60, 60, 125, 129, 130, 129, 125, 125, 126, 130, 131, 130, + 126, 126, 127, 131, 132, 131, 127, 127, 128, 132, 133, 70, 65, 65, 129, 133, 134, 133, 129, + 129, 130, 134, 135, 134, 130, 130, 131, 135, 136, 135, 131, 131, 132, 136, 137, 75, 70, 70, + 133, 137, 138, 137, 133, 133, 134, 138, 139, 138, 134, 134, 135, 139, 140, 139, 135, 135, 136, + 140, 141, 80, 75, 75, 137, 141, 142, 141, 137, 137, 138, 142, 143, 142, 138, 138, 139, 143, + 144, 143, 139, 139, 140, 144, 81, 5, 80, 80, 141, 81, 82, 81, 141, 141, 142, 82, 83, 82, 142, + 142, 143, 83, 84, 83, 143, 143, 144, 84, 149, 88, 84, 84, 145, 149, 150, 149, 145, 145, 146, + 150, 151, 150, 146, 146, 147, 151, 152, 151, 147, 147, 148, 152, 153, 92, 88, 88, 149, 153, + 154, 153, 149, 149, 150, 154, 155, 154, 150, 150, 151, 155, 156, 155, 151, 151, 152, 156, 157, + 96, 92, 92, 153, 157, 158, 157, 153, 153, 154, 158, 159, 158, 154, 154, 155, 159, 160, 159, + 155, 155, 156, 160, 161, 100, 96, 96, 157, 161, 162, 161, 157, 157, 158, 162, 163, 162, 158, + 158, 159, 163, 164, 163, 159, 159, 160, 164, 165, 104, 100, 100, 161, 165, 166, 165, 161, 161, + 162, 166, 167, 166, 162, 162, 163, 167, 168, 167, 163, 163, 164, 168, 169, 108, 104, 104, 165, + 169, 170, 169, 165, 165, 166, 170, 171, 170, 166, 166, 167, 171, 172, 171, 167, 167, 168, 172, + 173, 112, 108, 108, 169, 173, 174, 173, 169, 169, 170, 174, 175, 174, 170, 170, 171, 175, 176, + 175, 171, 171, 172, 176, 177, 116, 112, 112, 173, 177, 178, 177, 173, 173, 174, 178, 179, 178, + 174, 174, 175, 179, 180, 179, 175, 175, 176, 180, 181, 120, 116, 116, 177, 181, 182, 181, 177, + 177, 178, 182, 183, 182, 178, 178, 179, 183, 184, 183, 179, 179, 180, 184, 185, 124, 120, 120, + 181, 185, 186, 185, 181, 181, 182, 186, 187, 186, 182, 182, 183, 187, 188, 187, 183, 183, 184, + 188, 189, 128, 124, 124, 185, 189, 190, 189, 185, 185, 186, 190, 191, 190, 186, 186, 187, 191, + 192, 191, 187, 187, 188, 192, 193, 132, 128, 128, 189, 193, 194, 193, 189, 189, 190, 194, 195, + 194, 190, 190, 191, 195, 196, 195, 191, 191, 192, 196, 197, 136, 132, 132, 193, 197, 198, 197, + 193, 193, 194, 198, 199, 198, 194, 194, 195, 199, 200, 199, 195, 195, 196, 200, 201, 140, 136, + 136, 197, 201, 202, 201, 197, 197, 198, 202, 203, 202, 198, 198, 199, 203, 204, 203, 199, 199, + 200, 204, 205, 144, 140, 140, 201, 205, 206, 205, 201, 201, 202, 206, 207, 206, 202, 202, 203, + 207, 208, 207, 203, 203, 204, 208, 145, 84, 144, 144, 205, 145, 146, 145, 205, 205, 206, 146, + 147, 146, 206, 206, 207, 147, 148, 147, 207, 207, 208, 148, 213, 152, 148, 148, 209, 213, 214, + 213, 209, 209, 210, 214, 215, 214, 210, 210, 211, 215, 212, 215, 211, 211, 212, 212, 216, 156, + 152, 152, 213, 216, 217, 216, 213, 213, 214, 217, 218, 217, 214, 214, 215, 218, 212, 218, 215, + 215, 212, 212, 219, 160, 156, 156, 216, 219, 220, 219, 216, 216, 217, 220, 221, 220, 217, 217, + 218, 221, 212, 221, 218, 218, 212, 212, 222, 164, 160, 160, 219, 222, 223, 222, 219, 219, 220, + 223, 224, 223, 220, 220, 221, 224, 212, 224, 221, 221, 212, 212, 225, 168, 164, 164, 222, 225, + 226, 225, 222, 222, 223, 226, 227, 226, 223, 223, 224, 227, 212, 227, 224, 224, 212, 212, 228, + 172, 168, 168, 225, 228, 229, 228, 225, 225, 226, 229, 230, 229, 226, 226, 227, 230, 212, 230, + 227, 227, 212, 212, 231, 176, 172, 172, 228, 231, 232, 231, 228, 228, 229, 232, 233, 232, 229, + 229, 230, 233, 212, 233, 230, 230, 212, 212, 234, 180, 176, 176, 231, 234, 235, 234, 231, 231, + 232, 235, 236, 235, 232, 232, 233, 236, 212, 236, 233, 233, 212, 212, 237, 184, 180, 180, 234, + 237, 238, 237, 234, 234, 235, 238, 239, 238, 235, 235, 236, 239, 212, 239, 236, 236, 212, 212, + 240, 188, 184, 184, 237, 240, 241, 240, 237, 237, 238, 241, 242, 241, 238, 238, 239, 242, 212, + 242, 239, 239, 212, 212, 243, 192, 188, 188, 240, 243, 244, 243, 240, 240, 241, 244, 245, 244, + 241, 241, 242, 245, 212, 245, 242, 242, 212, 212, 246, 196, 192, 192, 243, 246, 247, 246, 243, + 243, 244, 247, 248, 247, 244, 244, 245, 248, 212, 248, 245, 245, 212, 212, 249, 200, 196, 196, + 246, 249, 250, 249, 246, 246, 247, 250, 251, 250, 247, 247, 248, 251, 212, 251, 248, 248, 212, + 212, 252, 204, 200, 200, 249, 252, 253, 252, 249, 249, 250, 253, 254, 253, 250, 250, 251, 254, + 212, 254, 251, 251, 212, 212, 255, 208, 204, 204, 252, 255, 256, 255, 252, 252, 253, 256, 257, + 256, 253, 253, 254, 257, 212, 257, 254, 254, 212, 212, 209, 148, 208, 208, 255, 209, 210, 209, + 255, 255, 256, 210, 211, 210, 256, 256, 257, 211, 212, 211, 257, 257, 212, 212, 264, 263, 258, + 258, 259, 264, 265, 264, 259, 259, 260, 265, 266, 265, 260, 260, 261, 266, 267, 266, 261, 261, + 262, 267, 269, 268, 263, 263, 264, 269, 270, 269, 264, 264, 265, 270, 271, 270, 265, 265, 266, + 271, 272, 271, 266, 266, 267, 272, 274, 273, 268, 268, 269, 274, 275, 274, 269, 269, 270, 275, + 276, 275, 270, 270, 271, 276, 277, 276, 271, 271, 272, 277, 279, 278, 273, 273, 274, 279, 280, + 279, 274, 274, 275, 280, 281, 280, 275, 275, 276, 281, 282, 281, 276, 276, 277, 282, 284, 283, + 278, 278, 279, 284, 285, 284, 279, 279, 280, 285, 286, 285, 280, 280, 281, 286, 287, 286, 281, + 281, 282, 287, 289, 288, 283, 283, 284, 289, 290, 289, 284, 284, 285, 290, 291, 290, 285, 285, + 286, 291, 292, 291, 286, 286, 287, 292, 294, 293, 288, 288, 289, 294, 295, 294, 289, 289, 290, + 295, 296, 295, 290, 290, 291, 296, 297, 296, 291, 291, 292, 297, 259, 258, 293, 293, 294, 259, + 260, 259, 294, 294, 295, 260, 261, 260, 295, 295, 296, 261, 262, 261, 296, 296, 297, 262, 302, + 267, 262, 262, 298, 302, 303, 302, 298, 298, 299, 303, 304, 303, 299, 299, 300, 304, 305, 304, + 300, 300, 301, 305, 306, 272, 267, 267, 302, 306, 307, 306, 302, 302, 303, 307, 308, 307, 303, + 303, 304, 308, 309, 308, 304, 304, 305, 309, 310, 277, 272, 272, 306, 310, 311, 310, 306, 306, + 307, 311, 312, 311, 307, 307, 308, 312, 313, 312, 308, 308, 309, 313, 314, 282, 277, 277, 310, + 314, 315, 314, 310, 310, 311, 315, 316, 315, 311, 311, 312, 316, 317, 316, 312, 312, 313, 317, + 318, 287, 282, 282, 314, 318, 319, 318, 314, 314, 315, 319, 320, 319, 315, 315, 316, 320, 321, + 320, 316, 316, 317, 321, 322, 292, 287, 287, 318, 322, 323, 322, 318, 318, 319, 323, 324, 323, + 319, 319, 320, 324, 325, 324, 320, 320, 321, 325, 326, 297, 292, 292, 322, 326, 327, 326, 322, + 322, 323, 327, 328, 327, 323, 323, 324, 328, 329, 328, 324, 324, 325, 329, 298, 262, 297, 297, + 326, 298, 299, 298, 326, 326, 327, 299, 300, 299, 327, 327, 328, 300, 301, 300, 328, 328, 329, + 301, 336, 335, 330, 330, 331, 336, 337, 336, 331, 331, 332, 337, 338, 337, 332, 332, 333, 338, + 339, 338, 333, 333, 334, 339, 341, 340, 335, 335, 336, 341, 342, 341, 336, 336, 337, 342, 343, + 342, 337, 337, 338, 343, 344, 343, 338, 338, 339, 344, 346, 345, 340, 340, 341, 346, 347, 346, + 341, 341, 342, 347, 348, 347, 342, 342, 343, 348, 349, 348, 343, 343, 344, 349, 351, 350, 345, + 345, 346, 351, 352, 351, 346, 346, 347, 352, 353, 352, 347, 347, 348, 353, 354, 353, 348, 348, + 349, 354, 356, 355, 350, 350, 351, 356, 357, 356, 351, 351, 352, 357, 358, 357, 352, 352, 353, + 358, 359, 358, 353, 353, 354, 359, 361, 360, 355, 355, 356, 361, 362, 361, 356, 356, 357, 362, + 363, 362, 357, 357, 358, 363, 364, 363, 358, 358, 359, 364, 366, 365, 360, 360, 361, 366, 367, + 366, 361, 361, 362, 367, 368, 367, 362, 362, 363, 368, 369, 368, 363, 363, 364, 369, 331, 330, + 365, 365, 366, 331, 332, 331, 366, 366, 367, 332, 333, 332, 367, 367, 368, 333, 334, 333, 368, + 368, 369, 334, 374, 339, 334, 334, 370, 374, 375, 374, 370, 370, 371, 375, 376, 375, 371, 371, + 372, 376, 377, 376, 372, 372, 373, 377, 378, 344, 339, 339, 374, 378, 379, 378, 374, 374, 375, + 379, 380, 379, 375, 375, 376, 380, 381, 380, 376, 376, 377, 381, 382, 349, 344, 344, 378, 382, + 383, 382, 378, 378, 379, 383, 384, 383, 379, 379, 380, 384, 385, 384, 380, 380, 381, 385, 386, + 354, 349, 349, 382, 386, 387, 386, 382, 382, 383, 387, 388, 387, 383, 383, 384, 388, 389, 388, + 384, 384, 385, 389, 390, 359, 354, 354, 386, 390, 391, 390, 386, 386, 387, 391, 392, 391, 387, + 387, 388, 392, 393, 392, 388, 388, 389, 393, 394, 364, 359, 359, 390, 394, 395, 394, 390, 390, + 391, 395, 396, 395, 391, 391, 392, 396, 397, 396, 392, 392, 393, 397, 398, 369, 364, 364, 394, + 398, 399, 398, 394, 394, 395, 399, 400, 399, 395, 395, 396, 400, 401, 400, 396, 396, 397, 401, + 370, 334, 369, 369, 398, 370, 371, 370, 398, 398, 399, 371, 372, 371, 399, 399, 400, 372, 373, + 372, 400, 400, 401, 373, 407, 402, 402, 402, 403, 407, 408, 407, 403, 403, 404, 408, 409, 408, + 404, 404, 405, 409, 410, 409, 405, 405, 406, 410, 411, 402, 402, 402, 407, 411, 412, 411, 407, + 407, 408, 412, 413, 412, 408, 408, 409, 413, 414, 413, 409, 409, 410, 414, 415, 402, 402, 402, + 411, 415, 416, 415, 411, 411, 412, 416, 417, 416, 412, 412, 413, 417, 418, 417, 413, 413, 414, + 418, 419, 402, 402, 402, 415, 419, 420, 419, 415, 415, 416, 420, 421, 420, 416, 416, 417, 421, + 422, 421, 417, 417, 418, 422, 423, 402, 402, 402, 419, 423, 424, 423, 419, 419, 420, 424, 425, + 424, 420, 420, 421, 425, 426, 425, 421, 421, 422, 426, 427, 402, 402, 402, 423, 427, 428, 427, + 423, 423, 424, 428, 429, 428, 424, 424, 425, 429, 430, 429, 425, 425, 426, 430, 431, 402, 402, + 402, 427, 431, 432, 431, 427, 427, 428, 432, 433, 432, 428, 428, 429, 433, 434, 433, 429, 429, + 430, 434, 435, 402, 402, 402, 431, 435, 436, 435, 431, 431, 432, 436, 437, 436, 432, 432, 433, + 437, 438, 437, 433, 433, 434, 438, 439, 402, 402, 402, 435, 439, 440, 439, 435, 435, 436, 440, + 441, 440, 436, 436, 437, 441, 442, 441, 437, 437, 438, 442, 443, 402, 402, 402, 439, 443, 444, + 443, 439, 439, 440, 444, 445, 444, 440, 440, 441, 445, 446, 445, 441, 441, 442, 446, 447, 402, + 402, 402, 443, 447, 448, 447, 443, 443, 444, 448, 449, 448, 444, 444, 445, 449, 450, 449, 445, + 445, 446, 450, 451, 402, 402, 402, 447, 451, 452, 451, 447, 447, 448, 452, 453, 452, 448, 448, + 449, 453, 454, 453, 449, 449, 450, 454, 455, 402, 402, 402, 451, 455, 456, 455, 451, 451, 452, + 456, 457, 456, 452, 452, 453, 457, 458, 457, 453, 453, 454, 458, 459, 402, 402, 402, 455, 459, + 460, 459, 455, 455, 456, 460, 461, 460, 456, 456, 457, 461, 462, 461, 457, 457, 458, 462, 463, + 402, 402, 402, 459, 463, 464, 463, 459, 459, 460, 464, 465, 464, 460, 460, 461, 465, 466, 465, + 461, 461, 462, 466, 403, 402, 402, 402, 463, 403, 404, 403, 463, 463, 464, 404, 405, 404, 464, + 464, 465, 405, 406, 405, 465, 465, 466, 406, 471, 410, 406, 406, 467, 471, 472, 471, 467, 467, + 468, 472, 473, 472, 468, 468, 469, 473, 474, 473, 469, 469, 470, 474, 475, 414, 410, 410, 471, + 475, 476, 475, 471, 471, 472, 476, 477, 476, 472, 472, 473, 477, 478, 477, 473, 473, 474, 478, + 479, 418, 414, 414, 475, 479, 480, 479, 475, 475, 476, 480, 481, 480, 476, 476, 477, 481, 482, + 481, 477, 477, 478, 482, 483, 422, 418, 418, 479, 483, 484, 483, 479, 479, 480, 484, 485, 484, + 480, 480, 481, 485, 486, 485, 481, 481, 482, 486, 487, 426, 422, 422, 483, 487, 488, 487, 483, + 483, 484, 488, 489, 488, 484, 484, 485, 489, 490, 489, 485, 485, 486, 490, 491, 430, 426, 426, + 487, 491, 492, 491, 487, 487, 488, 492, 493, 492, 488, 488, 489, 493, 494, 493, 489, 489, 490, + 494, 495, 434, 430, 430, 491, 495, 496, 495, 491, 491, 492, 496, 497, 496, 492, 492, 493, 497, + 498, 497, 493, 493, 494, 498, 499, 438, 434, 434, 495, 499, 500, 499, 495, 495, 496, 500, 501, + 500, 496, 496, 497, 501, 502, 501, 497, 497, 498, 502, 503, 442, 438, 438, 499, 503, 504, 503, + 499, 499, 500, 504, 505, 504, 500, 500, 501, 505, 506, 505, 501, 501, 502, 506, 507, 446, 442, + 442, 503, 507, 508, 507, 503, 503, 504, 508, 509, 508, 504, 504, 505, 509, 510, 509, 505, 505, + 506, 510, 511, 450, 446, 446, 507, 511, 512, 511, 507, 507, 508, 512, 513, 512, 508, 508, 509, + 513, 514, 513, 509, 509, 510, 514, 515, 454, 450, 450, 511, 515, 516, 515, 511, 511, 512, 516, + 517, 516, 512, 512, 513, 517, 518, 517, 513, 513, 514, 518, 519, 458, 454, 454, 515, 519, 520, + 519, 515, 515, 516, 520, 521, 520, 516, 516, 517, 521, 522, 521, 517, 517, 518, 522, 523, 462, + 458, 458, 519, 523, 524, 523, 519, 519, 520, 524, 525, 524, 520, 520, 521, 525, 526, 525, 521, + 521, 522, 526, 527, 466, 462, 462, 523, 527, 528, 527, 523, 523, 524, 528, 529, 528, 524, 524, + 525, 529, 530, 529, 525, 525, 526, 530, 467, 406, 466, 466, 527, 467, 468, 467, 527, 527, 528, + 468, 469, 468, 528, 528, 529, 469, 470, 469, 529, 529, 530, 470u16, ]; diff --git a/examples/vulkan/vk_quad_warp/vk_quad_warp.rs b/examples/vulkan/vk_quad_warp/vk_quad_warp.rs index 9debb041b..167c68aec 100644 --- a/examples/vulkan/vk_quad_warp/vk_quad_warp.rs +++ b/examples/vulkan/vk_quad_warp/vk_quad_warp.rs @@ -1,17 +1,18 @@ -extern crate nannou; + + mod controls; +mod homography; mod teapot_verts; mod warp; -mod homography; +use self::controls::{Controls, Corners, Ids}; +use self::teapot_verts::{INDICES, NORMALS, VERTICES}; +use self::warp::Warp; +use nannou::geom::range::Range; +use nannou::math::cgmath::{self, Matrix3, Matrix4, Point3, Rad, Vector3}; use nannou::prelude::*; use nannou::ui::Ui; -use nannou::geom::range::Range; -use nannou::math::cgmath::{self, Matrix3, Matrix4, Rad, Point3, Vector3}; -use self::warp::Warp; -use self::teapot_verts::{VERTICES, INDICES, NORMALS}; -use self::controls::{Controls, Corners, Ids}; use std::cell::RefCell; use std::sync::Arc; @@ -27,7 +28,6 @@ struct Model { ids: Ids, } - struct Graphics { vertex_buffer: Arc>, normal_buffer: Arc>, @@ -39,10 +39,9 @@ struct Graphics { graphics_pipeline: Arc, depth_image: Arc, inter_image: Arc, - framebuffer: Arc + framebuffer: Arc, } - vk::impl_vertex!(Vertex, position); vk::impl_vertex!(Normal, normal); @@ -51,25 +50,23 @@ vk::impl_vertex!(Normal, normal); #[derive(Copy, Clone)] pub struct Vertex { - position: (f32, f32, f32) + position: (f32, f32, f32), } #[derive(Copy, Clone)] pub struct Normal { - normal: (f32, f32, f32) + normal: (f32, f32, f32), } - fn model(app: &App) -> Model { - let window_id = app.new_window() + let window_id = app + .new_window() .with_dimensions(500, 700) .view(view) .build() .unwrap(); - app.window(window_id) - .expect("No window") - .set_position(0, 0); + app.window(window_id).expect("No window").set_position(0, 0); let device = app.main_window().swapchain().device().clone(); @@ -77,22 +74,23 @@ fn model(app: &App) -> Model { device.clone(), vk::BufferUsage::all(), VERTICES.iter().cloned(), - ).unwrap(); + ) + .unwrap(); let normal_buffer = vk::CpuAccessibleBuffer::from_iter( device.clone(), vk::BufferUsage::all(), NORMALS.iter().cloned(), - ).unwrap(); + ) + .unwrap(); let index_buffer = vk::CpuAccessibleBuffer::from_iter( device.clone(), vk::BufferUsage::all(), INDICES.iter().cloned(), - ).unwrap(); + ) + .unwrap(); - let uniform_buffer = vk::CpuBufferPool::::new( - device.clone(), - vk::BufferUsage::all(), - ); + let uniform_buffer = + vk::CpuBufferPool::::new(device.clone(), vk::BufferUsage::all()); let vertex_shader = vs::Shader::load(device.clone()).unwrap(); let fragment_shader = fs::Shader::load(device.clone()).unwrap(); @@ -118,7 +116,8 @@ fn model(app: &App) -> Model { color: [color], depth_stencil: {depth} } - ).unwrap(), + ) + .unwrap(), ); let [w, h] = app.main_window().swapchain().dimensions(); @@ -129,16 +128,25 @@ fn model(app: &App) -> Model { &fragment_shader, render_pass.clone(), [w as f32, h as f32], - ).unwrap(); + ) + .unwrap(); - let depth_image = vk::AttachmentImage::transient(device.clone(), [w, h], vk::Format::D16Unorm) - .unwrap(); + let depth_image = + vk::AttachmentImage::transient(device.clone(), [w, h], vk::Format::D16Unorm).unwrap(); - let inter_image = vk::AttachmentImage::sampled(device.clone(), [w, h], app.main_window().swapchain().format()).unwrap(); + let inter_image = vk::AttachmentImage::sampled( + device.clone(), + [w, h], + app.main_window().swapchain().format(), + ) + .unwrap(); let framebuffer = vk::Framebuffer::start(render_pass.clone()) - .add(inter_image.clone()).unwrap() - .add(depth_image.clone()).unwrap() - .build().unwrap(); + .add(inter_image.clone()) + .unwrap() + .add(depth_image.clone()) + .unwrap() + .build() + .unwrap(); let framebuffer = Arc::new(framebuffer); let graphics = RefCell::new(Graphics { @@ -155,17 +163,16 @@ fn model(app: &App) -> Model { inter_image, }); - let gui_window_id = app.new_window() + let gui_window_id = app + .new_window() .with_dimensions(500, 400) .view(ui_view) .event(controls::event) .build() .expect("Failed to build second window"); - let gui_window = app.window(gui_window_id) - .expect("No window"); - let monitor_size = gui_window.current_monitor() - .get_dimensions(); + let gui_window = app.window(gui_window_id).expect("No window"); + let monitor_size = gui_window.current_monitor().get_dimensions(); gui_window.set_position((monitor_size.width / 2.0) as i32, 0); @@ -184,21 +191,28 @@ fn model(app: &App) -> Model { br_text: ui.generate_widget_id(), }; - let (window_w, window_h) = app.window(gui_window_id).expect("Gui window doesn't exist").inner_size_points(); + let (window_w, window_h) = app + .window(gui_window_id) + .expect("Gui window doesn't exist") + .inner_size_points(); let w = window_w / 2.0; let h = window_h / 2.0; - let init_dims = Rect{ + let init_dims = Rect { x: Range::new(-w + controls::PAD_X, w - controls::PAD_X), - y: Range::new(-h + controls::PAD_Y, h - controls::PAD_Y) + y: Range::new(-h + controls::PAD_Y, h - controls::PAD_Y), }; let corners = Corners::new(init_dims); - let controls = Controls { - corners, - }; + let controls = Controls { corners }; let warp = warp::warp(app); - Model { graphics, controls, ui, ids, warp } + Model { + graphics, + controls, + ui, + ids, + warp, + } } fn update(_: &App, model: &mut Model, _update: Update) { @@ -221,13 +235,11 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { &graphics.fragment_shader, graphics.render_pass.clone(), [w as f32, h as f32], - ).unwrap(); + ) + .unwrap(); - graphics.depth_image = vk::AttachmentImage::transient( - device.clone(), - [w, h], - vk::Format::D16Unorm, - ).unwrap(); + graphics.depth_image = + vk::AttachmentImage::transient(device.clone(), [w, h], vk::Format::D16Unorm).unwrap(); } // Create a uniform buffer slice with the world, view and projection matrices. @@ -237,12 +249,7 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { // note: this teapot was meant for OpenGL where the origin is at the lower left instead the // origin is at the upper left in Vulkan, so we reverse the Y axis let aspect_ratio = w as f32 / h as f32; - let proj = cgmath::perspective( - Rad(std::f32::consts::FRAC_PI_2), - aspect_ratio, - 0.01, - 100.0, - ); + let proj = cgmath::perspective(Rad(std::f32::consts::FRAC_PI_2), aspect_ratio, 0.01, 100.0); let view = Matrix4::look_at( Point3::new(0.3, 0.3, 1.0), Point3::new(0.0, 0.0, 0.0), @@ -264,7 +271,7 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { .add_buffer(uniform_buffer_slice) .unwrap() .build() - .unwrap() + .unwrap(), ); let clear_color = [0.0, 0.0, 0.0, 1.0].into(); @@ -284,7 +291,10 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { .draw_indexed( graphics.graphics_pipeline.clone(), &vk::DynamicState::none(), - vec![graphics.vertex_buffer.clone(), graphics.normal_buffer.clone()], + vec![ + graphics.vertex_buffer.clone(), + graphics.normal_buffer.clone(), + ], graphics.index_buffer.clone(), descriptor_set, (), @@ -372,4 +382,3 @@ void main() { " } } - diff --git a/examples/vulkan/vk_quad_warp/warp.rs b/examples/vulkan/vk_quad_warp/warp.rs index 8b0ca3582..7a94969a8 100644 --- a/examples/vulkan/vk_quad_warp/warp.rs +++ b/examples/vulkan/vk_quad_warp/warp.rs @@ -76,21 +76,20 @@ pub(crate) fn warp(app: &App) -> Warp { } } -pub(crate) fn view(app: &App, model: &Model, inter_image: Arc, frame: Frame) -> Frame { - let Model { - warp, - controls, - .. - } = model; +pub(crate) fn view( + app: &App, + model: &Model, + inter_image: Arc, + frame: Frame, +) -> Frame { + let Model { warp, controls, .. } = model; let [w, h] = frame.swapchain_image().dimensions(); let half_w = w as f32 / 2.0; let half_h = h as f32 / 2.0; let ref corners = controls.corners; - let remap = | a: &Point2| -> Point2 { - pt2(a.x / half_w as f32, a.y / half_h as f32) - }; + let remap = |a: &Point2| -> Point2 { pt2(a.x / half_w as f32, a.y / half_h as f32) }; let tl = remap(&corners.top_left.pos); let tr = remap(&corners.top_right.pos); @@ -107,18 +106,28 @@ pub(crate) fn view(app: &App, model: &Model, inter_image: Arc Frame { let dynamic_state = vk::DynamicState::default().viewports(vec![viewport]); // Update the view_fbo in case of window resize. - model.view_fbo.borrow_mut() - .update(&frame, model.render_pass.clone(), |builder, image| builder.add(image)) + model + .view_fbo + .borrow_mut() + .update(&frame, model.render_pass.clone(), |builder, image| { + builder.add(image) + }) .unwrap(); let clear_values = vec![[0.0, 1.0, 0.0, 1.0].into()]; diff --git a/examples/vulkan/vk_teapot.rs b/examples/vulkan/vk_teapot.rs index debb41a0b..976a6de91 100644 --- a/examples/vulkan/vk_teapot.rs +++ b/examples/vulkan/vk_teapot.rs @@ -1,7 +1,5 @@ -extern crate nannou; - +use nannou::math::cgmath::{self, Matrix3, Matrix4, Point3, Rad, Vector3}; use nannou::prelude::*; -use nannou::math::cgmath::{self, Matrix3, Matrix4, Rad, Point3, Vector3}; use std::cell::RefCell; use std::sync::Arc; @@ -28,12 +26,12 @@ struct Graphics { #[derive(Copy, Clone)] struct Vertex { - position: (f32, f32, f32) + position: (f32, f32, f32), } #[derive(Copy, Clone)] struct Normal { - normal: (f32, f32, f32) + normal: (f32, f32, f32), } vk::impl_vertex!(Vertex, position); @@ -53,19 +51,23 @@ fn model(app: &App) -> Model { device.clone(), vk::BufferUsage::all(), VERTICES.iter().cloned(), - ).unwrap(); + ) + .unwrap(); let normal_buffer = vk::CpuAccessibleBuffer::from_iter( device.clone(), vk::BufferUsage::all(), NORMALS.iter().cloned(), - ).unwrap(); + ) + .unwrap(); let index_buffer = vk::CpuAccessibleBuffer::from_iter( device.clone(), vk::BufferUsage::all(), INDICES.iter().cloned(), - ).unwrap(); + ) + .unwrap(); - let uniform_buffer = vk::CpuBufferPool::::new(device.clone(), vk::BufferUsage::all()); + let uniform_buffer = + vk::CpuBufferPool::::new(device.clone(), vk::BufferUsage::all()); let vertex_shader = vs::Shader::load(device.clone()).unwrap(); let fragment_shader = fs::Shader::load(device.clone()).unwrap(); @@ -91,7 +93,8 @@ fn model(app: &App) -> Model { color: [color], depth_stencil: {depth} } - ).unwrap(), + ) + .unwrap(), ); let [w, h] = app.main_window().swapchain().dimensions(); @@ -102,14 +105,16 @@ fn model(app: &App) -> Model { &fragment_shader, render_pass.clone(), [w as f32, h as f32], - ).unwrap(); + ) + .unwrap(); let depth_image = vk::AttachmentImage::transient_multisampled( device.clone(), [w, h], app.main_window().msaa_samples(), vk::Format::D16Unorm, - ).unwrap(); + ) + .unwrap(); let view_fbo = ViewFbo::default(); @@ -144,21 +149,26 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { &graphics.fragment_shader, graphics.render_pass.clone(), [w as f32, h as f32], - ).unwrap(); + ) + .unwrap(); graphics.depth_image = vk::AttachmentImage::transient_multisampled( device.clone(), [w, h], frame.image_msaa_samples(), vk::Format::D16Unorm, - ).unwrap(); + ) + .unwrap(); } // Update view_fbo so that count matches swapchain image count and dimensions match. let render_pass = graphics.render_pass.clone(); let depth_image = graphics.depth_image.clone(); - graphics.view_fbo - .update(&frame, render_pass, |builder, image| builder.add(image)?.add(depth_image.clone())) + graphics + .view_fbo + .update(&frame, render_pass, |builder, image| { + builder.add(image)?.add(depth_image.clone()) + }) .unwrap(); // Create a uniform buffer slice with the world, view and projection matrices. @@ -168,12 +178,7 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { // note: this teapot was meant for OpenGL where the origin is at the lower left instead the // origin is at the upper left in Vulkan, so we reverse the Y axis let aspect_ratio = w as f32 / h as f32; - let proj = cgmath::perspective( - Rad(std::f32::consts::FRAC_PI_2), - aspect_ratio, - 0.01, - 100.0, - ); + let proj = cgmath::perspective(Rad(std::f32::consts::FRAC_PI_2), aspect_ratio, 0.01, 100.0); let view = Matrix4::look_at( Point3::new(0.3, 0.3, 1.0), Point3::new(0.0, 0.0, 0.0), @@ -195,7 +200,7 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { .add_buffer(uniform_buffer_slice) .unwrap() .build() - .unwrap() + .unwrap(), ); let clear_color = [0.0, 0.0, 0.0, 1.0].into(); @@ -210,7 +215,10 @@ fn view(app: &App, model: &Model, frame: Frame) -> Frame { .draw_indexed( graphics.graphics_pipeline.clone(), &vk::DynamicState::none(), - vec![graphics.vertex_buffer.clone(), graphics.normal_buffer.clone()], + vec![ + graphics.vertex_buffer.clone(), + graphics.normal_buffer.clone(), + ], graphics.index_buffer.clone(), descriptor_set, (), @@ -296,2098 +304,3354 @@ void main() { // Teapot data, sourced from `vulkano-examples`. const VERTICES: [Vertex; 531] = [ - Vertex { position: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices - // start at 1 - Vertex { position: (40.6266, 28.3457, -1.10804) }, - Vertex { position: (40.0714, 30.4443, -1.10804) }, - Vertex { position: (40.7155, 31.1438, -1.10804) }, - Vertex { position: (42.0257, 30.4443, -1.10804) }, - Vertex { position: (43.4692, 28.3457, -1.10804) }, - Vertex { position: (37.5425, 28.3457, 14.5117) }, - Vertex { position: (37.0303, 30.4443, 14.2938) }, - Vertex { position: (37.6244, 31.1438, 14.5466) }, - Vertex { position: (38.8331, 30.4443, 15.0609) }, - Vertex { position: (40.1647, 28.3457, 15.6274) }, - Vertex { position: (29.0859, 28.3457, 27.1468) }, - Vertex { position: (28.6917, 30.4443, 26.7527) }, - Vertex { position: (29.149, 31.1438, 27.2099) }, - Vertex { position: (30.0792, 30.4443, 28.1402) }, - Vertex { position: (31.1041, 28.3457, 29.165) }, - Vertex { position: (16.4508, 28.3457, 35.6034) }, - Vertex { position: (16.2329, 30.4443, 35.0912) }, - Vertex { position: (16.4857, 31.1438, 35.6853) }, - Vertex { position: (16.9999, 30.4443, 36.894) }, - Vertex { position: (17.5665, 28.3457, 38.2256) }, - Vertex { position: (0.831025, 28.3457, 38.6876) }, - Vertex { position: (0.831025, 30.4443, 38.1324) }, - Vertex { position: (0.831025, 31.1438, 38.7764) }, - Vertex { position: (0.831025, 30.4443, 40.0866) }, - Vertex { position: (0.831025, 28.3457, 41.5301) }, - Vertex { position: (-15.868, 28.3457, 35.6034) }, - Vertex { position: (-15.0262, 30.4443, 35.0912) }, - Vertex { position: (-14.9585, 31.1438, 35.6853) }, - Vertex { position: (-15.3547, 30.4443, 36.894) }, - Vertex { position: (-15.9044, 28.3457, 38.2256) }, - Vertex { position: (-28.3832, 28.3457, 27.1468) }, - Vertex { position: (-27.4344, 30.4443, 26.7527) }, - Vertex { position: (-27.6068, 31.1438, 27.2099) }, - Vertex { position: (-28.4322, 30.4443, 28.1402) }, - Vertex { position: (-29.4421, 28.3457, 29.165) }, - Vertex { position: (-36.2402, 28.3457, 14.5117) }, - Vertex { position: (-35.52, 30.4443, 14.2938) }, - Vertex { position: (-36.0073, 31.1438, 14.5466) }, - Vertex { position: (-37.1767, 30.4443, 15.0609) }, - Vertex { position: (-38.5027, 28.3457, 15.6274) }, - Vertex { position: (-38.9646, 28.3457, -1.10804) }, - Vertex { position: (-38.4094, 30.4443, -1.10804) }, - Vertex { position: (-39.0534, 31.1438, -1.10804) }, - Vertex { position: (-40.3636, 30.4443, -1.10804) }, - Vertex { position: (-41.8071, 28.3457, -1.10804) }, - Vertex { position: (-35.8804, 28.3457, -16.7278) }, - Vertex { position: (-35.3683, 30.4443, -16.5099) }, - Vertex { position: (-35.9624, 31.1438, -16.7627) }, - Vertex { position: (-37.1711, 30.4443, -17.2769) }, - Vertex { position: (-38.5027, 28.3457, -17.8435) }, - Vertex { position: (-27.4238, 28.3457, -29.3629) }, - Vertex { position: (-27.0297, 30.4443, -28.9687) }, - Vertex { position: (-27.4869, 31.1438, -29.426) }, - Vertex { position: (-28.4172, 30.4443, -30.3562) }, - Vertex { position: (-29.4421, 28.3457, -31.3811) }, - Vertex { position: (-14.7887, 28.3457, -37.8195) }, - Vertex { position: (-14.5708, 30.4443, -37.3073) }, - Vertex { position: (-14.8236, 31.1438, -37.9014) }, - Vertex { position: (-15.3379, 30.4443, -39.1101) }, - Vertex { position: (-15.9044, 28.3457, -40.4417) }, - Vertex { position: (0.831025, 28.3457, -40.9036) }, - Vertex { position: (0.831025, 30.4443, -40.3484) }, - Vertex { position: (0.831025, 31.1438, -40.9925) }, - Vertex { position: (0.831025, 30.4443, -42.3027) }, - Vertex { position: (0.831025, 28.3457, -43.7462) }, - Vertex { position: (16.4508, 28.3457, -37.8195) }, - Vertex { position: (16.2329, 30.4443, -37.3073) }, - Vertex { position: (16.4857, 31.1438, -37.9014) }, - Vertex { position: (16.9999, 30.4443, -39.1101) }, - Vertex { position: (17.5665, 28.3457, -40.4417) }, - Vertex { position: (29.0859, 28.3457, -29.3629) }, - Vertex { position: (28.6917, 30.4443, -28.9687) }, - Vertex { position: (29.149, 31.1438, -29.426) }, - Vertex { position: (30.0792, 30.4443, -30.3562) }, - Vertex { position: (31.1041, 28.3457, -31.3811) }, - Vertex { position: (37.5425, 28.3457, -16.7278) }, - Vertex { position: (37.0303, 30.4443, -16.5099) }, - Vertex { position: (37.6244, 31.1438, -16.7627) }, - Vertex { position: (38.8331, 30.4443, -17.2769) }, - Vertex { position: (40.1647, 28.3457, -17.8435) }, - Vertex { position: (48.6879, 17.1865, -1.10804) }, - Vertex { position: (53.2404, 6.22714, -1.10804) }, - Vertex { position: (56.4605, -4.33246, -1.10804) }, - Vertex { position: (57.6819, -14.2925, -1.10804) }, - Vertex { position: (44.979, 17.1865, 17.6758) }, - Vertex { position: (49.1787, 6.22714, 19.4626) }, - Vertex { position: (52.1492, -4.33246, 20.7265) }, - Vertex { position: (53.2759, -14.2925, 21.2059) }, - Vertex { position: (34.8094, 17.1865, 32.8703) }, - Vertex { position: (38.0417, 6.22714, 36.1026) }, - Vertex { position: (40.3279, -4.33246, 38.3889) }, - Vertex { position: (41.1951, -14.2925, 39.2561) }, - Vertex { position: (19.6148, 17.1865, 43.0399) }, - Vertex { position: (21.4017, 6.22714, 47.2396) }, - Vertex { position: (22.6656, -4.33246, 50.2101) }, - Vertex { position: (23.145, -14.2925, 51.3369) }, - Vertex { position: (0.831025, 17.1865, 46.7488) }, - Vertex { position: (0.831025, 6.22714, 51.3013) }, - Vertex { position: (0.831025, -4.33246, 54.5214) }, - Vertex { position: (0.831025, -14.2925, 55.7428) }, - Vertex { position: (-17.9528, 17.1865, 43.0399) }, - Vertex { position: (-19.7397, 6.22714, 47.2396) }, - Vertex { position: (-21.0035, -4.33246, 50.2101) }, - Vertex { position: (-21.4829, -14.2925, 51.3369) }, - Vertex { position: (-33.1474, 17.1865, 32.8703) }, - Vertex { position: (-36.3796, 6.22714, 36.1026) }, - Vertex { position: (-38.6659, -4.33246, 38.3889) }, - Vertex { position: (-39.5331, -14.2925, 39.2561) }, - Vertex { position: (-43.3169, 17.1865, 17.6758) }, - Vertex { position: (-47.5166, 6.22714, 19.4626) }, - Vertex { position: (-50.4871, -4.33246, 20.7265) }, - Vertex { position: (-51.6139, -14.2925, 21.2059) }, - Vertex { position: (-47.0258, 17.1865, -1.10804) }, - Vertex { position: (-51.5784, 6.22714, -1.10804) }, - Vertex { position: (-54.7984, -4.33246, -1.10804) }, - Vertex { position: (-56.0198, -14.2925, -1.10804) }, - Vertex { position: (-43.3169, 17.1865, -19.8919) }, - Vertex { position: (-47.5166, 6.22714, -21.6787) }, - Vertex { position: (-50.4871, -4.33246, -22.9426) }, - Vertex { position: (-51.6139, -14.2925, -23.422) }, - Vertex { position: (-33.1474, 17.1865, -35.0864) }, - Vertex { position: (-36.3796, 6.22714, -38.3187) }, - Vertex { position: (-38.6659, -4.33246, -40.6049) }, - Vertex { position: (-39.5331, -14.2925, -41.4721) }, - Vertex { position: (-17.9528, 17.1865, -45.256) }, - Vertex { position: (-19.7397, 6.22714, -49.4557) }, - Vertex { position: (-21.0035, -4.33246, -52.4262) }, - Vertex { position: (-21.4829, -14.2925, -53.5529) }, - Vertex { position: (0.831025, 17.1865, -48.9649) }, - Vertex { position: (0.831025, 6.22714, -53.5174) }, - Vertex { position: (0.831025, -4.33246, -56.7375) }, - Vertex { position: (0.831025, -14.2925, -57.9589) }, - Vertex { position: (19.6148, 17.1865, -45.256) }, - Vertex { position: (21.4017, 6.22714, -49.4557) }, - Vertex { position: (22.6656, -4.33246, -52.4262) }, - Vertex { position: (23.145, -14.2925, -53.5529) }, - Vertex { position: (34.8094, 17.1865, -35.0864) }, - Vertex { position: (38.0417, 6.22714, -38.3187) }, - Vertex { position: (40.3279, -4.33246, -40.6049) }, - Vertex { position: (41.1951, -14.2925, -41.4721) }, - Vertex { position: (44.979, 17.1865, -19.8919) }, - Vertex { position: (49.1787, 6.22714, -21.6787) }, - Vertex { position: (52.1492, -4.33246, -22.9426) }, - Vertex { position: (53.2759, -14.2925, -23.422) }, - Vertex { position: (55.4611, -22.7202, -1.10804) }, - Vertex { position: (50.5755, -28.9493, -1.10804) }, - Vertex { position: (45.6899, -33.1798, -1.10804) }, - Vertex { position: (43.4692, -35.6115, -1.10804) }, - Vertex { position: (51.2273, -22.7202, 20.3343) }, - Vertex { position: (46.7203, -28.9493, 18.4167) }, - Vertex { position: (42.2133, -33.1798, 16.4991) }, - Vertex { position: (40.1647, -35.6115, 15.6274) }, - Vertex { position: (39.6184, -22.7202, 37.6793) }, - Vertex { position: (36.1496, -28.9493, 34.2106) }, - Vertex { position: (32.6808, -33.1798, 30.7418) }, - Vertex { position: (31.1041, -35.6115, 29.165) }, - Vertex { position: (22.2733, -22.7202, 49.2882) }, - Vertex { position: (20.3557, -28.9493, 44.7813) }, - Vertex { position: (18.4381, -33.1798, 40.2743) }, - Vertex { position: (17.5665, -35.6115, 38.2256) }, - Vertex { position: (0.831025, -22.7202, 53.5221) }, - Vertex { position: (0.831025, -28.9493, 48.6365) }, - Vertex { position: (0.831025, -33.1798, 43.7508) }, - Vertex { position: (0.831025, -35.6115, 41.5301) }, - Vertex { position: (-20.6113, -22.7202, 49.2882) }, - Vertex { position: (-18.6937, -28.9493, 44.7813) }, - Vertex { position: (-16.7761, -33.1798, 40.2743) }, - Vertex { position: (-15.9044, -35.6115, 38.2256) }, - Vertex { position: (-37.9564, -22.7202, 37.6793) }, - Vertex { position: (-34.4876, -28.9493, 34.2106) }, - Vertex { position: (-31.0188, -33.1798, 30.7418) }, - Vertex { position: (-29.4421, -35.6115, 29.165) }, - Vertex { position: (-49.5653, -22.7202, 20.3343) }, - Vertex { position: (-45.0583, -28.9493, 18.4167) }, - Vertex { position: (-40.5513, -33.1798, 16.4991) }, - Vertex { position: (-38.5027, -35.6115, 15.6274) }, - Vertex { position: (-53.7991, -22.7202, -1.10804) }, - Vertex { position: (-48.9135, -28.9493, -1.10804) }, - Vertex { position: (-44.0279, -33.1798, -1.10804) }, - Vertex { position: (-41.8071, -35.6115, -1.10804) }, - Vertex { position: (-49.5653, -22.7202, -22.5504) }, - Vertex { position: (-45.0583, -28.9493, -20.6327) }, - Vertex { position: (-40.5513, -33.1798, -18.7151) }, - Vertex { position: (-38.5027, -35.6115, -17.8435) }, - Vertex { position: (-37.9564, -22.7202, -39.8954) }, - Vertex { position: (-34.4876, -28.9493, -36.4266) }, - Vertex { position: (-31.0188, -33.1798, -32.9578) }, - Vertex { position: (-29.4421, -35.6115, -31.3811) }, - Vertex { position: (-20.6113, -22.7202, -51.5043) }, - Vertex { position: (-18.6937, -28.9493, -46.9973) }, - Vertex { position: (-16.7761, -33.1798, -42.4903) }, - Vertex { position: (-15.9044, -35.6115, -40.4417) }, - Vertex { position: (0.831025, -22.7202, -55.7382) }, - Vertex { position: (0.831025, -28.9493, -50.8525) }, - Vertex { position: (0.831025, -33.1798, -45.9669) }, - Vertex { position: (0.831025, -35.6115, -43.7462) }, - Vertex { position: (22.2733, -22.7202, -51.5043) }, - Vertex { position: (20.3557, -28.9493, -46.9973) }, - Vertex { position: (18.4381, -33.1798, -42.4903) }, - Vertex { position: (17.5665, -35.6115, -40.4417) }, - Vertex { position: (39.6184, -22.7202, -39.8954) }, - Vertex { position: (36.1496, -28.9493, -36.4266) }, - Vertex { position: (32.6808, -33.1798, -32.9578) }, - Vertex { position: (31.1041, -35.6115, -31.3811) }, - Vertex { position: (51.2273, -22.7202, -22.5504) }, - Vertex { position: (46.7203, -28.9493, -20.6327) }, - Vertex { position: (42.2133, -33.1798, -18.7151) }, - Vertex { position: (40.1647, -35.6115, -17.8435) }, - Vertex { position: (42.5031, -37.1772, -1.10804) }, - Vertex { position: (37.3399, -38.5429, -1.10804) }, - Vertex { position: (24.5818, -39.5089, -1.10804) }, - Vertex { position: (0.831025, -39.8754, -1.10804) }, - Vertex { position: (39.2736, -37.1772, 15.2483) }, - Vertex { position: (34.5105, -38.5429, 13.2217) }, - Vertex { position: (22.7411, -39.5089, 8.21414) }, - Vertex { position: (30.4182, -37.1772, 28.4792) }, - Vertex { position: (26.7523, -38.5429, 24.8133) }, - Vertex { position: (17.6941, -39.5089, 15.755) }, - Vertex { position: (17.1873, -37.1772, 37.3345) }, - Vertex { position: (15.1608, -38.5429, 32.5714) }, - Vertex { position: (10.1532, -39.5089, 20.8021) }, - Vertex { position: (0.831025, -37.1772, 40.5641) }, - Vertex { position: (0.831025, -38.5429, 35.4009) }, - Vertex { position: (0.831025, -39.5089, 22.6427) }, - Vertex { position: (-15.5253, -37.1772, 37.3345) }, - Vertex { position: (-13.4987, -38.5429, 32.5714) }, - Vertex { position: (-8.49115, -39.5089, 20.8021) }, - Vertex { position: (-28.7562, -37.1772, 28.4792) }, - Vertex { position: (-25.0903, -38.5429, 24.8133) }, - Vertex { position: (-16.032, -39.5089, 15.755) }, - Vertex { position: (-37.6115, -37.1772, 15.2483) }, - Vertex { position: (-32.8484, -38.5429, 13.2217) }, - Vertex { position: (-21.0791, -39.5089, 8.21414) }, - Vertex { position: (-40.8411, -37.1772, -1.10804) }, - Vertex { position: (-35.6779, -38.5429, -1.10804) }, - Vertex { position: (-22.9198, -39.5089, -1.10804) }, - Vertex { position: (-37.6115, -37.1772, -17.4643) }, - Vertex { position: (-32.8484, -38.5429, -15.4378) }, - Vertex { position: (-21.0791, -39.5089, -10.4302) }, - Vertex { position: (-28.7562, -37.1772, -30.6952) }, - Vertex { position: (-25.0903, -38.5429, -27.0294) }, - Vertex { position: (-16.032, -39.5089, -17.9711) }, - Vertex { position: (-15.5253, -37.1772, -39.5506) }, - Vertex { position: (-13.4987, -38.5429, -34.7875) }, - Vertex { position: (-8.49115, -39.5089, -23.0181) }, - Vertex { position: (0.831025, -37.1772, -42.7802) }, - Vertex { position: (0.831025, -38.5429, -37.6169) }, - Vertex { position: (0.831025, -39.5089, -24.8588) }, - Vertex { position: (17.1873, -37.1772, -39.5506) }, - Vertex { position: (15.1608, -38.5429, -34.7875) }, - Vertex { position: (10.1532, -39.5089, -23.0181) }, - Vertex { position: (30.4182, -37.1772, -30.6952) }, - Vertex { position: (26.7523, -38.5429, -27.0294) }, - Vertex { position: (17.6941, -39.5089, -17.9711) }, - Vertex { position: (39.2736, -37.1772, -17.4643) }, - Vertex { position: (34.5105, -38.5429, -15.4378) }, - Vertex { position: (22.7411, -39.5089, -10.4302) }, - Vertex { position: (-44.6497, 17.6861, -1.10804) }, - Vertex { position: (-57.9297, 17.5862, -1.10804) }, - Vertex { position: (-67.7453, 16.8867, -1.10804) }, - Vertex { position: (-73.8301, 14.9879, -1.10804) }, - Vertex { position: (-75.9176, 11.2904, -1.10804) }, - Vertex { position: (-44.2055, 18.6855, 3.68876) }, - Vertex { position: (-58.3252, 18.5699, 3.68876) }, - Vertex { position: (-68.6891, 17.7611, 3.68876) }, - Vertex { position: (-75.0724, 15.5657, 3.68876) }, - Vertex { position: (-77.2501, 11.2904, 3.68876) }, - Vertex { position: (-43.2284, 20.884, 5.28769) }, - Vertex { position: (-59.1955, 20.7341, 5.28769) }, - Vertex { position: (-70.7655, 19.6848, 5.28769) }, - Vertex { position: (-77.8053, 16.8367, 5.28769) }, - Vertex { position: (-80.1814, 11.2904, 5.28769) }, - Vertex { position: (-42.2513, 23.0825, 3.68876) }, - Vertex { position: (-60.0657, 22.8983, 3.68876) }, - Vertex { position: (-72.8419, 21.6085, 3.68876) }, - Vertex { position: (-80.5381, 18.1077, 3.68876) }, - Vertex { position: (-83.1128, 11.2904, 3.68876) }, - Vertex { position: (-41.8071, 24.0819, -1.10804) }, - Vertex { position: (-60.4613, 23.882, -1.10804) }, - Vertex { position: (-73.7857, 22.4829, -1.10804) }, - Vertex { position: (-81.7804, 18.6855, -1.10804) }, - Vertex { position: (-84.4453, 11.2904, -1.10804) }, - Vertex { position: (-42.2513, 23.0825, -5.90483) }, - Vertex { position: (-60.0657, 22.8983, -5.90483) }, - Vertex { position: (-72.8419, 21.6085, -5.90483) }, - Vertex { position: (-80.5381, 18.1077, -5.90483) }, - Vertex { position: (-83.1128, 11.2904, -5.90483) }, - Vertex { position: (-43.2284, 20.884, -7.50376) }, - Vertex { position: (-59.1955, 20.7341, -7.50376) }, - Vertex { position: (-70.7655, 19.6848, -7.50376) }, - Vertex { position: (-77.8053, 16.8367, -7.50376) }, - Vertex { position: (-80.1814, 11.2904, -7.50376) }, - Vertex { position: (-44.2055, 18.6855, -5.90483) }, - Vertex { position: (-58.3252, 18.5699, -5.90483) }, - Vertex { position: (-68.6891, 17.7611, -5.90483) }, - Vertex { position: (-75.0724, 15.5657, -5.90483) }, - Vertex { position: (-77.2501, 11.2904, -5.90483) }, - Vertex { position: (-74.8073, 5.4943, -1.10804) }, - Vertex { position: (-71.2985, -1.50103, -1.10804) }, - Vertex { position: (-65.1248, -8.49634, -1.10804) }, - Vertex { position: (-56.0198, -14.2925, -1.10804) }, - Vertex { position: (-76.0183, 4.93477, 3.68876) }, - Vertex { position: (-72.159, -2.35462, 3.68876) }, - Vertex { position: (-65.4267, -9.55033, 3.68876) }, - Vertex { position: (-55.5757, -15.6249, 3.68876) }, - Vertex { position: (-78.6824, 3.70383, 5.28769) }, - Vertex { position: (-74.0522, -4.23253, 5.28769) }, - Vertex { position: (-66.0909, -11.8691, 5.28769) }, - Vertex { position: (-54.5986, -18.5563, 5.28769) }, - Vertex { position: (-81.3466, 2.47288, 3.68876) }, - Vertex { position: (-75.9454, -6.11044, 3.68876) }, - Vertex { position: (-66.755, -14.1878, 3.68876) }, - Vertex { position: (-53.6214, -21.4877, 3.68876) }, - Vertex { position: (-82.5576, 1.91336, -1.10804) }, - Vertex { position: (-76.8059, -6.96404, -1.10804) }, - Vertex { position: (-67.0569, -15.2418, -1.10804) }, - Vertex { position: (-53.1773, -22.8201, -1.10804) }, - Vertex { position: (-81.3466, 2.47288, -5.90483) }, - Vertex { position: (-75.9454, -6.11044, -5.90483) }, - Vertex { position: (-66.755, -14.1878, -5.90483) }, - Vertex { position: (-53.6214, -21.4877, -5.90483) }, - Vertex { position: (-78.6824, 3.70383, -7.50376) }, - Vertex { position: (-74.0522, -4.23253, -7.50376) }, - Vertex { position: (-66.0909, -11.8691, -7.50376) }, - Vertex { position: (-54.5986, -18.5563, -7.50376) }, - Vertex { position: (-76.0183, 4.93477, -5.90483) }, - Vertex { position: (-72.159, -2.35462, -5.90483) }, - Vertex { position: (-65.4267, -9.55033, -5.90483) }, - Vertex { position: (-55.5757, -15.6249, -5.90483) }, - Vertex { position: (49.1543, 0.630882, -1.10804) }, - Vertex { position: (62.7896, 3.76212, -1.10804) }, - Vertex { position: (68.6967, 11.2904, -1.10804) }, - Vertex { position: (71.939, 20.4176, -1.10804) }, - Vertex { position: (77.5797, 28.3457, -1.10804) }, - Vertex { position: (49.1543, -3.03333, 9.4449) }, - Vertex { position: (63.8305, 1.04519, 8.42059) }, - Vertex { position: (70.0292, 9.70814, 6.1671) }, - Vertex { position: (73.5629, 19.8451, 3.91361) }, - Vertex { position: (80.2446, 28.3457, 2.88929) }, - Vertex { position: (49.1543, -11.0946, 12.9626) }, - Vertex { position: (66.1207, -4.93206, 11.5968) }, - Vertex { position: (72.9605, 6.22714, 8.59214) }, - Vertex { position: (77.1355, 18.5855, 5.58749) }, - Vertex { position: (86.1073, 28.3457, 4.22173) }, - Vertex { position: (49.1543, -19.1559, 9.4449) }, - Vertex { position: (68.4108, -10.9093, 8.42059) }, - Vertex { position: (75.8919, 2.74614, 6.1671) }, - Vertex { position: (80.7081, 17.326, 3.91361) }, - Vertex { position: (91.97, 28.3457, 2.88929) }, - Vertex { position: (49.1543, -22.8201, -1.10804) }, - Vertex { position: (69.4518, -13.6262, -1.10804) }, - Vertex { position: (77.2244, 1.16386, -1.10804) }, - Vertex { position: (82.3321, 16.7534, -1.10804) }, - Vertex { position: (94.6349, 28.3457, -1.10804) }, - Vertex { position: (49.1543, -19.1559, -11.661) }, - Vertex { position: (68.4108, -10.9093, -10.6367) }, - Vertex { position: (75.8919, 2.74614, -8.38317) }, - Vertex { position: (80.7081, 17.326, -6.12968) }, - Vertex { position: (91.97, 28.3457, -5.10536) }, - Vertex { position: (49.1543, -11.0946, -15.1786) }, - Vertex { position: (66.1207, -4.93206, -13.8129) }, - Vertex { position: (72.9605, 6.22714, -10.8082) }, - Vertex { position: (77.1355, 18.5855, -7.80356) }, - Vertex { position: (86.1073, 28.3457, -6.4378) }, - Vertex { position: (49.1543, -3.03333, -11.661) }, - Vertex { position: (63.8305, 1.04519, -10.6367) }, - Vertex { position: (70.0292, 9.70814, -8.38317) }, - Vertex { position: (73.5629, 19.8451, -6.12968) }, - Vertex { position: (80.2446, 28.3457, -5.10536) }, - Vertex { position: (79.6227, 29.5449, -1.10804) }, - Vertex { position: (81.1329, 29.9446, -1.10804) }, - Vertex { position: (81.577, 29.5449, -1.10804) }, - Vertex { position: (80.4222, 28.3457, -1.10804) }, - Vertex { position: (82.4767, 29.6034, 2.63946) }, - Vertex { position: (83.8116, 30.0383, 2.08983) }, - Vertex { position: (83.8515, 29.6268, 1.54019) }, - Vertex { position: (82.1988, 28.3457, 1.29036) }, - Vertex { position: (88.7555, 29.7322, 3.88862) }, - Vertex { position: (89.7049, 30.2444, 3.15578) }, - Vertex { position: (88.8555, 29.8072, 2.42294) }, - Vertex { position: (86.1073, 28.3457, 2.08983) }, - Vertex { position: (95.0343, 29.8611, 2.63946) }, - Vertex { position: (95.5982, 30.4505, 2.08983) }, - Vertex { position: (93.8594, 29.9875, 1.54019) }, - Vertex { position: (90.0158, 28.3457, 1.29036) }, - Vertex { position: (97.8883, 29.9196, -1.10804) }, - Vertex { position: (98.2769, 30.5442, -1.10804) }, - Vertex { position: (96.1339, 30.0695, -1.10804) }, - Vertex { position: (91.7924, 28.3457, -1.10804) }, - Vertex { position: (95.0343, 29.8611, -4.85553) }, - Vertex { position: (95.5982, 30.4505, -4.3059) }, - Vertex { position: (93.8594, 29.9875, -3.75626) }, - Vertex { position: (90.0158, 28.3457, -3.50643) }, - Vertex { position: (88.7555, 29.7322, -6.10469) }, - Vertex { position: (89.7049, 30.2444, -5.37185) }, - Vertex { position: (88.8555, 29.8072, -4.63901) }, - Vertex { position: (86.1073, 28.3457, -4.3059) }, - Vertex { position: (82.4767, 29.6034, -4.85553) }, - Vertex { position: (83.8116, 30.0383, -4.3059) }, - Vertex { position: (83.8515, 29.6268, -3.75626) }, - Vertex { position: (82.1988, 28.3457, -3.50643) }, - Vertex { position: (0.831025, 49.6647, -1.10804) }, - Vertex { position: (10.5134, 48.2657, -1.10804) }, - Vertex { position: (10.0693, 44.868, -1.10804) }, - Vertex { position: (6.42728, 40.6708, -1.10804) }, - Vertex { position: (6.51611, 36.8733, -1.10804) }, - Vertex { position: (9.76642, 48.2657, 2.70243) }, - Vertex { position: (9.35632, 44.868, 2.52698) }, - Vertex { position: (5.9947, 40.6708, 1.09187) }, - Vertex { position: (6.07552, 36.8733, 1.12336) }, - Vertex { position: (7.71453, 48.2657, 5.77547) }, - Vertex { position: (7.39819, 44.868, 5.45913) }, - Vertex { position: (4.80736, 40.6708, 2.8683) }, - Vertex { position: (4.86744, 36.8733, 2.92838) }, - Vertex { position: (4.64149, 48.2657, 7.82736) }, - Vertex { position: (4.46604, 44.868, 7.41726) }, - Vertex { position: (3.03093, 40.6708, 4.05564) }, - Vertex { position: (3.06242, 36.8733, 4.13646) }, - Vertex { position: (0.831025, 48.2657, 8.57438) }, - Vertex { position: (0.831025, 44.868, 8.13023) }, - Vertex { position: (0.831025, 40.6708, 4.48822) }, - Vertex { position: (0.831025, 36.8733, 4.57705) }, - Vertex { position: (-2.97944, 48.2657, 7.82736) }, - Vertex { position: (-2.80399, 44.868, 7.41726) }, - Vertex { position: (-1.36888, 40.6708, 4.05564) }, - Vertex { position: (-1.40037, 36.8733, 4.13646) }, - Vertex { position: (-6.05248, 48.2657, 5.77547) }, - Vertex { position: (-5.73614, 44.868, 5.45913) }, - Vertex { position: (-3.14531, 40.6708, 2.8683) }, - Vertex { position: (-3.20539, 36.8733, 2.92838) }, - Vertex { position: (-8.10437, 48.2657, 2.70243) }, - Vertex { position: (-7.69427, 44.868, 2.52698) }, - Vertex { position: (-4.33265, 40.6708, 1.09187) }, - Vertex { position: (-4.41347, 36.8733, 1.12336) }, - Vertex { position: (-8.85139, 48.2657, -1.10804) }, - Vertex { position: (-8.40724, 44.868, -1.10804) }, - Vertex { position: (-4.76523, 40.6708, -1.10804) }, - Vertex { position: (-4.85406, 36.8733, -1.10804) }, - Vertex { position: (-8.10437, 48.2657, -4.9185) }, - Vertex { position: (-7.69427, 44.868, -4.74305) }, - Vertex { position: (-4.33265, 40.6708, -3.30794) }, - Vertex { position: (-4.41347, 36.8733, -3.33943) }, - Vertex { position: (-6.05248, 48.2657, -7.99154) }, - Vertex { position: (-5.73614, 44.868, -7.6752) }, - Vertex { position: (-3.14531, 40.6708, -5.08437) }, - Vertex { position: (-3.20539, 36.8733, -5.14445) }, - Vertex { position: (-2.97944, 48.2657, -10.0434) }, - Vertex { position: (-2.80399, 44.868, -9.63333) }, - Vertex { position: (-1.36888, 40.6708, -6.27171) }, - Vertex { position: (-1.40037, 36.8733, -6.35253) }, - Vertex { position: (0.831025, 48.2657, -10.7904) }, - Vertex { position: (0.831025, 44.868, -10.3463) }, - Vertex { position: (0.831025, 40.6708, -6.70429) }, - Vertex { position: (0.831025, 36.8733, -6.79312) }, - Vertex { position: (4.64149, 48.2657, -10.0434) }, - Vertex { position: (4.46604, 44.868, -9.63333) }, - Vertex { position: (3.03093, 40.6708, -6.27171) }, - Vertex { position: (3.06242, 36.8733, -6.35253) }, - Vertex { position: (7.71453, 48.2657, -7.99154) }, - Vertex { position: (7.39819, 44.868, -7.6752) }, - Vertex { position: (4.80736, 40.6708, -5.08437) }, - Vertex { position: (4.86744, 36.8733, -5.14445) }, - Vertex { position: (9.76642, 48.2657, -4.9185) }, - Vertex { position: (9.35632, 44.868, -4.74305) }, - Vertex { position: (5.9947, 40.6708, -3.30794) }, - Vertex { position: (6.07552, 36.8733, -3.33943) }, - Vertex { position: (13.8001, 34.3417, -1.10804) }, - Vertex { position: (24.282, 32.6095, -1.10804) }, - Vertex { position: (33.6979, 30.8773, -1.10804) }, - Vertex { position: (37.7841, 28.3457, -1.10804) }, - Vertex { position: (12.795, 34.3417, 3.98234) }, - Vertex { position: (22.4646, 32.6095, 8.09647) }, - Vertex { position: (31.1507, 30.8773, 11.7922) }, - Vertex { position: (34.9202, 28.3457, 13.396) }, - Vertex { position: (10.0391, 34.3417, 8.10003) }, - Vertex { position: (17.4812, 32.6095, 15.5422) }, - Vertex { position: (24.1665, 30.8773, 22.2275) }, - Vertex { position: (27.0677, 28.3457, 25.1286) }, - Vertex { position: (5.9214, 34.3417, 10.856) }, - Vertex { position: (10.0355, 32.6095, 20.5255) }, - Vertex { position: (13.7313, 30.8773, 29.2117) }, - Vertex { position: (15.3351, 28.3457, 32.9812) }, - Vertex { position: (0.831025, 34.3417, 11.8611) }, - Vertex { position: (0.831025, 32.6095, 22.3429) }, - Vertex { position: (0.831025, 30.8773, 31.7589) }, - Vertex { position: (0.831025, 28.3457, 35.845) }, - Vertex { position: (-4.25935, 34.3417, 10.856) }, - Vertex { position: (-8.37348, 32.6095, 20.5255) }, - Vertex { position: (-12.0692, 30.8773, 29.2117) }, - Vertex { position: (-13.673, 28.3457, 32.9812) }, - Vertex { position: (-8.37704, 34.3417, 8.10003) }, - Vertex { position: (-15.8192, 32.6095, 15.5422) }, - Vertex { position: (-22.5045, 30.8773, 22.2275) }, - Vertex { position: (-25.4056, 28.3457, 25.1286) }, - Vertex { position: (-11.133, 34.3417, 3.98234) }, - Vertex { position: (-20.8025, 32.6095, 8.09647) }, - Vertex { position: (-29.4887, 30.8773, 11.7922) }, - Vertex { position: (-33.2582, 28.3457, 13.396) }, - Vertex { position: (-12.1381, 34.3417, -1.10804) }, - Vertex { position: (-22.62, 32.6095, -1.10804) }, - Vertex { position: (-32.0359, 30.8773, -1.10804) }, - Vertex { position: (-36.122, 28.3457, -1.10804) }, - Vertex { position: (-11.133, 34.3417, -6.19841) }, - Vertex { position: (-20.8025, 32.6095, -10.3125) }, - Vertex { position: (-29.4887, 30.8773, -14.0083) }, - Vertex { position: (-33.2582, 28.3457, -15.6121) }, - Vertex { position: (-8.37704, 34.3417, -10.3161) }, - Vertex { position: (-15.8192, 32.6095, -17.7582) }, - Vertex { position: (-22.5045, 30.8773, -24.4435) }, - Vertex { position: (-25.4056, 28.3457, -27.3447) }, - Vertex { position: (-4.25935, 34.3417, -13.072) }, - Vertex { position: (-8.37348, 32.6095, -22.7416) }, - Vertex { position: (-12.0692, 30.8773, -31.4277) }, - Vertex { position: (-13.673, 28.3457, -35.1972) }, - Vertex { position: (0.831025, 34.3417, -14.0771) }, - Vertex { position: (0.831025, 32.6095, -24.559) }, - Vertex { position: (0.831025, 30.8773, -33.9749) }, - Vertex { position: (0.831025, 28.3457, -38.0611) }, - Vertex { position: (5.9214, 34.3417, -13.072) }, - Vertex { position: (10.0355, 32.6095, -22.7416) }, - Vertex { position: (13.7313, 30.8773, -31.4277) }, - Vertex { position: (15.3351, 28.3457, -35.1972) }, - Vertex { position: (10.0391, 34.3417, -10.3161) }, - Vertex { position: (17.4812, 32.6095, -17.7582) }, - Vertex { position: (24.1665, 30.8773, -24.4435) }, - Vertex { position: (27.0677, 28.3457, -27.3447) }, - Vertex { position: (12.795, 34.3417, -6.19841) }, - Vertex { position: (22.4646, 32.6095, -10.3125) }, - Vertex { position: (31.1507, 30.8773, -14.0083) }, - Vertex { position: (34.9202, 28.3457, -15.6121) } + Vertex { + position: (0.0, 0.0, 0.0), + }, // dummy vector because in the original model indices + // start at 1 + Vertex { + position: (40.6266, 28.3457, -1.10804), + }, + Vertex { + position: (40.0714, 30.4443, -1.10804), + }, + Vertex { + position: (40.7155, 31.1438, -1.10804), + }, + Vertex { + position: (42.0257, 30.4443, -1.10804), + }, + Vertex { + position: (43.4692, 28.3457, -1.10804), + }, + Vertex { + position: (37.5425, 28.3457, 14.5117), + }, + Vertex { + position: (37.0303, 30.4443, 14.2938), + }, + Vertex { + position: (37.6244, 31.1438, 14.5466), + }, + Vertex { + position: (38.8331, 30.4443, 15.0609), + }, + Vertex { + position: (40.1647, 28.3457, 15.6274), + }, + Vertex { + position: (29.0859, 28.3457, 27.1468), + }, + Vertex { + position: (28.6917, 30.4443, 26.7527), + }, + Vertex { + position: (29.149, 31.1438, 27.2099), + }, + Vertex { + position: (30.0792, 30.4443, 28.1402), + }, + Vertex { + position: (31.1041, 28.3457, 29.165), + }, + Vertex { + position: (16.4508, 28.3457, 35.6034), + }, + Vertex { + position: (16.2329, 30.4443, 35.0912), + }, + Vertex { + position: (16.4857, 31.1438, 35.6853), + }, + Vertex { + position: (16.9999, 30.4443, 36.894), + }, + Vertex { + position: (17.5665, 28.3457, 38.2256), + }, + Vertex { + position: (0.831025, 28.3457, 38.6876), + }, + Vertex { + position: (0.831025, 30.4443, 38.1324), + }, + Vertex { + position: (0.831025, 31.1438, 38.7764), + }, + Vertex { + position: (0.831025, 30.4443, 40.0866), + }, + Vertex { + position: (0.831025, 28.3457, 41.5301), + }, + Vertex { + position: (-15.868, 28.3457, 35.6034), + }, + Vertex { + position: (-15.0262, 30.4443, 35.0912), + }, + Vertex { + position: (-14.9585, 31.1438, 35.6853), + }, + Vertex { + position: (-15.3547, 30.4443, 36.894), + }, + Vertex { + position: (-15.9044, 28.3457, 38.2256), + }, + Vertex { + position: (-28.3832, 28.3457, 27.1468), + }, + Vertex { + position: (-27.4344, 30.4443, 26.7527), + }, + Vertex { + position: (-27.6068, 31.1438, 27.2099), + }, + Vertex { + position: (-28.4322, 30.4443, 28.1402), + }, + Vertex { + position: (-29.4421, 28.3457, 29.165), + }, + Vertex { + position: (-36.2402, 28.3457, 14.5117), + }, + Vertex { + position: (-35.52, 30.4443, 14.2938), + }, + Vertex { + position: (-36.0073, 31.1438, 14.5466), + }, + Vertex { + position: (-37.1767, 30.4443, 15.0609), + }, + Vertex { + position: (-38.5027, 28.3457, 15.6274), + }, + Vertex { + position: (-38.9646, 28.3457, -1.10804), + }, + Vertex { + position: (-38.4094, 30.4443, -1.10804), + }, + Vertex { + position: (-39.0534, 31.1438, -1.10804), + }, + Vertex { + position: (-40.3636, 30.4443, -1.10804), + }, + Vertex { + position: (-41.8071, 28.3457, -1.10804), + }, + Vertex { + position: (-35.8804, 28.3457, -16.7278), + }, + Vertex { + position: (-35.3683, 30.4443, -16.5099), + }, + Vertex { + position: (-35.9624, 31.1438, -16.7627), + }, + Vertex { + position: (-37.1711, 30.4443, -17.2769), + }, + Vertex { + position: (-38.5027, 28.3457, -17.8435), + }, + Vertex { + position: (-27.4238, 28.3457, -29.3629), + }, + Vertex { + position: (-27.0297, 30.4443, -28.9687), + }, + Vertex { + position: (-27.4869, 31.1438, -29.426), + }, + Vertex { + position: (-28.4172, 30.4443, -30.3562), + }, + Vertex { + position: (-29.4421, 28.3457, -31.3811), + }, + Vertex { + position: (-14.7887, 28.3457, -37.8195), + }, + Vertex { + position: (-14.5708, 30.4443, -37.3073), + }, + Vertex { + position: (-14.8236, 31.1438, -37.9014), + }, + Vertex { + position: (-15.3379, 30.4443, -39.1101), + }, + Vertex { + position: (-15.9044, 28.3457, -40.4417), + }, + Vertex { + position: (0.831025, 28.3457, -40.9036), + }, + Vertex { + position: (0.831025, 30.4443, -40.3484), + }, + Vertex { + position: (0.831025, 31.1438, -40.9925), + }, + Vertex { + position: (0.831025, 30.4443, -42.3027), + }, + Vertex { + position: (0.831025, 28.3457, -43.7462), + }, + Vertex { + position: (16.4508, 28.3457, -37.8195), + }, + Vertex { + position: (16.2329, 30.4443, -37.3073), + }, + Vertex { + position: (16.4857, 31.1438, -37.9014), + }, + Vertex { + position: (16.9999, 30.4443, -39.1101), + }, + Vertex { + position: (17.5665, 28.3457, -40.4417), + }, + Vertex { + position: (29.0859, 28.3457, -29.3629), + }, + Vertex { + position: (28.6917, 30.4443, -28.9687), + }, + Vertex { + position: (29.149, 31.1438, -29.426), + }, + Vertex { + position: (30.0792, 30.4443, -30.3562), + }, + Vertex { + position: (31.1041, 28.3457, -31.3811), + }, + Vertex { + position: (37.5425, 28.3457, -16.7278), + }, + Vertex { + position: (37.0303, 30.4443, -16.5099), + }, + Vertex { + position: (37.6244, 31.1438, -16.7627), + }, + Vertex { + position: (38.8331, 30.4443, -17.2769), + }, + Vertex { + position: (40.1647, 28.3457, -17.8435), + }, + Vertex { + position: (48.6879, 17.1865, -1.10804), + }, + Vertex { + position: (53.2404, 6.22714, -1.10804), + }, + Vertex { + position: (56.4605, -4.33246, -1.10804), + }, + Vertex { + position: (57.6819, -14.2925, -1.10804), + }, + Vertex { + position: (44.979, 17.1865, 17.6758), + }, + Vertex { + position: (49.1787, 6.22714, 19.4626), + }, + Vertex { + position: (52.1492, -4.33246, 20.7265), + }, + Vertex { + position: (53.2759, -14.2925, 21.2059), + }, + Vertex { + position: (34.8094, 17.1865, 32.8703), + }, + Vertex { + position: (38.0417, 6.22714, 36.1026), + }, + Vertex { + position: (40.3279, -4.33246, 38.3889), + }, + Vertex { + position: (41.1951, -14.2925, 39.2561), + }, + Vertex { + position: (19.6148, 17.1865, 43.0399), + }, + Vertex { + position: (21.4017, 6.22714, 47.2396), + }, + Vertex { + position: (22.6656, -4.33246, 50.2101), + }, + Vertex { + position: (23.145, -14.2925, 51.3369), + }, + Vertex { + position: (0.831025, 17.1865, 46.7488), + }, + Vertex { + position: (0.831025, 6.22714, 51.3013), + }, + Vertex { + position: (0.831025, -4.33246, 54.5214), + }, + Vertex { + position: (0.831025, -14.2925, 55.7428), + }, + Vertex { + position: (-17.9528, 17.1865, 43.0399), + }, + Vertex { + position: (-19.7397, 6.22714, 47.2396), + }, + Vertex { + position: (-21.0035, -4.33246, 50.2101), + }, + Vertex { + position: (-21.4829, -14.2925, 51.3369), + }, + Vertex { + position: (-33.1474, 17.1865, 32.8703), + }, + Vertex { + position: (-36.3796, 6.22714, 36.1026), + }, + Vertex { + position: (-38.6659, -4.33246, 38.3889), + }, + Vertex { + position: (-39.5331, -14.2925, 39.2561), + }, + Vertex { + position: (-43.3169, 17.1865, 17.6758), + }, + Vertex { + position: (-47.5166, 6.22714, 19.4626), + }, + Vertex { + position: (-50.4871, -4.33246, 20.7265), + }, + Vertex { + position: (-51.6139, -14.2925, 21.2059), + }, + Vertex { + position: (-47.0258, 17.1865, -1.10804), + }, + Vertex { + position: (-51.5784, 6.22714, -1.10804), + }, + Vertex { + position: (-54.7984, -4.33246, -1.10804), + }, + Vertex { + position: (-56.0198, -14.2925, -1.10804), + }, + Vertex { + position: (-43.3169, 17.1865, -19.8919), + }, + Vertex { + position: (-47.5166, 6.22714, -21.6787), + }, + Vertex { + position: (-50.4871, -4.33246, -22.9426), + }, + Vertex { + position: (-51.6139, -14.2925, -23.422), + }, + Vertex { + position: (-33.1474, 17.1865, -35.0864), + }, + Vertex { + position: (-36.3796, 6.22714, -38.3187), + }, + Vertex { + position: (-38.6659, -4.33246, -40.6049), + }, + Vertex { + position: (-39.5331, -14.2925, -41.4721), + }, + Vertex { + position: (-17.9528, 17.1865, -45.256), + }, + Vertex { + position: (-19.7397, 6.22714, -49.4557), + }, + Vertex { + position: (-21.0035, -4.33246, -52.4262), + }, + Vertex { + position: (-21.4829, -14.2925, -53.5529), + }, + Vertex { + position: (0.831025, 17.1865, -48.9649), + }, + Vertex { + position: (0.831025, 6.22714, -53.5174), + }, + Vertex { + position: (0.831025, -4.33246, -56.7375), + }, + Vertex { + position: (0.831025, -14.2925, -57.9589), + }, + Vertex { + position: (19.6148, 17.1865, -45.256), + }, + Vertex { + position: (21.4017, 6.22714, -49.4557), + }, + Vertex { + position: (22.6656, -4.33246, -52.4262), + }, + Vertex { + position: (23.145, -14.2925, -53.5529), + }, + Vertex { + position: (34.8094, 17.1865, -35.0864), + }, + Vertex { + position: (38.0417, 6.22714, -38.3187), + }, + Vertex { + position: (40.3279, -4.33246, -40.6049), + }, + Vertex { + position: (41.1951, -14.2925, -41.4721), + }, + Vertex { + position: (44.979, 17.1865, -19.8919), + }, + Vertex { + position: (49.1787, 6.22714, -21.6787), + }, + Vertex { + position: (52.1492, -4.33246, -22.9426), + }, + Vertex { + position: (53.2759, -14.2925, -23.422), + }, + Vertex { + position: (55.4611, -22.7202, -1.10804), + }, + Vertex { + position: (50.5755, -28.9493, -1.10804), + }, + Vertex { + position: (45.6899, -33.1798, -1.10804), + }, + Vertex { + position: (43.4692, -35.6115, -1.10804), + }, + Vertex { + position: (51.2273, -22.7202, 20.3343), + }, + Vertex { + position: (46.7203, -28.9493, 18.4167), + }, + Vertex { + position: (42.2133, -33.1798, 16.4991), + }, + Vertex { + position: (40.1647, -35.6115, 15.6274), + }, + Vertex { + position: (39.6184, -22.7202, 37.6793), + }, + Vertex { + position: (36.1496, -28.9493, 34.2106), + }, + Vertex { + position: (32.6808, -33.1798, 30.7418), + }, + Vertex { + position: (31.1041, -35.6115, 29.165), + }, + Vertex { + position: (22.2733, -22.7202, 49.2882), + }, + Vertex { + position: (20.3557, -28.9493, 44.7813), + }, + Vertex { + position: (18.4381, -33.1798, 40.2743), + }, + Vertex { + position: (17.5665, -35.6115, 38.2256), + }, + Vertex { + position: (0.831025, -22.7202, 53.5221), + }, + Vertex { + position: (0.831025, -28.9493, 48.6365), + }, + Vertex { + position: (0.831025, -33.1798, 43.7508), + }, + Vertex { + position: (0.831025, -35.6115, 41.5301), + }, + Vertex { + position: (-20.6113, -22.7202, 49.2882), + }, + Vertex { + position: (-18.6937, -28.9493, 44.7813), + }, + Vertex { + position: (-16.7761, -33.1798, 40.2743), + }, + Vertex { + position: (-15.9044, -35.6115, 38.2256), + }, + Vertex { + position: (-37.9564, -22.7202, 37.6793), + }, + Vertex { + position: (-34.4876, -28.9493, 34.2106), + }, + Vertex { + position: (-31.0188, -33.1798, 30.7418), + }, + Vertex { + position: (-29.4421, -35.6115, 29.165), + }, + Vertex { + position: (-49.5653, -22.7202, 20.3343), + }, + Vertex { + position: (-45.0583, -28.9493, 18.4167), + }, + Vertex { + position: (-40.5513, -33.1798, 16.4991), + }, + Vertex { + position: (-38.5027, -35.6115, 15.6274), + }, + Vertex { + position: (-53.7991, -22.7202, -1.10804), + }, + Vertex { + position: (-48.9135, -28.9493, -1.10804), + }, + Vertex { + position: (-44.0279, -33.1798, -1.10804), + }, + Vertex { + position: (-41.8071, -35.6115, -1.10804), + }, + Vertex { + position: (-49.5653, -22.7202, -22.5504), + }, + Vertex { + position: (-45.0583, -28.9493, -20.6327), + }, + Vertex { + position: (-40.5513, -33.1798, -18.7151), + }, + Vertex { + position: (-38.5027, -35.6115, -17.8435), + }, + Vertex { + position: (-37.9564, -22.7202, -39.8954), + }, + Vertex { + position: (-34.4876, -28.9493, -36.4266), + }, + Vertex { + position: (-31.0188, -33.1798, -32.9578), + }, + Vertex { + position: (-29.4421, -35.6115, -31.3811), + }, + Vertex { + position: (-20.6113, -22.7202, -51.5043), + }, + Vertex { + position: (-18.6937, -28.9493, -46.9973), + }, + Vertex { + position: (-16.7761, -33.1798, -42.4903), + }, + Vertex { + position: (-15.9044, -35.6115, -40.4417), + }, + Vertex { + position: (0.831025, -22.7202, -55.7382), + }, + Vertex { + position: (0.831025, -28.9493, -50.8525), + }, + Vertex { + position: (0.831025, -33.1798, -45.9669), + }, + Vertex { + position: (0.831025, -35.6115, -43.7462), + }, + Vertex { + position: (22.2733, -22.7202, -51.5043), + }, + Vertex { + position: (20.3557, -28.9493, -46.9973), + }, + Vertex { + position: (18.4381, -33.1798, -42.4903), + }, + Vertex { + position: (17.5665, -35.6115, -40.4417), + }, + Vertex { + position: (39.6184, -22.7202, -39.8954), + }, + Vertex { + position: (36.1496, -28.9493, -36.4266), + }, + Vertex { + position: (32.6808, -33.1798, -32.9578), + }, + Vertex { + position: (31.1041, -35.6115, -31.3811), + }, + Vertex { + position: (51.2273, -22.7202, -22.5504), + }, + Vertex { + position: (46.7203, -28.9493, -20.6327), + }, + Vertex { + position: (42.2133, -33.1798, -18.7151), + }, + Vertex { + position: (40.1647, -35.6115, -17.8435), + }, + Vertex { + position: (42.5031, -37.1772, -1.10804), + }, + Vertex { + position: (37.3399, -38.5429, -1.10804), + }, + Vertex { + position: (24.5818, -39.5089, -1.10804), + }, + Vertex { + position: (0.831025, -39.8754, -1.10804), + }, + Vertex { + position: (39.2736, -37.1772, 15.2483), + }, + Vertex { + position: (34.5105, -38.5429, 13.2217), + }, + Vertex { + position: (22.7411, -39.5089, 8.21414), + }, + Vertex { + position: (30.4182, -37.1772, 28.4792), + }, + Vertex { + position: (26.7523, -38.5429, 24.8133), + }, + Vertex { + position: (17.6941, -39.5089, 15.755), + }, + Vertex { + position: (17.1873, -37.1772, 37.3345), + }, + Vertex { + position: (15.1608, -38.5429, 32.5714), + }, + Vertex { + position: (10.1532, -39.5089, 20.8021), + }, + Vertex { + position: (0.831025, -37.1772, 40.5641), + }, + Vertex { + position: (0.831025, -38.5429, 35.4009), + }, + Vertex { + position: (0.831025, -39.5089, 22.6427), + }, + Vertex { + position: (-15.5253, -37.1772, 37.3345), + }, + Vertex { + position: (-13.4987, -38.5429, 32.5714), + }, + Vertex { + position: (-8.49115, -39.5089, 20.8021), + }, + Vertex { + position: (-28.7562, -37.1772, 28.4792), + }, + Vertex { + position: (-25.0903, -38.5429, 24.8133), + }, + Vertex { + position: (-16.032, -39.5089, 15.755), + }, + Vertex { + position: (-37.6115, -37.1772, 15.2483), + }, + Vertex { + position: (-32.8484, -38.5429, 13.2217), + }, + Vertex { + position: (-21.0791, -39.5089, 8.21414), + }, + Vertex { + position: (-40.8411, -37.1772, -1.10804), + }, + Vertex { + position: (-35.6779, -38.5429, -1.10804), + }, + Vertex { + position: (-22.9198, -39.5089, -1.10804), + }, + Vertex { + position: (-37.6115, -37.1772, -17.4643), + }, + Vertex { + position: (-32.8484, -38.5429, -15.4378), + }, + Vertex { + position: (-21.0791, -39.5089, -10.4302), + }, + Vertex { + position: (-28.7562, -37.1772, -30.6952), + }, + Vertex { + position: (-25.0903, -38.5429, -27.0294), + }, + Vertex { + position: (-16.032, -39.5089, -17.9711), + }, + Vertex { + position: (-15.5253, -37.1772, -39.5506), + }, + Vertex { + position: (-13.4987, -38.5429, -34.7875), + }, + Vertex { + position: (-8.49115, -39.5089, -23.0181), + }, + Vertex { + position: (0.831025, -37.1772, -42.7802), + }, + Vertex { + position: (0.831025, -38.5429, -37.6169), + }, + Vertex { + position: (0.831025, -39.5089, -24.8588), + }, + Vertex { + position: (17.1873, -37.1772, -39.5506), + }, + Vertex { + position: (15.1608, -38.5429, -34.7875), + }, + Vertex { + position: (10.1532, -39.5089, -23.0181), + }, + Vertex { + position: (30.4182, -37.1772, -30.6952), + }, + Vertex { + position: (26.7523, -38.5429, -27.0294), + }, + Vertex { + position: (17.6941, -39.5089, -17.9711), + }, + Vertex { + position: (39.2736, -37.1772, -17.4643), + }, + Vertex { + position: (34.5105, -38.5429, -15.4378), + }, + Vertex { + position: (22.7411, -39.5089, -10.4302), + }, + Vertex { + position: (-44.6497, 17.6861, -1.10804), + }, + Vertex { + position: (-57.9297, 17.5862, -1.10804), + }, + Vertex { + position: (-67.7453, 16.8867, -1.10804), + }, + Vertex { + position: (-73.8301, 14.9879, -1.10804), + }, + Vertex { + position: (-75.9176, 11.2904, -1.10804), + }, + Vertex { + position: (-44.2055, 18.6855, 3.68876), + }, + Vertex { + position: (-58.3252, 18.5699, 3.68876), + }, + Vertex { + position: (-68.6891, 17.7611, 3.68876), + }, + Vertex { + position: (-75.0724, 15.5657, 3.68876), + }, + Vertex { + position: (-77.2501, 11.2904, 3.68876), + }, + Vertex { + position: (-43.2284, 20.884, 5.28769), + }, + Vertex { + position: (-59.1955, 20.7341, 5.28769), + }, + Vertex { + position: (-70.7655, 19.6848, 5.28769), + }, + Vertex { + position: (-77.8053, 16.8367, 5.28769), + }, + Vertex { + position: (-80.1814, 11.2904, 5.28769), + }, + Vertex { + position: (-42.2513, 23.0825, 3.68876), + }, + Vertex { + position: (-60.0657, 22.8983, 3.68876), + }, + Vertex { + position: (-72.8419, 21.6085, 3.68876), + }, + Vertex { + position: (-80.5381, 18.1077, 3.68876), + }, + Vertex { + position: (-83.1128, 11.2904, 3.68876), + }, + Vertex { + position: (-41.8071, 24.0819, -1.10804), + }, + Vertex { + position: (-60.4613, 23.882, -1.10804), + }, + Vertex { + position: (-73.7857, 22.4829, -1.10804), + }, + Vertex { + position: (-81.7804, 18.6855, -1.10804), + }, + Vertex { + position: (-84.4453, 11.2904, -1.10804), + }, + Vertex { + position: (-42.2513, 23.0825, -5.90483), + }, + Vertex { + position: (-60.0657, 22.8983, -5.90483), + }, + Vertex { + position: (-72.8419, 21.6085, -5.90483), + }, + Vertex { + position: (-80.5381, 18.1077, -5.90483), + }, + Vertex { + position: (-83.1128, 11.2904, -5.90483), + }, + Vertex { + position: (-43.2284, 20.884, -7.50376), + }, + Vertex { + position: (-59.1955, 20.7341, -7.50376), + }, + Vertex { + position: (-70.7655, 19.6848, -7.50376), + }, + Vertex { + position: (-77.8053, 16.8367, -7.50376), + }, + Vertex { + position: (-80.1814, 11.2904, -7.50376), + }, + Vertex { + position: (-44.2055, 18.6855, -5.90483), + }, + Vertex { + position: (-58.3252, 18.5699, -5.90483), + }, + Vertex { + position: (-68.6891, 17.7611, -5.90483), + }, + Vertex { + position: (-75.0724, 15.5657, -5.90483), + }, + Vertex { + position: (-77.2501, 11.2904, -5.90483), + }, + Vertex { + position: (-74.8073, 5.4943, -1.10804), + }, + Vertex { + position: (-71.2985, -1.50103, -1.10804), + }, + Vertex { + position: (-65.1248, -8.49634, -1.10804), + }, + Vertex { + position: (-56.0198, -14.2925, -1.10804), + }, + Vertex { + position: (-76.0183, 4.93477, 3.68876), + }, + Vertex { + position: (-72.159, -2.35462, 3.68876), + }, + Vertex { + position: (-65.4267, -9.55033, 3.68876), + }, + Vertex { + position: (-55.5757, -15.6249, 3.68876), + }, + Vertex { + position: (-78.6824, 3.70383, 5.28769), + }, + Vertex { + position: (-74.0522, -4.23253, 5.28769), + }, + Vertex { + position: (-66.0909, -11.8691, 5.28769), + }, + Vertex { + position: (-54.5986, -18.5563, 5.28769), + }, + Vertex { + position: (-81.3466, 2.47288, 3.68876), + }, + Vertex { + position: (-75.9454, -6.11044, 3.68876), + }, + Vertex { + position: (-66.755, -14.1878, 3.68876), + }, + Vertex { + position: (-53.6214, -21.4877, 3.68876), + }, + Vertex { + position: (-82.5576, 1.91336, -1.10804), + }, + Vertex { + position: (-76.8059, -6.96404, -1.10804), + }, + Vertex { + position: (-67.0569, -15.2418, -1.10804), + }, + Vertex { + position: (-53.1773, -22.8201, -1.10804), + }, + Vertex { + position: (-81.3466, 2.47288, -5.90483), + }, + Vertex { + position: (-75.9454, -6.11044, -5.90483), + }, + Vertex { + position: (-66.755, -14.1878, -5.90483), + }, + Vertex { + position: (-53.6214, -21.4877, -5.90483), + }, + Vertex { + position: (-78.6824, 3.70383, -7.50376), + }, + Vertex { + position: (-74.0522, -4.23253, -7.50376), + }, + Vertex { + position: (-66.0909, -11.8691, -7.50376), + }, + Vertex { + position: (-54.5986, -18.5563, -7.50376), + }, + Vertex { + position: (-76.0183, 4.93477, -5.90483), + }, + Vertex { + position: (-72.159, -2.35462, -5.90483), + }, + Vertex { + position: (-65.4267, -9.55033, -5.90483), + }, + Vertex { + position: (-55.5757, -15.6249, -5.90483), + }, + Vertex { + position: (49.1543, 0.630882, -1.10804), + }, + Vertex { + position: (62.7896, 3.76212, -1.10804), + }, + Vertex { + position: (68.6967, 11.2904, -1.10804), + }, + Vertex { + position: (71.939, 20.4176, -1.10804), + }, + Vertex { + position: (77.5797, 28.3457, -1.10804), + }, + Vertex { + position: (49.1543, -3.03333, 9.4449), + }, + Vertex { + position: (63.8305, 1.04519, 8.42059), + }, + Vertex { + position: (70.0292, 9.70814, 6.1671), + }, + Vertex { + position: (73.5629, 19.8451, 3.91361), + }, + Vertex { + position: (80.2446, 28.3457, 2.88929), + }, + Vertex { + position: (49.1543, -11.0946, 12.9626), + }, + Vertex { + position: (66.1207, -4.93206, 11.5968), + }, + Vertex { + position: (72.9605, 6.22714, 8.59214), + }, + Vertex { + position: (77.1355, 18.5855, 5.58749), + }, + Vertex { + position: (86.1073, 28.3457, 4.22173), + }, + Vertex { + position: (49.1543, -19.1559, 9.4449), + }, + Vertex { + position: (68.4108, -10.9093, 8.42059), + }, + Vertex { + position: (75.8919, 2.74614, 6.1671), + }, + Vertex { + position: (80.7081, 17.326, 3.91361), + }, + Vertex { + position: (91.97, 28.3457, 2.88929), + }, + Vertex { + position: (49.1543, -22.8201, -1.10804), + }, + Vertex { + position: (69.4518, -13.6262, -1.10804), + }, + Vertex { + position: (77.2244, 1.16386, -1.10804), + }, + Vertex { + position: (82.3321, 16.7534, -1.10804), + }, + Vertex { + position: (94.6349, 28.3457, -1.10804), + }, + Vertex { + position: (49.1543, -19.1559, -11.661), + }, + Vertex { + position: (68.4108, -10.9093, -10.6367), + }, + Vertex { + position: (75.8919, 2.74614, -8.38317), + }, + Vertex { + position: (80.7081, 17.326, -6.12968), + }, + Vertex { + position: (91.97, 28.3457, -5.10536), + }, + Vertex { + position: (49.1543, -11.0946, -15.1786), + }, + Vertex { + position: (66.1207, -4.93206, -13.8129), + }, + Vertex { + position: (72.9605, 6.22714, -10.8082), + }, + Vertex { + position: (77.1355, 18.5855, -7.80356), + }, + Vertex { + position: (86.1073, 28.3457, -6.4378), + }, + Vertex { + position: (49.1543, -3.03333, -11.661), + }, + Vertex { + position: (63.8305, 1.04519, -10.6367), + }, + Vertex { + position: (70.0292, 9.70814, -8.38317), + }, + Vertex { + position: (73.5629, 19.8451, -6.12968), + }, + Vertex { + position: (80.2446, 28.3457, -5.10536), + }, + Vertex { + position: (79.6227, 29.5449, -1.10804), + }, + Vertex { + position: (81.1329, 29.9446, -1.10804), + }, + Vertex { + position: (81.577, 29.5449, -1.10804), + }, + Vertex { + position: (80.4222, 28.3457, -1.10804), + }, + Vertex { + position: (82.4767, 29.6034, 2.63946), + }, + Vertex { + position: (83.8116, 30.0383, 2.08983), + }, + Vertex { + position: (83.8515, 29.6268, 1.54019), + }, + Vertex { + position: (82.1988, 28.3457, 1.29036), + }, + Vertex { + position: (88.7555, 29.7322, 3.88862), + }, + Vertex { + position: (89.7049, 30.2444, 3.15578), + }, + Vertex { + position: (88.8555, 29.8072, 2.42294), + }, + Vertex { + position: (86.1073, 28.3457, 2.08983), + }, + Vertex { + position: (95.0343, 29.8611, 2.63946), + }, + Vertex { + position: (95.5982, 30.4505, 2.08983), + }, + Vertex { + position: (93.8594, 29.9875, 1.54019), + }, + Vertex { + position: (90.0158, 28.3457, 1.29036), + }, + Vertex { + position: (97.8883, 29.9196, -1.10804), + }, + Vertex { + position: (98.2769, 30.5442, -1.10804), + }, + Vertex { + position: (96.1339, 30.0695, -1.10804), + }, + Vertex { + position: (91.7924, 28.3457, -1.10804), + }, + Vertex { + position: (95.0343, 29.8611, -4.85553), + }, + Vertex { + position: (95.5982, 30.4505, -4.3059), + }, + Vertex { + position: (93.8594, 29.9875, -3.75626), + }, + Vertex { + position: (90.0158, 28.3457, -3.50643), + }, + Vertex { + position: (88.7555, 29.7322, -6.10469), + }, + Vertex { + position: (89.7049, 30.2444, -5.37185), + }, + Vertex { + position: (88.8555, 29.8072, -4.63901), + }, + Vertex { + position: (86.1073, 28.3457, -4.3059), + }, + Vertex { + position: (82.4767, 29.6034, -4.85553), + }, + Vertex { + position: (83.8116, 30.0383, -4.3059), + }, + Vertex { + position: (83.8515, 29.6268, -3.75626), + }, + Vertex { + position: (82.1988, 28.3457, -3.50643), + }, + Vertex { + position: (0.831025, 49.6647, -1.10804), + }, + Vertex { + position: (10.5134, 48.2657, -1.10804), + }, + Vertex { + position: (10.0693, 44.868, -1.10804), + }, + Vertex { + position: (6.42728, 40.6708, -1.10804), + }, + Vertex { + position: (6.51611, 36.8733, -1.10804), + }, + Vertex { + position: (9.76642, 48.2657, 2.70243), + }, + Vertex { + position: (9.35632, 44.868, 2.52698), + }, + Vertex { + position: (5.9947, 40.6708, 1.09187), + }, + Vertex { + position: (6.07552, 36.8733, 1.12336), + }, + Vertex { + position: (7.71453, 48.2657, 5.77547), + }, + Vertex { + position: (7.39819, 44.868, 5.45913), + }, + Vertex { + position: (4.80736, 40.6708, 2.8683), + }, + Vertex { + position: (4.86744, 36.8733, 2.92838), + }, + Vertex { + position: (4.64149, 48.2657, 7.82736), + }, + Vertex { + position: (4.46604, 44.868, 7.41726), + }, + Vertex { + position: (3.03093, 40.6708, 4.05564), + }, + Vertex { + position: (3.06242, 36.8733, 4.13646), + }, + Vertex { + position: (0.831025, 48.2657, 8.57438), + }, + Vertex { + position: (0.831025, 44.868, 8.13023), + }, + Vertex { + position: (0.831025, 40.6708, 4.48822), + }, + Vertex { + position: (0.831025, 36.8733, 4.57705), + }, + Vertex { + position: (-2.97944, 48.2657, 7.82736), + }, + Vertex { + position: (-2.80399, 44.868, 7.41726), + }, + Vertex { + position: (-1.36888, 40.6708, 4.05564), + }, + Vertex { + position: (-1.40037, 36.8733, 4.13646), + }, + Vertex { + position: (-6.05248, 48.2657, 5.77547), + }, + Vertex { + position: (-5.73614, 44.868, 5.45913), + }, + Vertex { + position: (-3.14531, 40.6708, 2.8683), + }, + Vertex { + position: (-3.20539, 36.8733, 2.92838), + }, + Vertex { + position: (-8.10437, 48.2657, 2.70243), + }, + Vertex { + position: (-7.69427, 44.868, 2.52698), + }, + Vertex { + position: (-4.33265, 40.6708, 1.09187), + }, + Vertex { + position: (-4.41347, 36.8733, 1.12336), + }, + Vertex { + position: (-8.85139, 48.2657, -1.10804), + }, + Vertex { + position: (-8.40724, 44.868, -1.10804), + }, + Vertex { + position: (-4.76523, 40.6708, -1.10804), + }, + Vertex { + position: (-4.85406, 36.8733, -1.10804), + }, + Vertex { + position: (-8.10437, 48.2657, -4.9185), + }, + Vertex { + position: (-7.69427, 44.868, -4.74305), + }, + Vertex { + position: (-4.33265, 40.6708, -3.30794), + }, + Vertex { + position: (-4.41347, 36.8733, -3.33943), + }, + Vertex { + position: (-6.05248, 48.2657, -7.99154), + }, + Vertex { + position: (-5.73614, 44.868, -7.6752), + }, + Vertex { + position: (-3.14531, 40.6708, -5.08437), + }, + Vertex { + position: (-3.20539, 36.8733, -5.14445), + }, + Vertex { + position: (-2.97944, 48.2657, -10.0434), + }, + Vertex { + position: (-2.80399, 44.868, -9.63333), + }, + Vertex { + position: (-1.36888, 40.6708, -6.27171), + }, + Vertex { + position: (-1.40037, 36.8733, -6.35253), + }, + Vertex { + position: (0.831025, 48.2657, -10.7904), + }, + Vertex { + position: (0.831025, 44.868, -10.3463), + }, + Vertex { + position: (0.831025, 40.6708, -6.70429), + }, + Vertex { + position: (0.831025, 36.8733, -6.79312), + }, + Vertex { + position: (4.64149, 48.2657, -10.0434), + }, + Vertex { + position: (4.46604, 44.868, -9.63333), + }, + Vertex { + position: (3.03093, 40.6708, -6.27171), + }, + Vertex { + position: (3.06242, 36.8733, -6.35253), + }, + Vertex { + position: (7.71453, 48.2657, -7.99154), + }, + Vertex { + position: (7.39819, 44.868, -7.6752), + }, + Vertex { + position: (4.80736, 40.6708, -5.08437), + }, + Vertex { + position: (4.86744, 36.8733, -5.14445), + }, + Vertex { + position: (9.76642, 48.2657, -4.9185), + }, + Vertex { + position: (9.35632, 44.868, -4.74305), + }, + Vertex { + position: (5.9947, 40.6708, -3.30794), + }, + Vertex { + position: (6.07552, 36.8733, -3.33943), + }, + Vertex { + position: (13.8001, 34.3417, -1.10804), + }, + Vertex { + position: (24.282, 32.6095, -1.10804), + }, + Vertex { + position: (33.6979, 30.8773, -1.10804), + }, + Vertex { + position: (37.7841, 28.3457, -1.10804), + }, + Vertex { + position: (12.795, 34.3417, 3.98234), + }, + Vertex { + position: (22.4646, 32.6095, 8.09647), + }, + Vertex { + position: (31.1507, 30.8773, 11.7922), + }, + Vertex { + position: (34.9202, 28.3457, 13.396), + }, + Vertex { + position: (10.0391, 34.3417, 8.10003), + }, + Vertex { + position: (17.4812, 32.6095, 15.5422), + }, + Vertex { + position: (24.1665, 30.8773, 22.2275), + }, + Vertex { + position: (27.0677, 28.3457, 25.1286), + }, + Vertex { + position: (5.9214, 34.3417, 10.856), + }, + Vertex { + position: (10.0355, 32.6095, 20.5255), + }, + Vertex { + position: (13.7313, 30.8773, 29.2117), + }, + Vertex { + position: (15.3351, 28.3457, 32.9812), + }, + Vertex { + position: (0.831025, 34.3417, 11.8611), + }, + Vertex { + position: (0.831025, 32.6095, 22.3429), + }, + Vertex { + position: (0.831025, 30.8773, 31.7589), + }, + Vertex { + position: (0.831025, 28.3457, 35.845), + }, + Vertex { + position: (-4.25935, 34.3417, 10.856), + }, + Vertex { + position: (-8.37348, 32.6095, 20.5255), + }, + Vertex { + position: (-12.0692, 30.8773, 29.2117), + }, + Vertex { + position: (-13.673, 28.3457, 32.9812), + }, + Vertex { + position: (-8.37704, 34.3417, 8.10003), + }, + Vertex { + position: (-15.8192, 32.6095, 15.5422), + }, + Vertex { + position: (-22.5045, 30.8773, 22.2275), + }, + Vertex { + position: (-25.4056, 28.3457, 25.1286), + }, + Vertex { + position: (-11.133, 34.3417, 3.98234), + }, + Vertex { + position: (-20.8025, 32.6095, 8.09647), + }, + Vertex { + position: (-29.4887, 30.8773, 11.7922), + }, + Vertex { + position: (-33.2582, 28.3457, 13.396), + }, + Vertex { + position: (-12.1381, 34.3417, -1.10804), + }, + Vertex { + position: (-22.62, 32.6095, -1.10804), + }, + Vertex { + position: (-32.0359, 30.8773, -1.10804), + }, + Vertex { + position: (-36.122, 28.3457, -1.10804), + }, + Vertex { + position: (-11.133, 34.3417, -6.19841), + }, + Vertex { + position: (-20.8025, 32.6095, -10.3125), + }, + Vertex { + position: (-29.4887, 30.8773, -14.0083), + }, + Vertex { + position: (-33.2582, 28.3457, -15.6121), + }, + Vertex { + position: (-8.37704, 34.3417, -10.3161), + }, + Vertex { + position: (-15.8192, 32.6095, -17.7582), + }, + Vertex { + position: (-22.5045, 30.8773, -24.4435), + }, + Vertex { + position: (-25.4056, 28.3457, -27.3447), + }, + Vertex { + position: (-4.25935, 34.3417, -13.072), + }, + Vertex { + position: (-8.37348, 32.6095, -22.7416), + }, + Vertex { + position: (-12.0692, 30.8773, -31.4277), + }, + Vertex { + position: (-13.673, 28.3457, -35.1972), + }, + Vertex { + position: (0.831025, 34.3417, -14.0771), + }, + Vertex { + position: (0.831025, 32.6095, -24.559), + }, + Vertex { + position: (0.831025, 30.8773, -33.9749), + }, + Vertex { + position: (0.831025, 28.3457, -38.0611), + }, + Vertex { + position: (5.9214, 34.3417, -13.072), + }, + Vertex { + position: (10.0355, 32.6095, -22.7416), + }, + Vertex { + position: (13.7313, 30.8773, -31.4277), + }, + Vertex { + position: (15.3351, 28.3457, -35.1972), + }, + Vertex { + position: (10.0391, 34.3417, -10.3161), + }, + Vertex { + position: (17.4812, 32.6095, -17.7582), + }, + Vertex { + position: (24.1665, 30.8773, -24.4435), + }, + Vertex { + position: (27.0677, 28.3457, -27.3447), + }, + Vertex { + position: (12.795, 34.3417, -6.19841), + }, + Vertex { + position: (22.4646, 32.6095, -10.3125), + }, + Vertex { + position: (31.1507, 30.8773, -14.0083), + }, + Vertex { + position: (34.9202, 28.3457, -15.6121), + }, ]; const NORMALS: [Normal; 531] = [ - Normal { normal: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices - // start at 1 - Normal { normal: (-0.966742, -0.255752, 0.0) }, - Normal { normal: (-0.966824, 0.255443, 0.0) }, - Normal { normal: (-0.092052, 0.995754, 0.0) }, - Normal { normal: (0.68205, 0.731305, 0.0) }, - Normal { normal: (0.870301, 0.492521, -0.0) }, - Normal { normal: (-0.893014, -0.256345, -0.369882) }, - Normal { normal: (-0.893437, 0.255997, -0.369102) }, - Normal { normal: (-0.0838771, 0.995843, -0.0355068) }, - Normal { normal: (0.629724, 0.73186, 0.260439) }, - Normal { normal: (0.803725, 0.49337, 0.332584) }, - Normal { normal: (-0.683407, -0.256729, -0.683407) }, - Normal { normal: (-0.683531, 0.256067, -0.683531) }, - Normal { normal: (-0.0649249, 0.995776, -0.0649248) }, - Normal { normal: (0.481398, 0.732469, 0.481398) }, - Normal { normal: (0.614804, 0.493997, 0.614804) }, - Normal { normal: (-0.369882, -0.256345, -0.893014) }, - Normal { normal: (-0.369102, 0.255997, -0.893437) }, - Normal { normal: (-0.0355067, 0.995843, -0.0838772) }, - Normal { normal: (0.260439, 0.73186, 0.629724) }, - Normal { normal: (0.332584, 0.49337, 0.803725) }, - Normal { normal: (-0.00284834, -0.257863, -0.966177) }, - Normal { normal: (-0.00192311, 0.254736, -0.967009) }, - Normal { normal: (-0.000266114, 0.995734, -0.0922702) }, - Normal { normal: (0.0, 0.731295, 0.682061) }, - Normal { normal: (0.0, 0.492521, 0.870301) }, - Normal { normal: (0.379058, -0.3593, -0.852771) }, - Normal { normal: (0.37711, 0.149086, -0.914091) }, - Normal { normal: (0.0275022, 0.992081, -0.122551) }, - Normal { normal: (-0.26101, 0.726762, 0.635367) }, - Normal { normal: (-0.332485, 0.492546, 0.804271) }, - Normal { normal: (0.663548, -0.410791, -0.625264) }, - Normal { normal: (0.712664, 0.0737216, -0.697621) }, - Normal { normal: (0.0997268, 0.987509, -0.121984) }, - Normal { normal: (-0.48732, 0.723754, 0.488568) }, - Normal { normal: (-0.615242, 0.492602, 0.615484) }, - Normal { normal: (0.880028, -0.332908, -0.338709) }, - Normal { normal: (0.917276, 0.167113, -0.361493) }, - Normal { normal: (0.113584, 0.992365, -0.0480695) }, - Normal { normal: (-0.63415, 0.727508, 0.261889) }, - Normal { normal: (-0.804126, 0.492634, 0.332705) }, - Normal { normal: (0.96669, -0.255738, 0.0104537) }, - Normal { normal: (0.967442, 0.252962, 0.00810329) }, - Normal { normal: (0.0934365, 0.995624, 0.00128063) }, - Normal { normal: (-0.682167, 0.731196, -0.00034353) }, - Normal { normal: (-0.870322, 0.492483, -0.0) }, - Normal { normal: (0.893014, -0.256345, 0.369882) }, - Normal { normal: (0.893437, 0.255997, 0.369102) }, - Normal { normal: (0.0838768, 0.995843, 0.0355066) }, - Normal { normal: (-0.629724, 0.73186, -0.260439) }, - Normal { normal: (-0.803725, 0.49337, -0.332584) }, - Normal { normal: (0.683407, -0.256729, 0.683407) }, - Normal { normal: (0.683531, 0.256067, 0.683531) }, - Normal { normal: (0.0649249, 0.995776, 0.0649249) }, - Normal { normal: (-0.481398, 0.732469, -0.481398) }, - Normal { normal: (-0.614804, 0.493997, -0.614804) }, - Normal { normal: (0.369882, -0.256345, 0.893014) }, - Normal { normal: (0.369102, 0.255997, 0.893437) }, - Normal { normal: (0.0355067, 0.995843, 0.083877) }, - Normal { normal: (-0.260439, 0.73186, -0.629724) }, - Normal { normal: (-0.332584, 0.49337, -0.803725) }, - Normal { normal: (0.0, -0.255752, 0.966742) }, - Normal { normal: (0.0, 0.255443, 0.966824) }, - Normal { normal: (0.0, 0.995754, 0.092052) }, - Normal { normal: (0.0, 0.731305, -0.68205) }, - Normal { normal: (-0.0, 0.492521, -0.870301) }, - Normal { normal: (-0.369882, -0.256345, 0.893014) }, - Normal { normal: (-0.369102, 0.255996, 0.893437) }, - Normal { normal: (-0.0355068, 0.995843, 0.0838771) }, - Normal { normal: (0.260439, 0.73186, -0.629724) }, - Normal { normal: (0.332584, 0.49337, -0.803725) }, - Normal { normal: (-0.683407, -0.256729, 0.683407) }, - Normal { normal: (-0.683531, 0.256067, 0.683531) }, - Normal { normal: (-0.0649249, 0.995776, 0.064925) }, - Normal { normal: (0.481398, 0.732469, -0.481398) }, - Normal { normal: (0.614804, 0.493997, -0.614804) }, - Normal { normal: (-0.893014, -0.256345, 0.369882) }, - Normal { normal: (-0.893437, 0.255997, 0.369102) }, - Normal { normal: (-0.0838767, 0.995843, 0.0355066) }, - Normal { normal: (0.629724, 0.73186, -0.260439) }, - Normal { normal: (0.803725, 0.49337, -0.332584) }, - Normal { normal: (0.915321, 0.402725, 0.0) }, - Normal { normal: (0.941808, 0.336151, -0.0) }, - Normal { normal: (0.97869, 0.205342, 0.0) }, - Normal { normal: (0.997804, -0.0662397, 0.0) }, - Normal { normal: (0.845438, 0.403546, 0.349835) }, - Normal { normal: (0.869996, 0.336859, 0.360047) }, - Normal { normal: (0.904193, 0.205791, 0.37428) }, - Normal { normal: (0.921879, -0.0663697, 0.381752) }, - Normal { normal: (0.646802, 0.404096, 0.646802) }, - Normal { normal: (0.665655, 0.337351, 0.665655) }, - Normal { normal: (0.691923, 0.20612, 0.691923) }, - Normal { normal: (0.705542, -0.0664796, 0.705543) }, - Normal { normal: (0.349835, 0.403546, 0.845438) }, - Normal { normal: (0.360047, 0.336859, 0.869996) }, - Normal { normal: (0.37428, 0.205791, 0.904193) }, - Normal { normal: (0.381752, -0.0663697, 0.921879) }, - Normal { normal: (-0.0, 0.402725, 0.915321) }, - Normal { normal: (0.0, 0.336151, 0.941808) }, - Normal { normal: (-0.0, 0.205342, 0.97869) }, - Normal { normal: (-0.0, -0.0662397, 0.997804) }, - Normal { normal: (-0.349835, 0.403546, 0.845438) }, - Normal { normal: (-0.360047, 0.336859, 0.869996) }, - Normal { normal: (-0.37428, 0.205791, 0.904193) }, - Normal { normal: (-0.381752, -0.0663697, 0.921879) }, - Normal { normal: (-0.646802, 0.404096, 0.646802) }, - Normal { normal: (-0.665655, 0.337351, 0.665655) }, - Normal { normal: (-0.691923, 0.20612, 0.691923) }, - Normal { normal: (-0.705543, -0.0664796, 0.705543) }, - Normal { normal: (-0.845438, 0.403546, 0.349835) }, - Normal { normal: (-0.869996, 0.336859, 0.360047) }, - Normal { normal: (-0.904193, 0.205791, 0.37428) }, - Normal { normal: (-0.921879, -0.0663697, 0.381752) }, - Normal { normal: (-0.915321, 0.402725, -0.0) }, - Normal { normal: (-0.941808, 0.336151, -0.0) }, - Normal { normal: (-0.97869, 0.205342, -0.0) }, - Normal { normal: (-0.997804, -0.0662397, -0.0) }, - Normal { normal: (-0.845438, 0.403546, -0.349835) }, - Normal { normal: (-0.869996, 0.336859, -0.360047) }, - Normal { normal: (-0.904193, 0.205791, -0.37428) }, - Normal { normal: (-0.921879, -0.0663697, -0.381752) }, - Normal { normal: (-0.646802, 0.404096, -0.646802) }, - Normal { normal: (-0.665655, 0.337351, -0.665655) }, - Normal { normal: (-0.691923, 0.20612, -0.691923) }, - Normal { normal: (-0.705542, -0.0664796, -0.705543) }, - Normal { normal: (-0.349835, 0.403546, -0.845438) }, - Normal { normal: (-0.360047, 0.336859, -0.869996) }, - Normal { normal: (-0.37428, 0.205791, -0.904193) }, - Normal { normal: (-0.381752, -0.0663697, -0.921879) }, - Normal { normal: (0.0, 0.402725, -0.915321) }, - Normal { normal: (-0.0, 0.336151, -0.941808) }, - Normal { normal: (0.0, 0.205342, -0.97869) }, - Normal { normal: (0.0, -0.0662397, -0.997804) }, - Normal { normal: (0.349835, 0.403546, -0.845438) }, - Normal { normal: (0.360047, 0.336859, -0.869996) }, - Normal { normal: (0.37428, 0.205791, -0.904193) }, - Normal { normal: (0.381752, -0.0663697, -0.921879) }, - Normal { normal: (0.646802, 0.404096, -0.646802) }, - Normal { normal: (0.665655, 0.337351, -0.665655) }, - Normal { normal: (0.691923, 0.20612, -0.691923) }, - Normal { normal: (0.705543, -0.0664796, -0.705542) }, - Normal { normal: (0.845438, 0.403546, -0.349835) }, - Normal { normal: (0.869996, 0.336859, -0.360047) }, - Normal { normal: (0.904193, 0.205791, -0.37428) }, - Normal { normal: (0.921879, -0.0663697, -0.381752) }, - Normal { normal: (0.900182, -0.435513, -0.0) }, - Normal { normal: (0.729611, -0.683863, -0.0) }, - Normal { normal: (0.693951, -0.720022, -0.0) }, - Normal { normal: (0.79395, -0.607984, 0.0) }, - Normal { normal: (0.831437, -0.43618, 0.344179) }, - Normal { normal: (0.673512, -0.684665, 0.278594) }, - Normal { normal: (0.640399, -0.720924, 0.264874) }, - Normal { normal: (0.732949, -0.608996, 0.303166) }, - Normal { normal: (0.636092, -0.436777, 0.636092) }, - Normal { normal: (0.514965, -0.685289, 0.514965) }, - Normal { normal: (0.489651, -0.721446, 0.489651) }, - Normal { normal: (0.560555, -0.609554, 0.560555) }, - Normal { normal: (0.344179, -0.43618, 0.831437) }, - Normal { normal: (0.278594, -0.684665, 0.673512) }, - Normal { normal: (0.264874, -0.720924, 0.640399) }, - Normal { normal: (0.303166, -0.608996, 0.732949) }, - Normal { normal: (0.0, -0.435513, 0.900182) }, - Normal { normal: (-0.0, -0.683863, 0.729611) }, - Normal { normal: (0.0, -0.720022, 0.693951) }, - Normal { normal: (-0.0, -0.607984, 0.79395) }, - Normal { normal: (-0.344179, -0.43618, 0.831437) }, - Normal { normal: (-0.278594, -0.684665, 0.673512) }, - Normal { normal: (-0.264874, -0.720924, 0.640399) }, - Normal { normal: (-0.303166, -0.608996, 0.732949) }, - Normal { normal: (-0.636092, -0.436777, 0.636092) }, - Normal { normal: (-0.514965, -0.685289, 0.514965) }, - Normal { normal: (-0.489651, -0.721446, 0.489651) }, - Normal { normal: (-0.560555, -0.609554, 0.560555) }, - Normal { normal: (-0.831437, -0.43618, 0.344179) }, - Normal { normal: (-0.673512, -0.684665, 0.278595) }, - Normal { normal: (-0.640399, -0.720924, 0.264874) }, - Normal { normal: (-0.732949, -0.608996, 0.303166) }, - Normal { normal: (-0.900182, -0.435513, -0.0) }, - Normal { normal: (-0.729611, -0.683863, -0.0) }, - Normal { normal: (-0.693951, -0.720022, 0.0) }, - Normal { normal: (-0.79395, -0.607983, -0.0) }, - Normal { normal: (-0.831437, -0.43618, -0.344179) }, - Normal { normal: (-0.673512, -0.684665, -0.278594) }, - Normal { normal: (-0.640399, -0.720924, -0.264874) }, - Normal { normal: (-0.732949, -0.608996, -0.303166) }, - Normal { normal: (-0.636092, -0.436777, -0.636092) }, - Normal { normal: (-0.514965, -0.685289, -0.514965) }, - Normal { normal: (-0.489651, -0.721446, -0.489651) }, - Normal { normal: (-0.560555, -0.609554, -0.560555) }, - Normal { normal: (-0.344179, -0.43618, -0.831437) }, - Normal { normal: (-0.278594, -0.684665, -0.673512) }, - Normal { normal: (-0.264874, -0.720924, -0.640399) }, - Normal { normal: (-0.303166, -0.608996, -0.732949) }, - Normal { normal: (-0.0, -0.435513, -0.900182) }, - Normal { normal: (0.0, -0.683863, -0.729611) }, - Normal { normal: (-0.0, -0.720022, -0.693951) }, - Normal { normal: (0.0, -0.607984, -0.79395) }, - Normal { normal: (0.344179, -0.43618, -0.831437) }, - Normal { normal: (0.278594, -0.684665, -0.673512) }, - Normal { normal: (0.264874, -0.720924, -0.640399) }, - Normal { normal: (0.303167, -0.608996, -0.732949) }, - Normal { normal: (0.636092, -0.436777, -0.636092) }, - Normal { normal: (0.514965, -0.685289, -0.514965) }, - Normal { normal: (0.489651, -0.721446, -0.489651) }, - Normal { normal: (0.560555, -0.609554, -0.560555) }, - Normal { normal: (0.831437, -0.43618, -0.344179) }, - Normal { normal: (0.673512, -0.684665, -0.278595) }, - Normal { normal: (0.640399, -0.720924, -0.264874) }, - Normal { normal: (0.732949, -0.608996, -0.303166) }, - Normal { normal: (0.62386, -0.781536, 0.0) }, - Normal { normal: (0.177291, -0.984159, -0.0) }, - Normal { normal: (0.0492072, -0.998789, 0.0) }, - Normal { normal: (0.0, -1.0, -0.0) }, - Normal { normal: (0.576229, -0.781801, 0.238217) }, - Normal { normal: (0.163629, -0.984208, 0.0675273) }, - Normal { normal: (0.0454217, -0.998792, 0.0187357) }, - Normal { normal: (0.440416, -0.782348, 0.440416) }, - Normal { normal: (0.124903, -0.984276, 0.124903) }, - Normal { normal: (0.0346621, -0.998798, 0.0346621) }, - Normal { normal: (0.238217, -0.781801, 0.576229) }, - Normal { normal: (0.0675273, -0.984208, 0.163629) }, - Normal { normal: (0.0187357, -0.998792, 0.0454217) }, - Normal { normal: (-0.0, -0.781536, 0.62386) }, - Normal { normal: (0.0, -0.984159, 0.177291) }, - Normal { normal: (-0.0, -0.998789, 0.0492072) }, - Normal { normal: (-0.238216, -0.781801, 0.576229) }, - Normal { normal: (-0.0675273, -0.984208, 0.163629) }, - Normal { normal: (-0.0187357, -0.998792, 0.0454217) }, - Normal { normal: (-0.440416, -0.782348, 0.440416) }, - Normal { normal: (-0.124903, -0.984276, 0.124903) }, - Normal { normal: (-0.0346621, -0.998798, 0.0346621) }, - Normal { normal: (-0.576229, -0.781801, 0.238217) }, - Normal { normal: (-0.163629, -0.984208, 0.0675273) }, - Normal { normal: (-0.0454217, -0.998792, 0.0187357) }, - Normal { normal: (-0.62386, -0.781536, -0.0) }, - Normal { normal: (-0.177291, -0.984159, 0.0) }, - Normal { normal: (-0.0492072, -0.998789, -0.0) }, - Normal { normal: (-0.576229, -0.781801, -0.238217) }, - Normal { normal: (-0.163629, -0.984208, -0.0675273) }, - Normal { normal: (-0.0454217, -0.998792, -0.0187357) }, - Normal { normal: (-0.440416, -0.782348, -0.440416) }, - Normal { normal: (-0.124903, -0.984276, -0.124903) }, - Normal { normal: (-0.0346621, -0.998798, -0.0346621) }, - Normal { normal: (-0.238217, -0.781801, -0.576229) }, - Normal { normal: (-0.0675273, -0.984208, -0.163629) }, - Normal { normal: (-0.0187357, -0.998792, -0.0454217) }, - Normal { normal: (0.0, -0.781536, -0.62386) }, - Normal { normal: (-0.0, -0.984159, -0.177291) }, - Normal { normal: (0.0, -0.998789, -0.0492072) }, - Normal { normal: (0.238217, -0.781801, -0.576229) }, - Normal { normal: (0.0675273, -0.984208, -0.163629) }, - Normal { normal: (0.0187357, -0.998792, -0.0454217) }, - Normal { normal: (0.440416, -0.782348, -0.440416) }, - Normal { normal: (0.124903, -0.984276, -0.124903) }, - Normal { normal: (0.0346621, -0.998798, -0.0346621) }, - Normal { normal: (0.576229, -0.781801, -0.238217) }, - Normal { normal: (0.163629, -0.984208, -0.0675273) }, - Normal { normal: (0.0454217, -0.998792, -0.0187357) }, - Normal { normal: (0.00778619, -0.99997, -0.000215809) }, - Normal { normal: (0.0391385, -0.999233, -0.000988567) }, - Normal { normal: (0.179511, -0.983746, -0.00436856) }, - Normal { normal: (0.6123, -0.790556, -0.0104598) }, - Normal { normal: (0.986152, -0.165707, -0.00666949) }, - Normal { normal: (0.00703893, -0.812495, 0.582926) }, - Normal { normal: (0.0361273, -0.837257, 0.545614) }, - Normal { normal: (0.161845, -0.810421, 0.563048) }, - Normal { normal: (0.482365, -0.595148, 0.642746) }, - Normal { normal: (0.73872, -0.114593, 0.664199) }, - Normal { normal: (-0.00190867, 0.162121, 0.986769) }, - Normal { normal: (0.0027616, 0.0171073, 0.99985) }, - Normal { normal: (0.0105326, 0.0733989, 0.997247) }, - Normal { normal: (-0.0660406, 0.130069, 0.989303) }, - Normal { normal: (-0.0944272, 0.0165946, 0.995393) }, - Normal { normal: (-0.009203, 0.871509, 0.490293) }, - Normal { normal: (-0.0486064, 0.840609, 0.539457) }, - Normal { normal: (-0.223298, 0.802881, 0.552739) }, - Normal { normal: (-0.596365, 0.559971, 0.575135) }, - Normal { normal: (-0.803337, 0.0682361, 0.591602) }, - Normal { normal: (-0.0105609, 0.999944, 0.000103364) }, - Normal { normal: (-0.0587986, 0.99827, 0.000709759) }, - Normal { normal: (-0.28071, 0.959787, 0.00326876) }, - Normal { normal: (-0.749723, 0.661738, 0.0042684) }, - Normal { normal: (-0.997351, 0.0727144, 0.00205923) }, - Normal { normal: (-0.00879197, 0.871493, -0.49033) }, - Normal { normal: (-0.0464937, 0.841178, -0.538756) }, - Normal { normal: (-0.217909, 0.806807, -0.549161) }, - Normal { normal: (-0.597291, 0.560026, -0.574121) }, - Normal { normal: (-0.804, 0.0629127, -0.591291) }, - Normal { normal: (-0.00180555, 0.161691, -0.98684) }, - Normal { normal: (0.00203087, 0.014555, -0.999892) }, - Normal { normal: (0.00921499, 0.0600698, -0.998152) }, - Normal { normal: (-0.0593333, 0.113865, -0.991723) }, - Normal { normal: (-0.0868992, 0.0122903, -0.996141) }, - Normal { normal: (0.00641779, -0.812379, -0.583094) }, - Normal { normal: (0.0337833, -0.837512, -0.545373) }, - Normal { normal: (0.157112, -0.811947, -0.56219) }, - Normal { normal: (0.484407, -0.589365, -0.646528) }, - Normal { normal: (0.73887, -0.10132, -0.666187) }, - Normal { normal: (0.946512, 0.32265, -0.0033571) }, - Normal { normal: (0.82583, 0.56387, -0.00745213) }, - Normal { normal: (0.650011, 0.759893, -0.00693681) }, - Normal { normal: (0.532429, 0.846458, -0.00524544) }, - Normal { normal: (0.725608, 0.259351, 0.637362) }, - Normal { normal: (0.645945, 0.461988, 0.607719) }, - Normal { normal: (0.531614, 0.63666, 0.558615) }, - Normal { normal: (0.424964, 0.681717, 0.59554) }, - Normal { normal: (-0.0495616, -0.019755, 0.998576) }, - Normal { normal: (-0.0378162, -0.0356243, 0.99865) }, - Normal { normal: (-0.0379139, -0.0365122, 0.998614) }, - Normal { normal: (-0.168854, -0.297946, 0.93953) }, - Normal { normal: (-0.742342, -0.299166, 0.599523) }, - Normal { normal: (-0.619602, -0.529406, 0.579503) }, - Normal { normal: (-0.483708, -0.685761, 0.543837) }, - Normal { normal: (-0.445293, -0.794355, 0.413176) }, - Normal { normal: (-0.926513, -0.376257, 0.00199587) }, - Normal { normal: (-0.75392, -0.656952, 0.00431723) }, - Normal { normal: (-0.566224, -0.824244, 0.00346105) }, - Normal { normal: (-0.481804, -0.876277, 0.00185047) }, - Normal { normal: (-0.744675, -0.294424, -0.598977) }, - Normal { normal: (-0.621949, -0.528114, -0.578165) }, - Normal { normal: (-0.481171, -0.68834, -0.542828) }, - Normal { normal: (-0.438055, -0.797035, -0.415744) }, - Normal { normal: (-0.0443368, -0.0170558, -0.998871) }, - Normal { normal: (-0.0261761, -0.0281665, -0.99926) }, - Normal { normal: (-0.0252939, -0.0283323, -0.999278) }, - Normal { normal: (-0.157482, -0.289392, -0.944167) }, - Normal { normal: (0.728244, 0.25241, -0.637142) }, - Normal { normal: (0.647055, 0.459725, -0.608254) }, - Normal { normal: (0.522994, 0.640657, -0.562171) }, - Normal { normal: (0.409978, 0.682857, -0.604669) }, - Normal { normal: (-0.230787, 0.972982, -0.00652338) }, - Normal { normal: (-0.548936, 0.835863, -0.00151111) }, - Normal { normal: (-0.875671, 0.482807, 0.00989278) }, - Normal { normal: (-0.877554, 0.479097, 0.0190923) }, - Normal { normal: (-0.69619, 0.717439, 0.024497) }, - Normal { normal: (-0.152878, 0.687211, 0.71019) }, - Normal { normal: (-0.316721, 0.63775, 0.702113) }, - Normal { normal: (-0.601067, 0.471452, 0.64533) }, - Normal { normal: (-0.635889, 0.44609, 0.6298) }, - Normal { normal: (-0.435746, 0.601008, 0.670011) }, - Normal { normal: (0.111112, -0.0850694, 0.99016) }, - Normal { normal: (0.22331, 0.00654036, 0.974726) }, - Normal { normal: (0.190097, 0.154964, 0.969458) }, - Normal { normal: (0.00527077, 0.189482, 0.98187) }, - Normal { normal: (-0.0117518, 0.246688, 0.969024) }, - Normal { normal: (0.343906, -0.722796, 0.599412) }, - Normal { normal: (0.572489, -0.567656, 0.591627) }, - Normal { normal: (0.787436, -0.256459, 0.560512) }, - Normal { normal: (0.647097, -0.306374, 0.698141) }, - Normal { normal: (0.427528, -0.499343, 0.753576) }, - Normal { normal: (0.410926, -0.911668, 0.00128446) }, - Normal { normal: (0.67152, -0.740986, -0.000899122) }, - Normal { normal: (0.922026, -0.38706, -0.00725269) }, - Normal { normal: (0.84691, -0.531556, -0.0138542) }, - Normal { normal: (0.535925, -0.8442, -0.0105045) }, - Normal { normal: (0.341188, -0.722822, -0.600931) }, - Normal { normal: (0.578664, -0.561139, -0.591838) }, - Normal { normal: (0.784869, -0.25102, -0.566542) }, - Normal { normal: (0.642681, -0.302257, -0.70399) }, - Normal { normal: (0.418589, -0.500042, -0.758117) }, - Normal { normal: (0.115806, -0.0791394, -0.990114) }, - Normal { normal: (0.232811, 0.0125652, -0.972441) }, - Normal { normal: (0.206662, 0.153601, -0.96628) }, - Normal { normal: (0.0244996, 0.161443, -0.986578) }, - Normal { normal: (0.00338193, 0.211115, -0.977455) }, - Normal { normal: (-0.134912, 0.687491, -0.713551) }, - Normal { normal: (-0.31954, 0.633073, -0.705062) }, - Normal { normal: (-0.603902, 0.461442, -0.649903) }, - Normal { normal: (-0.631816, 0.437169, -0.640072) }, - Normal { normal: (-0.424306, 0.612706, -0.66675) }, - Normal { normal: (-0.4258, 0.904753, 0.0108049) }, - Normal { normal: (0.0220472, 0.999756, 0.00162273) }, - Normal { normal: (0.999599, 0.0258705, 0.0115556) }, - Normal { normal: (0.709585, -0.704553, 0.00967183) }, - Normal { normal: (-0.259858, 0.791936, 0.552549) }, - Normal { normal: (0.00953916, 0.99972, -0.0216718) }, - Normal { normal: (0.410156, 0.332912, -0.849083) }, - Normal { normal: (0.541523, -0.54862, -0.637) }, - Normal { normal: (0.0463104, 0.455224, 0.889172) }, - Normal { normal: (-0.0106883, 0.988794, 0.148901) }, - Normal { normal: (-0.0443756, 0.682947, -0.729118) }, - Normal { normal: (0.122825, 0.00923214, -0.992385) }, - Normal { normal: (0.481839, -0.180439, 0.85748) }, - Normal { normal: (0.455272, 0.736752, 0.499925) }, - Normal { normal: (-0.220542, 0.907193, -0.358276) }, - Normal { normal: (-0.23592, 0.657249, -0.715797) }, - Normal { normal: (0.728092, -0.685302, -0.0155853) }, - Normal { normal: (0.888739, 0.45811, -0.0166791) }, - Normal { normal: (-0.260097, 0.965582, 0.000800195) }, - Normal { normal: (-0.371612, 0.928378, -0.00441745) }, - Normal { normal: (0.480166, -0.17836, -0.858853) }, - Normal { normal: (0.488103, 0.716801, -0.497947) }, - Normal { normal: (-0.222004, 0.905399, 0.361893) }, - Normal { normal: (-0.235405, 0.66318, 0.710477) }, - Normal { normal: (0.0587203, 0.437704, -0.8972) }, - Normal { normal: (0.00132612, 0.986459, -0.164003) }, - Normal { normal: (-0.0441901, 0.681677, 0.730317) }, - Normal { normal: (0.138801, -0.0341896, 0.98973) }, - Normal { normal: (-0.25889, 0.797206, -0.54538) }, - Normal { normal: (0.0122703, 0.999739, 0.0192865) }, - Normal { normal: (0.39863, 0.35489, 0.845663) }, - Normal { normal: (0.537564, -0.5814, 0.610737) }, - Normal { normal: (-0.0, 1.0, 0.0) }, - Normal { normal: (0.82454, 0.565804, 0.0) }, - Normal { normal: (0.917701, -0.397272, 0.0) }, - Normal { normal: (0.935269, -0.353939, 0.000112842) }, - Normal { normal: (0.780712, 0.624891, 0.0) }, - Normal { normal: (0.762641, 0.565035, 0.314825) }, - Normal { normal: (0.847982, -0.397998, 0.350034) }, - Normal { normal: (0.864141, -0.355261, 0.356441) }, - Normal { normal: (0.720991, 0.625625, 0.297933) }, - Normal { normal: (0.583357, 0.565165, 0.583338) }, - Normal { normal: (0.648485, -0.398726, 0.648448) }, - Normal { normal: (0.660872, -0.355894, 0.660748) }, - Normal { normal: (0.551862, 0.62529, 0.55178) }, - Normal { normal: (0.314824, 0.565051, 0.762629) }, - Normal { normal: (0.350045, -0.397976, 0.847988) }, - Normal { normal: (0.356474, -0.3552, 0.864153) }, - Normal { normal: (0.297983, 0.625515, 0.721067) }, - Normal { normal: (-0.0, 0.565804, 0.82454) }, - Normal { normal: (-0.0, -0.397272, 0.917701) }, - Normal { normal: (-0.000112839, -0.353939, 0.935269) }, - Normal { normal: (-0.0, 0.624891, 0.780712) }, - Normal { normal: (-0.314825, 0.565035, 0.762641) }, - Normal { normal: (-0.350034, -0.397998, 0.847982) }, - Normal { normal: (-0.356441, -0.355261, 0.864141) }, - Normal { normal: (-0.297933, 0.625625, 0.720991) }, - Normal { normal: (-0.583338, 0.565165, 0.583357) }, - Normal { normal: (-0.648448, -0.398726, 0.648485) }, - Normal { normal: (-0.660748, -0.355894, 0.660872) }, - Normal { normal: (-0.55178, 0.62529, 0.551862) }, - Normal { normal: (-0.762629, 0.565051, 0.314824) }, - Normal { normal: (-0.847988, -0.397976, 0.350045) }, - Normal { normal: (-0.864153, -0.3552, 0.356474) }, - Normal { normal: (-0.721067, 0.625515, 0.297983) }, - Normal { normal: (-0.82454, 0.565804, -0.0) }, - Normal { normal: (-0.917701, -0.397272, -0.0) }, - Normal { normal: (-0.935269, -0.353939, -0.000112839) }, - Normal { normal: (-0.780712, 0.624891, -0.0) }, - Normal { normal: (-0.76264, 0.565035, -0.314825) }, - Normal { normal: (-0.847982, -0.397998, -0.350034) }, - Normal { normal: (-0.864141, -0.355261, -0.356441) }, - Normal { normal: (-0.720991, 0.625625, -0.297933) }, - Normal { normal: (-0.583357, 0.565165, -0.583338) }, - Normal { normal: (-0.648485, -0.398726, -0.648448) }, - Normal { normal: (-0.660872, -0.355894, -0.660748) }, - Normal { normal: (-0.551862, 0.62529, -0.55178) }, - Normal { normal: (-0.314824, 0.565051, -0.762629) }, - Normal { normal: (-0.350045, -0.397976, -0.847988) }, - Normal { normal: (-0.356474, -0.3552, -0.864153) }, - Normal { normal: (-0.297983, 0.625515, -0.721067) }, - Normal { normal: (0.0, 0.565804, -0.82454) }, - Normal { normal: (0.0, -0.397272, -0.917701) }, - Normal { normal: (0.000112839, -0.353939, -0.935269) }, - Normal { normal: (0.0, 0.624891, -0.780712) }, - Normal { normal: (0.314825, 0.565035, -0.762641) }, - Normal { normal: (0.350034, -0.397998, -0.847982) }, - Normal { normal: (0.356441, -0.355261, -0.864141) }, - Normal { normal: (0.297933, 0.625625, -0.720991) }, - Normal { normal: (0.583338, 0.565165, -0.583357) }, - Normal { normal: (0.648448, -0.398726, -0.648485) }, - Normal { normal: (0.660748, -0.355894, -0.660872) }, - Normal { normal: (0.55178, 0.62529, -0.551862) }, - Normal { normal: (0.762629, 0.565051, -0.314824) }, - Normal { normal: (0.847988, -0.397976, -0.350045) }, - Normal { normal: (0.864153, -0.3552, -0.356474) }, - Normal { normal: (0.721067, 0.625515, -0.297983) }, - Normal { normal: (0.236584, 0.971611, 0.0) }, - Normal { normal: (0.173084, 0.984907, -0.0) }, - Normal { normal: (0.379703, 0.925108, 0.0) }, - Normal { normal: (0.526673, 0.850068, 0.0) }, - Normal { normal: (0.217978, 0.971775, 0.0902162) }, - Normal { normal: (0.15959, 0.984977, 0.0659615) }, - Normal { normal: (0.350498, 0.925312, 0.14474) }, - Normal { normal: (0.48559, 0.850653, 0.201474) }, - Normal { normal: (0.166631, 0.971838, 0.166631) }, - Normal { normal: (0.121908, 0.985026, 0.121908) }, - Normal { normal: (0.267668, 0.925585, 0.267668) }, - Normal { normal: (0.371315, 0.851029, 0.371315) }, - Normal { normal: (0.0902162, 0.971775, 0.217978) }, - Normal { normal: (0.0659615, 0.984977, 0.15959) }, - Normal { normal: (0.14474, 0.925312, 0.350498) }, - Normal { normal: (0.201474, 0.850653, 0.48559) }, - Normal { normal: (-0.0, 0.971611, 0.236584) }, - Normal { normal: (0.0, 0.984907, 0.173084) }, - Normal { normal: (0.0, 0.925108, 0.379703) }, - Normal { normal: (0.0, 0.850068, 0.526673) }, - Normal { normal: (-0.0902162, 0.971775, 0.217978) }, - Normal { normal: (-0.0659615, 0.984977, 0.15959) }, - Normal { normal: (-0.14474, 0.925312, 0.350498) }, - Normal { normal: (-0.201474, 0.850653, 0.48559) }, - Normal { normal: (-0.166631, 0.971838, 0.166631) }, - Normal { normal: (-0.121908, 0.985026, 0.121908) }, - Normal { normal: (-0.267668, 0.925585, 0.267668) }, - Normal { normal: (-0.371315, 0.851029, 0.371315) }, - Normal { normal: (-0.217978, 0.971775, 0.0902162) }, - Normal { normal: (-0.15959, 0.984977, 0.0659615) }, - Normal { normal: (-0.350498, 0.925312, 0.14474) }, - Normal { normal: (-0.48559, 0.850653, 0.201474) }, - Normal { normal: (-0.236583, 0.971611, -0.0) }, - Normal { normal: (-0.173084, 0.984907, 0.0) }, - Normal { normal: (-0.379703, 0.925108, -0.0) }, - Normal { normal: (-0.526673, 0.850068, 0.0) }, - Normal { normal: (-0.217978, 0.971775, -0.0902162) }, - Normal { normal: (-0.15959, 0.984977, -0.0659615) }, - Normal { normal: (-0.350498, 0.925312, -0.14474) }, - Normal { normal: (-0.48559, 0.850653, -0.201474) }, - Normal { normal: (-0.166631, 0.971838, -0.166631) }, - Normal { normal: (-0.121908, 0.985026, -0.121908) }, - Normal { normal: (-0.267668, 0.925585, -0.267668) }, - Normal { normal: (-0.371315, 0.851029, -0.371315) }, - Normal { normal: (-0.0902162, 0.971775, -0.217978) }, - Normal { normal: (-0.0659615, 0.984977, -0.15959) }, - Normal { normal: (-0.14474, 0.925312, -0.350498) }, - Normal { normal: (-0.201474, 0.850653, -0.485589) }, - Normal { normal: (0.0, 0.971611, -0.236584) }, - Normal { normal: (-0.0, 0.984907, -0.173084) }, - Normal { normal: (-0.0, 0.925108, -0.379703) }, - Normal { normal: (-0.0, 0.850068, -0.526673) }, - Normal { normal: (0.0902162, 0.971775, -0.217978) }, - Normal { normal: (0.0659615, 0.984977, -0.15959) }, - Normal { normal: (0.14474, 0.925312, -0.350498) }, - Normal { normal: (0.201474, 0.850653, -0.48559) }, - Normal { normal: (0.166631, 0.971838, -0.166631) }, - Normal { normal: (0.121908, 0.985026, -0.121908) }, - Normal { normal: (0.267668, 0.925585, -0.267668) }, - Normal { normal: (0.371315, 0.851029, -0.371315) }, - Normal { normal: (0.217978, 0.971775, -0.0902162) }, - Normal { normal: (0.15959, 0.984977, -0.0659615) }, - Normal { normal: (0.350498, 0.925312, -0.14474) }, - Normal { normal: (0.48559, 0.850653, -0.201474) }, + Normal { + normal: (0.0, 0.0, 0.0), + }, // dummy vector because in the original model indices + // start at 1 + Normal { + normal: (-0.966742, -0.255752, 0.0), + }, + Normal { + normal: (-0.966824, 0.255443, 0.0), + }, + Normal { + normal: (-0.092052, 0.995754, 0.0), + }, + Normal { + normal: (0.68205, 0.731305, 0.0), + }, + Normal { + normal: (0.870301, 0.492521, -0.0), + }, + Normal { + normal: (-0.893014, -0.256345, -0.369882), + }, + Normal { + normal: (-0.893437, 0.255997, -0.369102), + }, + Normal { + normal: (-0.0838771, 0.995843, -0.0355068), + }, + Normal { + normal: (0.629724, 0.73186, 0.260439), + }, + Normal { + normal: (0.803725, 0.49337, 0.332584), + }, + Normal { + normal: (-0.683407, -0.256729, -0.683407), + }, + Normal { + normal: (-0.683531, 0.256067, -0.683531), + }, + Normal { + normal: (-0.0649249, 0.995776, -0.0649248), + }, + Normal { + normal: (0.481398, 0.732469, 0.481398), + }, + Normal { + normal: (0.614804, 0.493997, 0.614804), + }, + Normal { + normal: (-0.369882, -0.256345, -0.893014), + }, + Normal { + normal: (-0.369102, 0.255997, -0.893437), + }, + Normal { + normal: (-0.0355067, 0.995843, -0.0838772), + }, + Normal { + normal: (0.260439, 0.73186, 0.629724), + }, + Normal { + normal: (0.332584, 0.49337, 0.803725), + }, + Normal { + normal: (-0.00284834, -0.257863, -0.966177), + }, + Normal { + normal: (-0.00192311, 0.254736, -0.967009), + }, + Normal { + normal: (-0.000266114, 0.995734, -0.0922702), + }, + Normal { + normal: (0.0, 0.731295, 0.682061), + }, + Normal { + normal: (0.0, 0.492521, 0.870301), + }, + Normal { + normal: (0.379058, -0.3593, -0.852771), + }, + Normal { + normal: (0.37711, 0.149086, -0.914091), + }, + Normal { + normal: (0.0275022, 0.992081, -0.122551), + }, + Normal { + normal: (-0.26101, 0.726762, 0.635367), + }, + Normal { + normal: (-0.332485, 0.492546, 0.804271), + }, + Normal { + normal: (0.663548, -0.410791, -0.625264), + }, + Normal { + normal: (0.712664, 0.0737216, -0.697621), + }, + Normal { + normal: (0.0997268, 0.987509, -0.121984), + }, + Normal { + normal: (-0.48732, 0.723754, 0.488568), + }, + Normal { + normal: (-0.615242, 0.492602, 0.615484), + }, + Normal { + normal: (0.880028, -0.332908, -0.338709), + }, + Normal { + normal: (0.917276, 0.167113, -0.361493), + }, + Normal { + normal: (0.113584, 0.992365, -0.0480695), + }, + Normal { + normal: (-0.63415, 0.727508, 0.261889), + }, + Normal { + normal: (-0.804126, 0.492634, 0.332705), + }, + Normal { + normal: (0.96669, -0.255738, 0.0104537), + }, + Normal { + normal: (0.967442, 0.252962, 0.00810329), + }, + Normal { + normal: (0.0934365, 0.995624, 0.00128063), + }, + Normal { + normal: (-0.682167, 0.731196, -0.00034353), + }, + Normal { + normal: (-0.870322, 0.492483, -0.0), + }, + Normal { + normal: (0.893014, -0.256345, 0.369882), + }, + Normal { + normal: (0.893437, 0.255997, 0.369102), + }, + Normal { + normal: (0.0838768, 0.995843, 0.0355066), + }, + Normal { + normal: (-0.629724, 0.73186, -0.260439), + }, + Normal { + normal: (-0.803725, 0.49337, -0.332584), + }, + Normal { + normal: (0.683407, -0.256729, 0.683407), + }, + Normal { + normal: (0.683531, 0.256067, 0.683531), + }, + Normal { + normal: (0.0649249, 0.995776, 0.0649249), + }, + Normal { + normal: (-0.481398, 0.732469, -0.481398), + }, + Normal { + normal: (-0.614804, 0.493997, -0.614804), + }, + Normal { + normal: (0.369882, -0.256345, 0.893014), + }, + Normal { + normal: (0.369102, 0.255997, 0.893437), + }, + Normal { + normal: (0.0355067, 0.995843, 0.083877), + }, + Normal { + normal: (-0.260439, 0.73186, -0.629724), + }, + Normal { + normal: (-0.332584, 0.49337, -0.803725), + }, + Normal { + normal: (0.0, -0.255752, 0.966742), + }, + Normal { + normal: (0.0, 0.255443, 0.966824), + }, + Normal { + normal: (0.0, 0.995754, 0.092052), + }, + Normal { + normal: (0.0, 0.731305, -0.68205), + }, + Normal { + normal: (-0.0, 0.492521, -0.870301), + }, + Normal { + normal: (-0.369882, -0.256345, 0.893014), + }, + Normal { + normal: (-0.369102, 0.255996, 0.893437), + }, + Normal { + normal: (-0.0355068, 0.995843, 0.0838771), + }, + Normal { + normal: (0.260439, 0.73186, -0.629724), + }, + Normal { + normal: (0.332584, 0.49337, -0.803725), + }, + Normal { + normal: (-0.683407, -0.256729, 0.683407), + }, + Normal { + normal: (-0.683531, 0.256067, 0.683531), + }, + Normal { + normal: (-0.0649249, 0.995776, 0.064925), + }, + Normal { + normal: (0.481398, 0.732469, -0.481398), + }, + Normal { + normal: (0.614804, 0.493997, -0.614804), + }, + Normal { + normal: (-0.893014, -0.256345, 0.369882), + }, + Normal { + normal: (-0.893437, 0.255997, 0.369102), + }, + Normal { + normal: (-0.0838767, 0.995843, 0.0355066), + }, + Normal { + normal: (0.629724, 0.73186, -0.260439), + }, + Normal { + normal: (0.803725, 0.49337, -0.332584), + }, + Normal { + normal: (0.915321, 0.402725, 0.0), + }, + Normal { + normal: (0.941808, 0.336151, -0.0), + }, + Normal { + normal: (0.97869, 0.205342, 0.0), + }, + Normal { + normal: (0.997804, -0.0662397, 0.0), + }, + Normal { + normal: (0.845438, 0.403546, 0.349835), + }, + Normal { + normal: (0.869996, 0.336859, 0.360047), + }, + Normal { + normal: (0.904193, 0.205791, 0.37428), + }, + Normal { + normal: (0.921879, -0.0663697, 0.381752), + }, + Normal { + normal: (0.646802, 0.404096, 0.646802), + }, + Normal { + normal: (0.665655, 0.337351, 0.665655), + }, + Normal { + normal: (0.691923, 0.20612, 0.691923), + }, + Normal { + normal: (0.705542, -0.0664796, 0.705543), + }, + Normal { + normal: (0.349835, 0.403546, 0.845438), + }, + Normal { + normal: (0.360047, 0.336859, 0.869996), + }, + Normal { + normal: (0.37428, 0.205791, 0.904193), + }, + Normal { + normal: (0.381752, -0.0663697, 0.921879), + }, + Normal { + normal: (-0.0, 0.402725, 0.915321), + }, + Normal { + normal: (0.0, 0.336151, 0.941808), + }, + Normal { + normal: (-0.0, 0.205342, 0.97869), + }, + Normal { + normal: (-0.0, -0.0662397, 0.997804), + }, + Normal { + normal: (-0.349835, 0.403546, 0.845438), + }, + Normal { + normal: (-0.360047, 0.336859, 0.869996), + }, + Normal { + normal: (-0.37428, 0.205791, 0.904193), + }, + Normal { + normal: (-0.381752, -0.0663697, 0.921879), + }, + Normal { + normal: (-0.646802, 0.404096, 0.646802), + }, + Normal { + normal: (-0.665655, 0.337351, 0.665655), + }, + Normal { + normal: (-0.691923, 0.20612, 0.691923), + }, + Normal { + normal: (-0.705543, -0.0664796, 0.705543), + }, + Normal { + normal: (-0.845438, 0.403546, 0.349835), + }, + Normal { + normal: (-0.869996, 0.336859, 0.360047), + }, + Normal { + normal: (-0.904193, 0.205791, 0.37428), + }, + Normal { + normal: (-0.921879, -0.0663697, 0.381752), + }, + Normal { + normal: (-0.915321, 0.402725, -0.0), + }, + Normal { + normal: (-0.941808, 0.336151, -0.0), + }, + Normal { + normal: (-0.97869, 0.205342, -0.0), + }, + Normal { + normal: (-0.997804, -0.0662397, -0.0), + }, + Normal { + normal: (-0.845438, 0.403546, -0.349835), + }, + Normal { + normal: (-0.869996, 0.336859, -0.360047), + }, + Normal { + normal: (-0.904193, 0.205791, -0.37428), + }, + Normal { + normal: (-0.921879, -0.0663697, -0.381752), + }, + Normal { + normal: (-0.646802, 0.404096, -0.646802), + }, + Normal { + normal: (-0.665655, 0.337351, -0.665655), + }, + Normal { + normal: (-0.691923, 0.20612, -0.691923), + }, + Normal { + normal: (-0.705542, -0.0664796, -0.705543), + }, + Normal { + normal: (-0.349835, 0.403546, -0.845438), + }, + Normal { + normal: (-0.360047, 0.336859, -0.869996), + }, + Normal { + normal: (-0.37428, 0.205791, -0.904193), + }, + Normal { + normal: (-0.381752, -0.0663697, -0.921879), + }, + Normal { + normal: (0.0, 0.402725, -0.915321), + }, + Normal { + normal: (-0.0, 0.336151, -0.941808), + }, + Normal { + normal: (0.0, 0.205342, -0.97869), + }, + Normal { + normal: (0.0, -0.0662397, -0.997804), + }, + Normal { + normal: (0.349835, 0.403546, -0.845438), + }, + Normal { + normal: (0.360047, 0.336859, -0.869996), + }, + Normal { + normal: (0.37428, 0.205791, -0.904193), + }, + Normal { + normal: (0.381752, -0.0663697, -0.921879), + }, + Normal { + normal: (0.646802, 0.404096, -0.646802), + }, + Normal { + normal: (0.665655, 0.337351, -0.665655), + }, + Normal { + normal: (0.691923, 0.20612, -0.691923), + }, + Normal { + normal: (0.705543, -0.0664796, -0.705542), + }, + Normal { + normal: (0.845438, 0.403546, -0.349835), + }, + Normal { + normal: (0.869996, 0.336859, -0.360047), + }, + Normal { + normal: (0.904193, 0.205791, -0.37428), + }, + Normal { + normal: (0.921879, -0.0663697, -0.381752), + }, + Normal { + normal: (0.900182, -0.435513, -0.0), + }, + Normal { + normal: (0.729611, -0.683863, -0.0), + }, + Normal { + normal: (0.693951, -0.720022, -0.0), + }, + Normal { + normal: (0.79395, -0.607984, 0.0), + }, + Normal { + normal: (0.831437, -0.43618, 0.344179), + }, + Normal { + normal: (0.673512, -0.684665, 0.278594), + }, + Normal { + normal: (0.640399, -0.720924, 0.264874), + }, + Normal { + normal: (0.732949, -0.608996, 0.303166), + }, + Normal { + normal: (0.636092, -0.436777, 0.636092), + }, + Normal { + normal: (0.514965, -0.685289, 0.514965), + }, + Normal { + normal: (0.489651, -0.721446, 0.489651), + }, + Normal { + normal: (0.560555, -0.609554, 0.560555), + }, + Normal { + normal: (0.344179, -0.43618, 0.831437), + }, + Normal { + normal: (0.278594, -0.684665, 0.673512), + }, + Normal { + normal: (0.264874, -0.720924, 0.640399), + }, + Normal { + normal: (0.303166, -0.608996, 0.732949), + }, + Normal { + normal: (0.0, -0.435513, 0.900182), + }, + Normal { + normal: (-0.0, -0.683863, 0.729611), + }, + Normal { + normal: (0.0, -0.720022, 0.693951), + }, + Normal { + normal: (-0.0, -0.607984, 0.79395), + }, + Normal { + normal: (-0.344179, -0.43618, 0.831437), + }, + Normal { + normal: (-0.278594, -0.684665, 0.673512), + }, + Normal { + normal: (-0.264874, -0.720924, 0.640399), + }, + Normal { + normal: (-0.303166, -0.608996, 0.732949), + }, + Normal { + normal: (-0.636092, -0.436777, 0.636092), + }, + Normal { + normal: (-0.514965, -0.685289, 0.514965), + }, + Normal { + normal: (-0.489651, -0.721446, 0.489651), + }, + Normal { + normal: (-0.560555, -0.609554, 0.560555), + }, + Normal { + normal: (-0.831437, -0.43618, 0.344179), + }, + Normal { + normal: (-0.673512, -0.684665, 0.278595), + }, + Normal { + normal: (-0.640399, -0.720924, 0.264874), + }, + Normal { + normal: (-0.732949, -0.608996, 0.303166), + }, + Normal { + normal: (-0.900182, -0.435513, -0.0), + }, + Normal { + normal: (-0.729611, -0.683863, -0.0), + }, + Normal { + normal: (-0.693951, -0.720022, 0.0), + }, + Normal { + normal: (-0.79395, -0.607983, -0.0), + }, + Normal { + normal: (-0.831437, -0.43618, -0.344179), + }, + Normal { + normal: (-0.673512, -0.684665, -0.278594), + }, + Normal { + normal: (-0.640399, -0.720924, -0.264874), + }, + Normal { + normal: (-0.732949, -0.608996, -0.303166), + }, + Normal { + normal: (-0.636092, -0.436777, -0.636092), + }, + Normal { + normal: (-0.514965, -0.685289, -0.514965), + }, + Normal { + normal: (-0.489651, -0.721446, -0.489651), + }, + Normal { + normal: (-0.560555, -0.609554, -0.560555), + }, + Normal { + normal: (-0.344179, -0.43618, -0.831437), + }, + Normal { + normal: (-0.278594, -0.684665, -0.673512), + }, + Normal { + normal: (-0.264874, -0.720924, -0.640399), + }, + Normal { + normal: (-0.303166, -0.608996, -0.732949), + }, + Normal { + normal: (-0.0, -0.435513, -0.900182), + }, + Normal { + normal: (0.0, -0.683863, -0.729611), + }, + Normal { + normal: (-0.0, -0.720022, -0.693951), + }, + Normal { + normal: (0.0, -0.607984, -0.79395), + }, + Normal { + normal: (0.344179, -0.43618, -0.831437), + }, + Normal { + normal: (0.278594, -0.684665, -0.673512), + }, + Normal { + normal: (0.264874, -0.720924, -0.640399), + }, + Normal { + normal: (0.303167, -0.608996, -0.732949), + }, + Normal { + normal: (0.636092, -0.436777, -0.636092), + }, + Normal { + normal: (0.514965, -0.685289, -0.514965), + }, + Normal { + normal: (0.489651, -0.721446, -0.489651), + }, + Normal { + normal: (0.560555, -0.609554, -0.560555), + }, + Normal { + normal: (0.831437, -0.43618, -0.344179), + }, + Normal { + normal: (0.673512, -0.684665, -0.278595), + }, + Normal { + normal: (0.640399, -0.720924, -0.264874), + }, + Normal { + normal: (0.732949, -0.608996, -0.303166), + }, + Normal { + normal: (0.62386, -0.781536, 0.0), + }, + Normal { + normal: (0.177291, -0.984159, -0.0), + }, + Normal { + normal: (0.0492072, -0.998789, 0.0), + }, + Normal { + normal: (0.0, -1.0, -0.0), + }, + Normal { + normal: (0.576229, -0.781801, 0.238217), + }, + Normal { + normal: (0.163629, -0.984208, 0.0675273), + }, + Normal { + normal: (0.0454217, -0.998792, 0.0187357), + }, + Normal { + normal: (0.440416, -0.782348, 0.440416), + }, + Normal { + normal: (0.124903, -0.984276, 0.124903), + }, + Normal { + normal: (0.0346621, -0.998798, 0.0346621), + }, + Normal { + normal: (0.238217, -0.781801, 0.576229), + }, + Normal { + normal: (0.0675273, -0.984208, 0.163629), + }, + Normal { + normal: (0.0187357, -0.998792, 0.0454217), + }, + Normal { + normal: (-0.0, -0.781536, 0.62386), + }, + Normal { + normal: (0.0, -0.984159, 0.177291), + }, + Normal { + normal: (-0.0, -0.998789, 0.0492072), + }, + Normal { + normal: (-0.238216, -0.781801, 0.576229), + }, + Normal { + normal: (-0.0675273, -0.984208, 0.163629), + }, + Normal { + normal: (-0.0187357, -0.998792, 0.0454217), + }, + Normal { + normal: (-0.440416, -0.782348, 0.440416), + }, + Normal { + normal: (-0.124903, -0.984276, 0.124903), + }, + Normal { + normal: (-0.0346621, -0.998798, 0.0346621), + }, + Normal { + normal: (-0.576229, -0.781801, 0.238217), + }, + Normal { + normal: (-0.163629, -0.984208, 0.0675273), + }, + Normal { + normal: (-0.0454217, -0.998792, 0.0187357), + }, + Normal { + normal: (-0.62386, -0.781536, -0.0), + }, + Normal { + normal: (-0.177291, -0.984159, 0.0), + }, + Normal { + normal: (-0.0492072, -0.998789, -0.0), + }, + Normal { + normal: (-0.576229, -0.781801, -0.238217), + }, + Normal { + normal: (-0.163629, -0.984208, -0.0675273), + }, + Normal { + normal: (-0.0454217, -0.998792, -0.0187357), + }, + Normal { + normal: (-0.440416, -0.782348, -0.440416), + }, + Normal { + normal: (-0.124903, -0.984276, -0.124903), + }, + Normal { + normal: (-0.0346621, -0.998798, -0.0346621), + }, + Normal { + normal: (-0.238217, -0.781801, -0.576229), + }, + Normal { + normal: (-0.0675273, -0.984208, -0.163629), + }, + Normal { + normal: (-0.0187357, -0.998792, -0.0454217), + }, + Normal { + normal: (0.0, -0.781536, -0.62386), + }, + Normal { + normal: (-0.0, -0.984159, -0.177291), + }, + Normal { + normal: (0.0, -0.998789, -0.0492072), + }, + Normal { + normal: (0.238217, -0.781801, -0.576229), + }, + Normal { + normal: (0.0675273, -0.984208, -0.163629), + }, + Normal { + normal: (0.0187357, -0.998792, -0.0454217), + }, + Normal { + normal: (0.440416, -0.782348, -0.440416), + }, + Normal { + normal: (0.124903, -0.984276, -0.124903), + }, + Normal { + normal: (0.0346621, -0.998798, -0.0346621), + }, + Normal { + normal: (0.576229, -0.781801, -0.238217), + }, + Normal { + normal: (0.163629, -0.984208, -0.0675273), + }, + Normal { + normal: (0.0454217, -0.998792, -0.0187357), + }, + Normal { + normal: (0.00778619, -0.99997, -0.000215809), + }, + Normal { + normal: (0.0391385, -0.999233, -0.000988567), + }, + Normal { + normal: (0.179511, -0.983746, -0.00436856), + }, + Normal { + normal: (0.6123, -0.790556, -0.0104598), + }, + Normal { + normal: (0.986152, -0.165707, -0.00666949), + }, + Normal { + normal: (0.00703893, -0.812495, 0.582926), + }, + Normal { + normal: (0.0361273, -0.837257, 0.545614), + }, + Normal { + normal: (0.161845, -0.810421, 0.563048), + }, + Normal { + normal: (0.482365, -0.595148, 0.642746), + }, + Normal { + normal: (0.73872, -0.114593, 0.664199), + }, + Normal { + normal: (-0.00190867, 0.162121, 0.986769), + }, + Normal { + normal: (0.0027616, 0.0171073, 0.99985), + }, + Normal { + normal: (0.0105326, 0.0733989, 0.997247), + }, + Normal { + normal: (-0.0660406, 0.130069, 0.989303), + }, + Normal { + normal: (-0.0944272, 0.0165946, 0.995393), + }, + Normal { + normal: (-0.009203, 0.871509, 0.490293), + }, + Normal { + normal: (-0.0486064, 0.840609, 0.539457), + }, + Normal { + normal: (-0.223298, 0.802881, 0.552739), + }, + Normal { + normal: (-0.596365, 0.559971, 0.575135), + }, + Normal { + normal: (-0.803337, 0.0682361, 0.591602), + }, + Normal { + normal: (-0.0105609, 0.999944, 0.000103364), + }, + Normal { + normal: (-0.0587986, 0.99827, 0.000709759), + }, + Normal { + normal: (-0.28071, 0.959787, 0.00326876), + }, + Normal { + normal: (-0.749723, 0.661738, 0.0042684), + }, + Normal { + normal: (-0.997351, 0.0727144, 0.00205923), + }, + Normal { + normal: (-0.00879197, 0.871493, -0.49033), + }, + Normal { + normal: (-0.0464937, 0.841178, -0.538756), + }, + Normal { + normal: (-0.217909, 0.806807, -0.549161), + }, + Normal { + normal: (-0.597291, 0.560026, -0.574121), + }, + Normal { + normal: (-0.804, 0.0629127, -0.591291), + }, + Normal { + normal: (-0.00180555, 0.161691, -0.98684), + }, + Normal { + normal: (0.00203087, 0.014555, -0.999892), + }, + Normal { + normal: (0.00921499, 0.0600698, -0.998152), + }, + Normal { + normal: (-0.0593333, 0.113865, -0.991723), + }, + Normal { + normal: (-0.0868992, 0.0122903, -0.996141), + }, + Normal { + normal: (0.00641779, -0.812379, -0.583094), + }, + Normal { + normal: (0.0337833, -0.837512, -0.545373), + }, + Normal { + normal: (0.157112, -0.811947, -0.56219), + }, + Normal { + normal: (0.484407, -0.589365, -0.646528), + }, + Normal { + normal: (0.73887, -0.10132, -0.666187), + }, + Normal { + normal: (0.946512, 0.32265, -0.0033571), + }, + Normal { + normal: (0.82583, 0.56387, -0.00745213), + }, + Normal { + normal: (0.650011, 0.759893, -0.00693681), + }, + Normal { + normal: (0.532429, 0.846458, -0.00524544), + }, + Normal { + normal: (0.725608, 0.259351, 0.637362), + }, + Normal { + normal: (0.645945, 0.461988, 0.607719), + }, + Normal { + normal: (0.531614, 0.63666, 0.558615), + }, + Normal { + normal: (0.424964, 0.681717, 0.59554), + }, + Normal { + normal: (-0.0495616, -0.019755, 0.998576), + }, + Normal { + normal: (-0.0378162, -0.0356243, 0.99865), + }, + Normal { + normal: (-0.0379139, -0.0365122, 0.998614), + }, + Normal { + normal: (-0.168854, -0.297946, 0.93953), + }, + Normal { + normal: (-0.742342, -0.299166, 0.599523), + }, + Normal { + normal: (-0.619602, -0.529406, 0.579503), + }, + Normal { + normal: (-0.483708, -0.685761, 0.543837), + }, + Normal { + normal: (-0.445293, -0.794355, 0.413176), + }, + Normal { + normal: (-0.926513, -0.376257, 0.00199587), + }, + Normal { + normal: (-0.75392, -0.656952, 0.00431723), + }, + Normal { + normal: (-0.566224, -0.824244, 0.00346105), + }, + Normal { + normal: (-0.481804, -0.876277, 0.00185047), + }, + Normal { + normal: (-0.744675, -0.294424, -0.598977), + }, + Normal { + normal: (-0.621949, -0.528114, -0.578165), + }, + Normal { + normal: (-0.481171, -0.68834, -0.542828), + }, + Normal { + normal: (-0.438055, -0.797035, -0.415744), + }, + Normal { + normal: (-0.0443368, -0.0170558, -0.998871), + }, + Normal { + normal: (-0.0261761, -0.0281665, -0.99926), + }, + Normal { + normal: (-0.0252939, -0.0283323, -0.999278), + }, + Normal { + normal: (-0.157482, -0.289392, -0.944167), + }, + Normal { + normal: (0.728244, 0.25241, -0.637142), + }, + Normal { + normal: (0.647055, 0.459725, -0.608254), + }, + Normal { + normal: (0.522994, 0.640657, -0.562171), + }, + Normal { + normal: (0.409978, 0.682857, -0.604669), + }, + Normal { + normal: (-0.230787, 0.972982, -0.00652338), + }, + Normal { + normal: (-0.548936, 0.835863, -0.00151111), + }, + Normal { + normal: (-0.875671, 0.482807, 0.00989278), + }, + Normal { + normal: (-0.877554, 0.479097, 0.0190923), + }, + Normal { + normal: (-0.69619, 0.717439, 0.024497), + }, + Normal { + normal: (-0.152878, 0.687211, 0.71019), + }, + Normal { + normal: (-0.316721, 0.63775, 0.702113), + }, + Normal { + normal: (-0.601067, 0.471452, 0.64533), + }, + Normal { + normal: (-0.635889, 0.44609, 0.6298), + }, + Normal { + normal: (-0.435746, 0.601008, 0.670011), + }, + Normal { + normal: (0.111112, -0.0850694, 0.99016), + }, + Normal { + normal: (0.22331, 0.00654036, 0.974726), + }, + Normal { + normal: (0.190097, 0.154964, 0.969458), + }, + Normal { + normal: (0.00527077, 0.189482, 0.98187), + }, + Normal { + normal: (-0.0117518, 0.246688, 0.969024), + }, + Normal { + normal: (0.343906, -0.722796, 0.599412), + }, + Normal { + normal: (0.572489, -0.567656, 0.591627), + }, + Normal { + normal: (0.787436, -0.256459, 0.560512), + }, + Normal { + normal: (0.647097, -0.306374, 0.698141), + }, + Normal { + normal: (0.427528, -0.499343, 0.753576), + }, + Normal { + normal: (0.410926, -0.911668, 0.00128446), + }, + Normal { + normal: (0.67152, -0.740986, -0.000899122), + }, + Normal { + normal: (0.922026, -0.38706, -0.00725269), + }, + Normal { + normal: (0.84691, -0.531556, -0.0138542), + }, + Normal { + normal: (0.535925, -0.8442, -0.0105045), + }, + Normal { + normal: (0.341188, -0.722822, -0.600931), + }, + Normal { + normal: (0.578664, -0.561139, -0.591838), + }, + Normal { + normal: (0.784869, -0.25102, -0.566542), + }, + Normal { + normal: (0.642681, -0.302257, -0.70399), + }, + Normal { + normal: (0.418589, -0.500042, -0.758117), + }, + Normal { + normal: (0.115806, -0.0791394, -0.990114), + }, + Normal { + normal: (0.232811, 0.0125652, -0.972441), + }, + Normal { + normal: (0.206662, 0.153601, -0.96628), + }, + Normal { + normal: (0.0244996, 0.161443, -0.986578), + }, + Normal { + normal: (0.00338193, 0.211115, -0.977455), + }, + Normal { + normal: (-0.134912, 0.687491, -0.713551), + }, + Normal { + normal: (-0.31954, 0.633073, -0.705062), + }, + Normal { + normal: (-0.603902, 0.461442, -0.649903), + }, + Normal { + normal: (-0.631816, 0.437169, -0.640072), + }, + Normal { + normal: (-0.424306, 0.612706, -0.66675), + }, + Normal { + normal: (-0.4258, 0.904753, 0.0108049), + }, + Normal { + normal: (0.0220472, 0.999756, 0.00162273), + }, + Normal { + normal: (0.999599, 0.0258705, 0.0115556), + }, + Normal { + normal: (0.709585, -0.704553, 0.00967183), + }, + Normal { + normal: (-0.259858, 0.791936, 0.552549), + }, + Normal { + normal: (0.00953916, 0.99972, -0.0216718), + }, + Normal { + normal: (0.410156, 0.332912, -0.849083), + }, + Normal { + normal: (0.541523, -0.54862, -0.637), + }, + Normal { + normal: (0.0463104, 0.455224, 0.889172), + }, + Normal { + normal: (-0.0106883, 0.988794, 0.148901), + }, + Normal { + normal: (-0.0443756, 0.682947, -0.729118), + }, + Normal { + normal: (0.122825, 0.00923214, -0.992385), + }, + Normal { + normal: (0.481839, -0.180439, 0.85748), + }, + Normal { + normal: (0.455272, 0.736752, 0.499925), + }, + Normal { + normal: (-0.220542, 0.907193, -0.358276), + }, + Normal { + normal: (-0.23592, 0.657249, -0.715797), + }, + Normal { + normal: (0.728092, -0.685302, -0.0155853), + }, + Normal { + normal: (0.888739, 0.45811, -0.0166791), + }, + Normal { + normal: (-0.260097, 0.965582, 0.000800195), + }, + Normal { + normal: (-0.371612, 0.928378, -0.00441745), + }, + Normal { + normal: (0.480166, -0.17836, -0.858853), + }, + Normal { + normal: (0.488103, 0.716801, -0.497947), + }, + Normal { + normal: (-0.222004, 0.905399, 0.361893), + }, + Normal { + normal: (-0.235405, 0.66318, 0.710477), + }, + Normal { + normal: (0.0587203, 0.437704, -0.8972), + }, + Normal { + normal: (0.00132612, 0.986459, -0.164003), + }, + Normal { + normal: (-0.0441901, 0.681677, 0.730317), + }, + Normal { + normal: (0.138801, -0.0341896, 0.98973), + }, + Normal { + normal: (-0.25889, 0.797206, -0.54538), + }, + Normal { + normal: (0.0122703, 0.999739, 0.0192865), + }, + Normal { + normal: (0.39863, 0.35489, 0.845663), + }, + Normal { + normal: (0.537564, -0.5814, 0.610737), + }, + Normal { + normal: (-0.0, 1.0, 0.0), + }, + Normal { + normal: (0.82454, 0.565804, 0.0), + }, + Normal { + normal: (0.917701, -0.397272, 0.0), + }, + Normal { + normal: (0.935269, -0.353939, 0.000112842), + }, + Normal { + normal: (0.780712, 0.624891, 0.0), + }, + Normal { + normal: (0.762641, 0.565035, 0.314825), + }, + Normal { + normal: (0.847982, -0.397998, 0.350034), + }, + Normal { + normal: (0.864141, -0.355261, 0.356441), + }, + Normal { + normal: (0.720991, 0.625625, 0.297933), + }, + Normal { + normal: (0.583357, 0.565165, 0.583338), + }, + Normal { + normal: (0.648485, -0.398726, 0.648448), + }, + Normal { + normal: (0.660872, -0.355894, 0.660748), + }, + Normal { + normal: (0.551862, 0.62529, 0.55178), + }, + Normal { + normal: (0.314824, 0.565051, 0.762629), + }, + Normal { + normal: (0.350045, -0.397976, 0.847988), + }, + Normal { + normal: (0.356474, -0.3552, 0.864153), + }, + Normal { + normal: (0.297983, 0.625515, 0.721067), + }, + Normal { + normal: (-0.0, 0.565804, 0.82454), + }, + Normal { + normal: (-0.0, -0.397272, 0.917701), + }, + Normal { + normal: (-0.000112839, -0.353939, 0.935269), + }, + Normal { + normal: (-0.0, 0.624891, 0.780712), + }, + Normal { + normal: (-0.314825, 0.565035, 0.762641), + }, + Normal { + normal: (-0.350034, -0.397998, 0.847982), + }, + Normal { + normal: (-0.356441, -0.355261, 0.864141), + }, + Normal { + normal: (-0.297933, 0.625625, 0.720991), + }, + Normal { + normal: (-0.583338, 0.565165, 0.583357), + }, + Normal { + normal: (-0.648448, -0.398726, 0.648485), + }, + Normal { + normal: (-0.660748, -0.355894, 0.660872), + }, + Normal { + normal: (-0.55178, 0.62529, 0.551862), + }, + Normal { + normal: (-0.762629, 0.565051, 0.314824), + }, + Normal { + normal: (-0.847988, -0.397976, 0.350045), + }, + Normal { + normal: (-0.864153, -0.3552, 0.356474), + }, + Normal { + normal: (-0.721067, 0.625515, 0.297983), + }, + Normal { + normal: (-0.82454, 0.565804, -0.0), + }, + Normal { + normal: (-0.917701, -0.397272, -0.0), + }, + Normal { + normal: (-0.935269, -0.353939, -0.000112839), + }, + Normal { + normal: (-0.780712, 0.624891, -0.0), + }, + Normal { + normal: (-0.76264, 0.565035, -0.314825), + }, + Normal { + normal: (-0.847982, -0.397998, -0.350034), + }, + Normal { + normal: (-0.864141, -0.355261, -0.356441), + }, + Normal { + normal: (-0.720991, 0.625625, -0.297933), + }, + Normal { + normal: (-0.583357, 0.565165, -0.583338), + }, + Normal { + normal: (-0.648485, -0.398726, -0.648448), + }, + Normal { + normal: (-0.660872, -0.355894, -0.660748), + }, + Normal { + normal: (-0.551862, 0.62529, -0.55178), + }, + Normal { + normal: (-0.314824, 0.565051, -0.762629), + }, + Normal { + normal: (-0.350045, -0.397976, -0.847988), + }, + Normal { + normal: (-0.356474, -0.3552, -0.864153), + }, + Normal { + normal: (-0.297983, 0.625515, -0.721067), + }, + Normal { + normal: (0.0, 0.565804, -0.82454), + }, + Normal { + normal: (0.0, -0.397272, -0.917701), + }, + Normal { + normal: (0.000112839, -0.353939, -0.935269), + }, + Normal { + normal: (0.0, 0.624891, -0.780712), + }, + Normal { + normal: (0.314825, 0.565035, -0.762641), + }, + Normal { + normal: (0.350034, -0.397998, -0.847982), + }, + Normal { + normal: (0.356441, -0.355261, -0.864141), + }, + Normal { + normal: (0.297933, 0.625625, -0.720991), + }, + Normal { + normal: (0.583338, 0.565165, -0.583357), + }, + Normal { + normal: (0.648448, -0.398726, -0.648485), + }, + Normal { + normal: (0.660748, -0.355894, -0.660872), + }, + Normal { + normal: (0.55178, 0.62529, -0.551862), + }, + Normal { + normal: (0.762629, 0.565051, -0.314824), + }, + Normal { + normal: (0.847988, -0.397976, -0.350045), + }, + Normal { + normal: (0.864153, -0.3552, -0.356474), + }, + Normal { + normal: (0.721067, 0.625515, -0.297983), + }, + Normal { + normal: (0.236584, 0.971611, 0.0), + }, + Normal { + normal: (0.173084, 0.984907, -0.0), + }, + Normal { + normal: (0.379703, 0.925108, 0.0), + }, + Normal { + normal: (0.526673, 0.850068, 0.0), + }, + Normal { + normal: (0.217978, 0.971775, 0.0902162), + }, + Normal { + normal: (0.15959, 0.984977, 0.0659615), + }, + Normal { + normal: (0.350498, 0.925312, 0.14474), + }, + Normal { + normal: (0.48559, 0.850653, 0.201474), + }, + Normal { + normal: (0.166631, 0.971838, 0.166631), + }, + Normal { + normal: (0.121908, 0.985026, 0.121908), + }, + Normal { + normal: (0.267668, 0.925585, 0.267668), + }, + Normal { + normal: (0.371315, 0.851029, 0.371315), + }, + Normal { + normal: (0.0902162, 0.971775, 0.217978), + }, + Normal { + normal: (0.0659615, 0.984977, 0.15959), + }, + Normal { + normal: (0.14474, 0.925312, 0.350498), + }, + Normal { + normal: (0.201474, 0.850653, 0.48559), + }, + Normal { + normal: (-0.0, 0.971611, 0.236584), + }, + Normal { + normal: (0.0, 0.984907, 0.173084), + }, + Normal { + normal: (0.0, 0.925108, 0.379703), + }, + Normal { + normal: (0.0, 0.850068, 0.526673), + }, + Normal { + normal: (-0.0902162, 0.971775, 0.217978), + }, + Normal { + normal: (-0.0659615, 0.984977, 0.15959), + }, + Normal { + normal: (-0.14474, 0.925312, 0.350498), + }, + Normal { + normal: (-0.201474, 0.850653, 0.48559), + }, + Normal { + normal: (-0.166631, 0.971838, 0.166631), + }, + Normal { + normal: (-0.121908, 0.985026, 0.121908), + }, + Normal { + normal: (-0.267668, 0.925585, 0.267668), + }, + Normal { + normal: (-0.371315, 0.851029, 0.371315), + }, + Normal { + normal: (-0.217978, 0.971775, 0.0902162), + }, + Normal { + normal: (-0.15959, 0.984977, 0.0659615), + }, + Normal { + normal: (-0.350498, 0.925312, 0.14474), + }, + Normal { + normal: (-0.48559, 0.850653, 0.201474), + }, + Normal { + normal: (-0.236583, 0.971611, -0.0), + }, + Normal { + normal: (-0.173084, 0.984907, 0.0), + }, + Normal { + normal: (-0.379703, 0.925108, -0.0), + }, + Normal { + normal: (-0.526673, 0.850068, 0.0), + }, + Normal { + normal: (-0.217978, 0.971775, -0.0902162), + }, + Normal { + normal: (-0.15959, 0.984977, -0.0659615), + }, + Normal { + normal: (-0.350498, 0.925312, -0.14474), + }, + Normal { + normal: (-0.48559, 0.850653, -0.201474), + }, + Normal { + normal: (-0.166631, 0.971838, -0.166631), + }, + Normal { + normal: (-0.121908, 0.985026, -0.121908), + }, + Normal { + normal: (-0.267668, 0.925585, -0.267668), + }, + Normal { + normal: (-0.371315, 0.851029, -0.371315), + }, + Normal { + normal: (-0.0902162, 0.971775, -0.217978), + }, + Normal { + normal: (-0.0659615, 0.984977, -0.15959), + }, + Normal { + normal: (-0.14474, 0.925312, -0.350498), + }, + Normal { + normal: (-0.201474, 0.850653, -0.485589), + }, + Normal { + normal: (0.0, 0.971611, -0.236584), + }, + Normal { + normal: (-0.0, 0.984907, -0.173084), + }, + Normal { + normal: (-0.0, 0.925108, -0.379703), + }, + Normal { + normal: (-0.0, 0.850068, -0.526673), + }, + Normal { + normal: (0.0902162, 0.971775, -0.217978), + }, + Normal { + normal: (0.0659615, 0.984977, -0.15959), + }, + Normal { + normal: (0.14474, 0.925312, -0.350498), + }, + Normal { + normal: (0.201474, 0.850653, -0.48559), + }, + Normal { + normal: (0.166631, 0.971838, -0.166631), + }, + Normal { + normal: (0.121908, 0.985026, -0.121908), + }, + Normal { + normal: (0.267668, 0.925585, -0.267668), + }, + Normal { + normal: (0.371315, 0.851029, -0.371315), + }, + Normal { + normal: (0.217978, 0.971775, -0.0902162), + }, + Normal { + normal: (0.15959, 0.984977, -0.0659615), + }, + Normal { + normal: (0.350498, 0.925312, -0.14474), + }, + Normal { + normal: (0.48559, 0.850653, -0.201474), + }, ]; const INDICES: [u16; 3072] = [ - 7, 6, 1, - 1, 2, 7, - 8, 7, 2, - 2, 3, 8, - 9, 8, 3, - 3, 4, 9, - 10, 9, 4, - 4, 5, 10, - 12, 11, 6, - 6, 7, 12, - 13, 12, 7, - 7, 8, 13, - 14, 13, 8, - 8, 9, 14, - 15, 14, 9, - 9, 10, 15, - 17, 16, 11, - 11, 12, 17, - 18, 17, 12, - 12, 13, 18, - 19, 18, 13, - 13, 14, 19, - 20, 19, 14, - 14, 15, 20, - 22, 21, 16, - 16, 17, 22, - 23, 22, 17, - 17, 18, 23, - 24, 23, 18, - 18, 19, 24, - 25, 24, 19, - 19, 20, 25, - 27, 26, 21, - 21, 22, 27, - 28, 27, 22, - 22, 23, 28, - 29, 28, 23, - 23, 24, 29, - 30, 29, 24, - 24, 25, 30, - 32, 31, 26, - 26, 27, 32, - 33, 32, 27, - 27, 28, 33, - 34, 33, 28, - 28, 29, 34, - 35, 34, 29, - 29, 30, 35, - 37, 36, 31, - 31, 32, 37, - 38, 37, 32, - 32, 33, 38, - 39, 38, 33, - 33, 34, 39, - 40, 39, 34, - 34, 35, 40, - 42, 41, 36, - 36, 37, 42, - 43, 42, 37, - 37, 38, 43, - 44, 43, 38, - 38, 39, 44, - 45, 44, 39, - 39, 40, 45, - 47, 46, 41, - 41, 42, 47, - 48, 47, 42, - 42, 43, 48, - 49, 48, 43, - 43, 44, 49, - 50, 49, 44, - 44, 45, 50, - 52, 51, 46, - 46, 47, 52, - 53, 52, 47, - 47, 48, 53, - 54, 53, 48, - 48, 49, 54, - 55, 54, 49, - 49, 50, 55, - 57, 56, 51, - 51, 52, 57, - 58, 57, 52, - 52, 53, 58, - 59, 58, 53, - 53, 54, 59, - 60, 59, 54, - 54, 55, 60, - 62, 61, 56, - 56, 57, 62, - 63, 62, 57, - 57, 58, 63, - 64, 63, 58, - 58, 59, 64, - 65, 64, 59, - 59, 60, 65, - 67, 66, 61, - 61, 62, 67, - 68, 67, 62, - 62, 63, 68, - 69, 68, 63, - 63, 64, 69, - 70, 69, 64, - 64, 65, 70, - 72, 71, 66, - 66, 67, 72, - 73, 72, 67, - 67, 68, 73, - 74, 73, 68, - 68, 69, 74, - 75, 74, 69, - 69, 70, 75, - 77, 76, 71, - 71, 72, 77, - 78, 77, 72, - 72, 73, 78, - 79, 78, 73, - 73, 74, 79, - 80, 79, 74, - 74, 75, 80, - 2, 1, 76, - 76, 77, 2, - 3, 2, 77, - 77, 78, 3, - 4, 3, 78, - 78, 79, 4, - 5, 4, 79, - 79, 80, 5, - 85, 10, 5, - 5, 81, 85, - 86, 85, 81, - 81, 82, 86, - 87, 86, 82, - 82, 83, 87, - 88, 87, 83, - 83, 84, 88, - 89, 15, 10, - 10, 85, 89, - 90, 89, 85, - 85, 86, 90, - 91, 90, 86, - 86, 87, 91, - 92, 91, 87, - 87, 88, 92, - 93, 20, 15, - 15, 89, 93, - 94, 93, 89, - 89, 90, 94, - 95, 94, 90, - 90, 91, 95, - 96, 95, 91, - 91, 92, 96, - 97, 25, 20, - 20, 93, 97, - 98, 97, 93, - 93, 94, 98, - 99, 98, 94, - 94, 95, 99, - 100, 99, 95, - 95, 96, 100, - 101, 30, 25, - 25, 97, 101, - 102, 101, 97, - 97, 98, 102, - 103, 102, 98, - 98, 99, 103, - 104, 103, 99, - 99, 100, 104, - 105, 35, 30, - 30, 101, 105, - 106, 105, 101, - 101, 102, 106, - 107, 106, 102, - 102, 103, 107, - 108, 107, 103, - 103, 104, 108, - 109, 40, 35, - 35, 105, 109, - 110, 109, 105, - 105, 106, 110, - 111, 110, 106, - 106, 107, 111, - 112, 111, 107, - 107, 108, 112, - 113, 45, 40, - 40, 109, 113, - 114, 113, 109, - 109, 110, 114, - 115, 114, 110, - 110, 111, 115, - 116, 115, 111, - 111, 112, 116, - 117, 50, 45, - 45, 113, 117, - 118, 117, 113, - 113, 114, 118, - 119, 118, 114, - 114, 115, 119, - 120, 119, 115, - 115, 116, 120, - 121, 55, 50, - 50, 117, 121, - 122, 121, 117, - 117, 118, 122, - 123, 122, 118, - 118, 119, 123, - 124, 123, 119, - 119, 120, 124, - 125, 60, 55, - 55, 121, 125, - 126, 125, 121, - 121, 122, 126, - 127, 126, 122, - 122, 123, 127, - 128, 127, 123, - 123, 124, 128, - 129, 65, 60, - 60, 125, 129, - 130, 129, 125, - 125, 126, 130, - 131, 130, 126, - 126, 127, 131, - 132, 131, 127, - 127, 128, 132, - 133, 70, 65, - 65, 129, 133, - 134, 133, 129, - 129, 130, 134, - 135, 134, 130, - 130, 131, 135, - 136, 135, 131, - 131, 132, 136, - 137, 75, 70, - 70, 133, 137, - 138, 137, 133, - 133, 134, 138, - 139, 138, 134, - 134, 135, 139, - 140, 139, 135, - 135, 136, 140, - 141, 80, 75, - 75, 137, 141, - 142, 141, 137, - 137, 138, 142, - 143, 142, 138, - 138, 139, 143, - 144, 143, 139, - 139, 140, 144, - 81, 5, 80, - 80, 141, 81, - 82, 81, 141, - 141, 142, 82, - 83, 82, 142, - 142, 143, 83, - 84, 83, 143, - 143, 144, 84, - 149, 88, 84, - 84, 145, 149, - 150, 149, 145, - 145, 146, 150, - 151, 150, 146, - 146, 147, 151, - 152, 151, 147, - 147, 148, 152, - 153, 92, 88, - 88, 149, 153, - 154, 153, 149, - 149, 150, 154, - 155, 154, 150, - 150, 151, 155, - 156, 155, 151, - 151, 152, 156, - 157, 96, 92, - 92, 153, 157, - 158, 157, 153, - 153, 154, 158, - 159, 158, 154, - 154, 155, 159, - 160, 159, 155, - 155, 156, 160, - 161, 100, 96, - 96, 157, 161, - 162, 161, 157, - 157, 158, 162, - 163, 162, 158, - 158, 159, 163, - 164, 163, 159, - 159, 160, 164, - 165, 104, 100, - 100, 161, 165, - 166, 165, 161, - 161, 162, 166, - 167, 166, 162, - 162, 163, 167, - 168, 167, 163, - 163, 164, 168, - 169, 108, 104, - 104, 165, 169, - 170, 169, 165, - 165, 166, 170, - 171, 170, 166, - 166, 167, 171, - 172, 171, 167, - 167, 168, 172, - 173, 112, 108, - 108, 169, 173, - 174, 173, 169, - 169, 170, 174, - 175, 174, 170, - 170, 171, 175, - 176, 175, 171, - 171, 172, 176, - 177, 116, 112, - 112, 173, 177, - 178, 177, 173, - 173, 174, 178, - 179, 178, 174, - 174, 175, 179, - 180, 179, 175, - 175, 176, 180, - 181, 120, 116, - 116, 177, 181, - 182, 181, 177, - 177, 178, 182, - 183, 182, 178, - 178, 179, 183, - 184, 183, 179, - 179, 180, 184, - 185, 124, 120, - 120, 181, 185, - 186, 185, 181, - 181, 182, 186, - 187, 186, 182, - 182, 183, 187, - 188, 187, 183, - 183, 184, 188, - 189, 128, 124, - 124, 185, 189, - 190, 189, 185, - 185, 186, 190, - 191, 190, 186, - 186, 187, 191, - 192, 191, 187, - 187, 188, 192, - 193, 132, 128, - 128, 189, 193, - 194, 193, 189, - 189, 190, 194, - 195, 194, 190, - 190, 191, 195, - 196, 195, 191, - 191, 192, 196, - 197, 136, 132, - 132, 193, 197, - 198, 197, 193, - 193, 194, 198, - 199, 198, 194, - 194, 195, 199, - 200, 199, 195, - 195, 196, 200, - 201, 140, 136, - 136, 197, 201, - 202, 201, 197, - 197, 198, 202, - 203, 202, 198, - 198, 199, 203, - 204, 203, 199, - 199, 200, 204, - 205, 144, 140, - 140, 201, 205, - 206, 205, 201, - 201, 202, 206, - 207, 206, 202, - 202, 203, 207, - 208, 207, 203, - 203, 204, 208, - 145, 84, 144, - 144, 205, 145, - 146, 145, 205, - 205, 206, 146, - 147, 146, 206, - 206, 207, 147, - 148, 147, 207, - 207, 208, 148, - 213, 152, 148, - 148, 209, 213, - 214, 213, 209, - 209, 210, 214, - 215, 214, 210, - 210, 211, 215, - 212, 215, 211, - 211, 212, 212, - 216, 156, 152, - 152, 213, 216, - 217, 216, 213, - 213, 214, 217, - 218, 217, 214, - 214, 215, 218, - 212, 218, 215, - 215, 212, 212, - 219, 160, 156, - 156, 216, 219, - 220, 219, 216, - 216, 217, 220, - 221, 220, 217, - 217, 218, 221, - 212, 221, 218, - 218, 212, 212, - 222, 164, 160, - 160, 219, 222, - 223, 222, 219, - 219, 220, 223, - 224, 223, 220, - 220, 221, 224, - 212, 224, 221, - 221, 212, 212, - 225, 168, 164, - 164, 222, 225, - 226, 225, 222, - 222, 223, 226, - 227, 226, 223, - 223, 224, 227, - 212, 227, 224, - 224, 212, 212, - 228, 172, 168, - 168, 225, 228, - 229, 228, 225, - 225, 226, 229, - 230, 229, 226, - 226, 227, 230, - 212, 230, 227, - 227, 212, 212, - 231, 176, 172, - 172, 228, 231, - 232, 231, 228, - 228, 229, 232, - 233, 232, 229, - 229, 230, 233, - 212, 233, 230, - 230, 212, 212, - 234, 180, 176, - 176, 231, 234, - 235, 234, 231, - 231, 232, 235, - 236, 235, 232, - 232, 233, 236, - 212, 236, 233, - 233, 212, 212, - 237, 184, 180, - 180, 234, 237, - 238, 237, 234, - 234, 235, 238, - 239, 238, 235, - 235, 236, 239, - 212, 239, 236, - 236, 212, 212, - 240, 188, 184, - 184, 237, 240, - 241, 240, 237, - 237, 238, 241, - 242, 241, 238, - 238, 239, 242, - 212, 242, 239, - 239, 212, 212, - 243, 192, 188, - 188, 240, 243, - 244, 243, 240, - 240, 241, 244, - 245, 244, 241, - 241, 242, 245, - 212, 245, 242, - 242, 212, 212, - 246, 196, 192, - 192, 243, 246, - 247, 246, 243, - 243, 244, 247, - 248, 247, 244, - 244, 245, 248, - 212, 248, 245, - 245, 212, 212, - 249, 200, 196, - 196, 246, 249, - 250, 249, 246, - 246, 247, 250, - 251, 250, 247, - 247, 248, 251, - 212, 251, 248, - 248, 212, 212, - 252, 204, 200, - 200, 249, 252, - 253, 252, 249, - 249, 250, 253, - 254, 253, 250, - 250, 251, 254, - 212, 254, 251, - 251, 212, 212, - 255, 208, 204, - 204, 252, 255, - 256, 255, 252, - 252, 253, 256, - 257, 256, 253, - 253, 254, 257, - 212, 257, 254, - 254, 212, 212, - 209, 148, 208, - 208, 255, 209, - 210, 209, 255, - 255, 256, 210, - 211, 210, 256, - 256, 257, 211, - 212, 211, 257, - 257, 212, 212, - 264, 263, 258, - 258, 259, 264, - 265, 264, 259, - 259, 260, 265, - 266, 265, 260, - 260, 261, 266, - 267, 266, 261, - 261, 262, 267, - 269, 268, 263, - 263, 264, 269, - 270, 269, 264, - 264, 265, 270, - 271, 270, 265, - 265, 266, 271, - 272, 271, 266, - 266, 267, 272, - 274, 273, 268, - 268, 269, 274, - 275, 274, 269, - 269, 270, 275, - 276, 275, 270, - 270, 271, 276, - 277, 276, 271, - 271, 272, 277, - 279, 278, 273, - 273, 274, 279, - 280, 279, 274, - 274, 275, 280, - 281, 280, 275, - 275, 276, 281, - 282, 281, 276, - 276, 277, 282, - 284, 283, 278, - 278, 279, 284, - 285, 284, 279, - 279, 280, 285, - 286, 285, 280, - 280, 281, 286, - 287, 286, 281, - 281, 282, 287, - 289, 288, 283, - 283, 284, 289, - 290, 289, 284, - 284, 285, 290, - 291, 290, 285, - 285, 286, 291, - 292, 291, 286, - 286, 287, 292, - 294, 293, 288, - 288, 289, 294, - 295, 294, 289, - 289, 290, 295, - 296, 295, 290, - 290, 291, 296, - 297, 296, 291, - 291, 292, 297, - 259, 258, 293, - 293, 294, 259, - 260, 259, 294, - 294, 295, 260, - 261, 260, 295, - 295, 296, 261, - 262, 261, 296, - 296, 297, 262, - 302, 267, 262, - 262, 298, 302, - 303, 302, 298, - 298, 299, 303, - 304, 303, 299, - 299, 300, 304, - 305, 304, 300, - 300, 301, 305, - 306, 272, 267, - 267, 302, 306, - 307, 306, 302, - 302, 303, 307, - 308, 307, 303, - 303, 304, 308, - 309, 308, 304, - 304, 305, 309, - 310, 277, 272, - 272, 306, 310, - 311, 310, 306, - 306, 307, 311, - 312, 311, 307, - 307, 308, 312, - 313, 312, 308, - 308, 309, 313, - 314, 282, 277, - 277, 310, 314, - 315, 314, 310, - 310, 311, 315, - 316, 315, 311, - 311, 312, 316, - 317, 316, 312, - 312, 313, 317, - 318, 287, 282, - 282, 314, 318, - 319, 318, 314, - 314, 315, 319, - 320, 319, 315, - 315, 316, 320, - 321, 320, 316, - 316, 317, 321, - 322, 292, 287, - 287, 318, 322, - 323, 322, 318, - 318, 319, 323, - 324, 323, 319, - 319, 320, 324, - 325, 324, 320, - 320, 321, 325, - 326, 297, 292, - 292, 322, 326, - 327, 326, 322, - 322, 323, 327, - 328, 327, 323, - 323, 324, 328, - 329, 328, 324, - 324, 325, 329, - 298, 262, 297, - 297, 326, 298, - 299, 298, 326, - 326, 327, 299, - 300, 299, 327, - 327, 328, 300, - 301, 300, 328, - 328, 329, 301, - 336, 335, 330, - 330, 331, 336, - 337, 336, 331, - 331, 332, 337, - 338, 337, 332, - 332, 333, 338, - 339, 338, 333, - 333, 334, 339, - 341, 340, 335, - 335, 336, 341, - 342, 341, 336, - 336, 337, 342, - 343, 342, 337, - 337, 338, 343, - 344, 343, 338, - 338, 339, 344, - 346, 345, 340, - 340, 341, 346, - 347, 346, 341, - 341, 342, 347, - 348, 347, 342, - 342, 343, 348, - 349, 348, 343, - 343, 344, 349, - 351, 350, 345, - 345, 346, 351, - 352, 351, 346, - 346, 347, 352, - 353, 352, 347, - 347, 348, 353, - 354, 353, 348, - 348, 349, 354, - 356, 355, 350, - 350, 351, 356, - 357, 356, 351, - 351, 352, 357, - 358, 357, 352, - 352, 353, 358, - 359, 358, 353, - 353, 354, 359, - 361, 360, 355, - 355, 356, 361, - 362, 361, 356, - 356, 357, 362, - 363, 362, 357, - 357, 358, 363, - 364, 363, 358, - 358, 359, 364, - 366, 365, 360, - 360, 361, 366, - 367, 366, 361, - 361, 362, 367, - 368, 367, 362, - 362, 363, 368, - 369, 368, 363, - 363, 364, 369, - 331, 330, 365, - 365, 366, 331, - 332, 331, 366, - 366, 367, 332, - 333, 332, 367, - 367, 368, 333, - 334, 333, 368, - 368, 369, 334, - 374, 339, 334, - 334, 370, 374, - 375, 374, 370, - 370, 371, 375, - 376, 375, 371, - 371, 372, 376, - 377, 376, 372, - 372, 373, 377, - 378, 344, 339, - 339, 374, 378, - 379, 378, 374, - 374, 375, 379, - 380, 379, 375, - 375, 376, 380, - 381, 380, 376, - 376, 377, 381, - 382, 349, 344, - 344, 378, 382, - 383, 382, 378, - 378, 379, 383, - 384, 383, 379, - 379, 380, 384, - 385, 384, 380, - 380, 381, 385, - 386, 354, 349, - 349, 382, 386, - 387, 386, 382, - 382, 383, 387, - 388, 387, 383, - 383, 384, 388, - 389, 388, 384, - 384, 385, 389, - 390, 359, 354, - 354, 386, 390, - 391, 390, 386, - 386, 387, 391, - 392, 391, 387, - 387, 388, 392, - 393, 392, 388, - 388, 389, 393, - 394, 364, 359, - 359, 390, 394, - 395, 394, 390, - 390, 391, 395, - 396, 395, 391, - 391, 392, 396, - 397, 396, 392, - 392, 393, 397, - 398, 369, 364, - 364, 394, 398, - 399, 398, 394, - 394, 395, 399, - 400, 399, 395, - 395, 396, 400, - 401, 400, 396, - 396, 397, 401, - 370, 334, 369, - 369, 398, 370, - 371, 370, 398, - 398, 399, 371, - 372, 371, 399, - 399, 400, 372, - 373, 372, 400, - 400, 401, 373, - 407, 402, 402, - 402, 403, 407, - 408, 407, 403, - 403, 404, 408, - 409, 408, 404, - 404, 405, 409, - 410, 409, 405, - 405, 406, 410, - 411, 402, 402, - 402, 407, 411, - 412, 411, 407, - 407, 408, 412, - 413, 412, 408, - 408, 409, 413, - 414, 413, 409, - 409, 410, 414, - 415, 402, 402, - 402, 411, 415, - 416, 415, 411, - 411, 412, 416, - 417, 416, 412, - 412, 413, 417, - 418, 417, 413, - 413, 414, 418, - 419, 402, 402, - 402, 415, 419, - 420, 419, 415, - 415, 416, 420, - 421, 420, 416, - 416, 417, 421, - 422, 421, 417, - 417, 418, 422, - 423, 402, 402, - 402, 419, 423, - 424, 423, 419, - 419, 420, 424, - 425, 424, 420, - 420, 421, 425, - 426, 425, 421, - 421, 422, 426, - 427, 402, 402, - 402, 423, 427, - 428, 427, 423, - 423, 424, 428, - 429, 428, 424, - 424, 425, 429, - 430, 429, 425, - 425, 426, 430, - 431, 402, 402, - 402, 427, 431, - 432, 431, 427, - 427, 428, 432, - 433, 432, 428, - 428, 429, 433, - 434, 433, 429, - 429, 430, 434, - 435, 402, 402, - 402, 431, 435, - 436, 435, 431, - 431, 432, 436, - 437, 436, 432, - 432, 433, 437, - 438, 437, 433, - 433, 434, 438, - 439, 402, 402, - 402, 435, 439, - 440, 439, 435, - 435, 436, 440, - 441, 440, 436, - 436, 437, 441, - 442, 441, 437, - 437, 438, 442, - 443, 402, 402, - 402, 439, 443, - 444, 443, 439, - 439, 440, 444, - 445, 444, 440, - 440, 441, 445, - 446, 445, 441, - 441, 442, 446, - 447, 402, 402, - 402, 443, 447, - 448, 447, 443, - 443, 444, 448, - 449, 448, 444, - 444, 445, 449, - 450, 449, 445, - 445, 446, 450, - 451, 402, 402, - 402, 447, 451, - 452, 451, 447, - 447, 448, 452, - 453, 452, 448, - 448, 449, 453, - 454, 453, 449, - 449, 450, 454, - 455, 402, 402, - 402, 451, 455, - 456, 455, 451, - 451, 452, 456, - 457, 456, 452, - 452, 453, 457, - 458, 457, 453, - 453, 454, 458, - 459, 402, 402, - 402, 455, 459, - 460, 459, 455, - 455, 456, 460, - 461, 460, 456, - 456, 457, 461, - 462, 461, 457, - 457, 458, 462, - 463, 402, 402, - 402, 459, 463, - 464, 463, 459, - 459, 460, 464, - 465, 464, 460, - 460, 461, 465, - 466, 465, 461, - 461, 462, 466, - 403, 402, 402, - 402, 463, 403, - 404, 403, 463, - 463, 464, 404, - 405, 404, 464, - 464, 465, 405, - 406, 405, 465, - 465, 466, 406, - 471, 410, 406, - 406, 467, 471, - 472, 471, 467, - 467, 468, 472, - 473, 472, 468, - 468, 469, 473, - 474, 473, 469, - 469, 470, 474, - 475, 414, 410, - 410, 471, 475, - 476, 475, 471, - 471, 472, 476, - 477, 476, 472, - 472, 473, 477, - 478, 477, 473, - 473, 474, 478, - 479, 418, 414, - 414, 475, 479, - 480, 479, 475, - 475, 476, 480, - 481, 480, 476, - 476, 477, 481, - 482, 481, 477, - 477, 478, 482, - 483, 422, 418, - 418, 479, 483, - 484, 483, 479, - 479, 480, 484, - 485, 484, 480, - 480, 481, 485, - 486, 485, 481, - 481, 482, 486, - 487, 426, 422, - 422, 483, 487, - 488, 487, 483, - 483, 484, 488, - 489, 488, 484, - 484, 485, 489, - 490, 489, 485, - 485, 486, 490, - 491, 430, 426, - 426, 487, 491, - 492, 491, 487, - 487, 488, 492, - 493, 492, 488, - 488, 489, 493, - 494, 493, 489, - 489, 490, 494, - 495, 434, 430, - 430, 491, 495, - 496, 495, 491, - 491, 492, 496, - 497, 496, 492, - 492, 493, 497, - 498, 497, 493, - 493, 494, 498, - 499, 438, 434, - 434, 495, 499, - 500, 499, 495, - 495, 496, 500, - 501, 500, 496, - 496, 497, 501, - 502, 501, 497, - 497, 498, 502, - 503, 442, 438, - 438, 499, 503, - 504, 503, 499, - 499, 500, 504, - 505, 504, 500, - 500, 501, 505, - 506, 505, 501, - 501, 502, 506, - 507, 446, 442, - 442, 503, 507, - 508, 507, 503, - 503, 504, 508, - 509, 508, 504, - 504, 505, 509, - 510, 509, 505, - 505, 506, 510, - 511, 450, 446, - 446, 507, 511, - 512, 511, 507, - 507, 508, 512, - 513, 512, 508, - 508, 509, 513, - 514, 513, 509, - 509, 510, 514, - 515, 454, 450, - 450, 511, 515, - 516, 515, 511, - 511, 512, 516, - 517, 516, 512, - 512, 513, 517, - 518, 517, 513, - 513, 514, 518, - 519, 458, 454, - 454, 515, 519, - 520, 519, 515, - 515, 516, 520, - 521, 520, 516, - 516, 517, 521, - 522, 521, 517, - 517, 518, 522, - 523, 462, 458, - 458, 519, 523, - 524, 523, 519, - 519, 520, 524, - 525, 524, 520, - 520, 521, 525, - 526, 525, 521, - 521, 522, 526, - 527, 466, 462, - 462, 523, 527, - 528, 527, 523, - 523, 524, 528, - 529, 528, 524, - 524, 525, 529, - 530, 529, 525, - 525, 526, 530, - 467, 406, 466, - 466, 527, 467, - 468, 467, 527, - 527, 528, 468, - 469, 468, 528, - 528, 529, 469, - 470, 469, 529, - 529, 530, 470u16, + 7, 6, 1, 1, 2, 7, 8, 7, 2, 2, 3, 8, 9, 8, 3, 3, 4, 9, 10, 9, 4, 4, 5, 10, 12, 11, 6, 6, 7, 12, + 13, 12, 7, 7, 8, 13, 14, 13, 8, 8, 9, 14, 15, 14, 9, 9, 10, 15, 17, 16, 11, 11, 12, 17, 18, 17, + 12, 12, 13, 18, 19, 18, 13, 13, 14, 19, 20, 19, 14, 14, 15, 20, 22, 21, 16, 16, 17, 22, 23, 22, + 17, 17, 18, 23, 24, 23, 18, 18, 19, 24, 25, 24, 19, 19, 20, 25, 27, 26, 21, 21, 22, 27, 28, 27, + 22, 22, 23, 28, 29, 28, 23, 23, 24, 29, 30, 29, 24, 24, 25, 30, 32, 31, 26, 26, 27, 32, 33, 32, + 27, 27, 28, 33, 34, 33, 28, 28, 29, 34, 35, 34, 29, 29, 30, 35, 37, 36, 31, 31, 32, 37, 38, 37, + 32, 32, 33, 38, 39, 38, 33, 33, 34, 39, 40, 39, 34, 34, 35, 40, 42, 41, 36, 36, 37, 42, 43, 42, + 37, 37, 38, 43, 44, 43, 38, 38, 39, 44, 45, 44, 39, 39, 40, 45, 47, 46, 41, 41, 42, 47, 48, 47, + 42, 42, 43, 48, 49, 48, 43, 43, 44, 49, 50, 49, 44, 44, 45, 50, 52, 51, 46, 46, 47, 52, 53, 52, + 47, 47, 48, 53, 54, 53, 48, 48, 49, 54, 55, 54, 49, 49, 50, 55, 57, 56, 51, 51, 52, 57, 58, 57, + 52, 52, 53, 58, 59, 58, 53, 53, 54, 59, 60, 59, 54, 54, 55, 60, 62, 61, 56, 56, 57, 62, 63, 62, + 57, 57, 58, 63, 64, 63, 58, 58, 59, 64, 65, 64, 59, 59, 60, 65, 67, 66, 61, 61, 62, 67, 68, 67, + 62, 62, 63, 68, 69, 68, 63, 63, 64, 69, 70, 69, 64, 64, 65, 70, 72, 71, 66, 66, 67, 72, 73, 72, + 67, 67, 68, 73, 74, 73, 68, 68, 69, 74, 75, 74, 69, 69, 70, 75, 77, 76, 71, 71, 72, 77, 78, 77, + 72, 72, 73, 78, 79, 78, 73, 73, 74, 79, 80, 79, 74, 74, 75, 80, 2, 1, 76, 76, 77, 2, 3, 2, 77, + 77, 78, 3, 4, 3, 78, 78, 79, 4, 5, 4, 79, 79, 80, 5, 85, 10, 5, 5, 81, 85, 86, 85, 81, 81, 82, + 86, 87, 86, 82, 82, 83, 87, 88, 87, 83, 83, 84, 88, 89, 15, 10, 10, 85, 89, 90, 89, 85, 85, 86, + 90, 91, 90, 86, 86, 87, 91, 92, 91, 87, 87, 88, 92, 93, 20, 15, 15, 89, 93, 94, 93, 89, 89, 90, + 94, 95, 94, 90, 90, 91, 95, 96, 95, 91, 91, 92, 96, 97, 25, 20, 20, 93, 97, 98, 97, 93, 93, 94, + 98, 99, 98, 94, 94, 95, 99, 100, 99, 95, 95, 96, 100, 101, 30, 25, 25, 97, 101, 102, 101, 97, + 97, 98, 102, 103, 102, 98, 98, 99, 103, 104, 103, 99, 99, 100, 104, 105, 35, 30, 30, 101, 105, + 106, 105, 101, 101, 102, 106, 107, 106, 102, 102, 103, 107, 108, 107, 103, 103, 104, 108, 109, + 40, 35, 35, 105, 109, 110, 109, 105, 105, 106, 110, 111, 110, 106, 106, 107, 111, 112, 111, + 107, 107, 108, 112, 113, 45, 40, 40, 109, 113, 114, 113, 109, 109, 110, 114, 115, 114, 110, + 110, 111, 115, 116, 115, 111, 111, 112, 116, 117, 50, 45, 45, 113, 117, 118, 117, 113, 113, + 114, 118, 119, 118, 114, 114, 115, 119, 120, 119, 115, 115, 116, 120, 121, 55, 50, 50, 117, + 121, 122, 121, 117, 117, 118, 122, 123, 122, 118, 118, 119, 123, 124, 123, 119, 119, 120, 124, + 125, 60, 55, 55, 121, 125, 126, 125, 121, 121, 122, 126, 127, 126, 122, 122, 123, 127, 128, + 127, 123, 123, 124, 128, 129, 65, 60, 60, 125, 129, 130, 129, 125, 125, 126, 130, 131, 130, + 126, 126, 127, 131, 132, 131, 127, 127, 128, 132, 133, 70, 65, 65, 129, 133, 134, 133, 129, + 129, 130, 134, 135, 134, 130, 130, 131, 135, 136, 135, 131, 131, 132, 136, 137, 75, 70, 70, + 133, 137, 138, 137, 133, 133, 134, 138, 139, 138, 134, 134, 135, 139, 140, 139, 135, 135, 136, + 140, 141, 80, 75, 75, 137, 141, 142, 141, 137, 137, 138, 142, 143, 142, 138, 138, 139, 143, + 144, 143, 139, 139, 140, 144, 81, 5, 80, 80, 141, 81, 82, 81, 141, 141, 142, 82, 83, 82, 142, + 142, 143, 83, 84, 83, 143, 143, 144, 84, 149, 88, 84, 84, 145, 149, 150, 149, 145, 145, 146, + 150, 151, 150, 146, 146, 147, 151, 152, 151, 147, 147, 148, 152, 153, 92, 88, 88, 149, 153, + 154, 153, 149, 149, 150, 154, 155, 154, 150, 150, 151, 155, 156, 155, 151, 151, 152, 156, 157, + 96, 92, 92, 153, 157, 158, 157, 153, 153, 154, 158, 159, 158, 154, 154, 155, 159, 160, 159, + 155, 155, 156, 160, 161, 100, 96, 96, 157, 161, 162, 161, 157, 157, 158, 162, 163, 162, 158, + 158, 159, 163, 164, 163, 159, 159, 160, 164, 165, 104, 100, 100, 161, 165, 166, 165, 161, 161, + 162, 166, 167, 166, 162, 162, 163, 167, 168, 167, 163, 163, 164, 168, 169, 108, 104, 104, 165, + 169, 170, 169, 165, 165, 166, 170, 171, 170, 166, 166, 167, 171, 172, 171, 167, 167, 168, 172, + 173, 112, 108, 108, 169, 173, 174, 173, 169, 169, 170, 174, 175, 174, 170, 170, 171, 175, 176, + 175, 171, 171, 172, 176, 177, 116, 112, 112, 173, 177, 178, 177, 173, 173, 174, 178, 179, 178, + 174, 174, 175, 179, 180, 179, 175, 175, 176, 180, 181, 120, 116, 116, 177, 181, 182, 181, 177, + 177, 178, 182, 183, 182, 178, 178, 179, 183, 184, 183, 179, 179, 180, 184, 185, 124, 120, 120, + 181, 185, 186, 185, 181, 181, 182, 186, 187, 186, 182, 182, 183, 187, 188, 187, 183, 183, 184, + 188, 189, 128, 124, 124, 185, 189, 190, 189, 185, 185, 186, 190, 191, 190, 186, 186, 187, 191, + 192, 191, 187, 187, 188, 192, 193, 132, 128, 128, 189, 193, 194, 193, 189, 189, 190, 194, 195, + 194, 190, 190, 191, 195, 196, 195, 191, 191, 192, 196, 197, 136, 132, 132, 193, 197, 198, 197, + 193, 193, 194, 198, 199, 198, 194, 194, 195, 199, 200, 199, 195, 195, 196, 200, 201, 140, 136, + 136, 197, 201, 202, 201, 197, 197, 198, 202, 203, 202, 198, 198, 199, 203, 204, 203, 199, 199, + 200, 204, 205, 144, 140, 140, 201, 205, 206, 205, 201, 201, 202, 206, 207, 206, 202, 202, 203, + 207, 208, 207, 203, 203, 204, 208, 145, 84, 144, 144, 205, 145, 146, 145, 205, 205, 206, 146, + 147, 146, 206, 206, 207, 147, 148, 147, 207, 207, 208, 148, 213, 152, 148, 148, 209, 213, 214, + 213, 209, 209, 210, 214, 215, 214, 210, 210, 211, 215, 212, 215, 211, 211, 212, 212, 216, 156, + 152, 152, 213, 216, 217, 216, 213, 213, 214, 217, 218, 217, 214, 214, 215, 218, 212, 218, 215, + 215, 212, 212, 219, 160, 156, 156, 216, 219, 220, 219, 216, 216, 217, 220, 221, 220, 217, 217, + 218, 221, 212, 221, 218, 218, 212, 212, 222, 164, 160, 160, 219, 222, 223, 222, 219, 219, 220, + 223, 224, 223, 220, 220, 221, 224, 212, 224, 221, 221, 212, 212, 225, 168, 164, 164, 222, 225, + 226, 225, 222, 222, 223, 226, 227, 226, 223, 223, 224, 227, 212, 227, 224, 224, 212, 212, 228, + 172, 168, 168, 225, 228, 229, 228, 225, 225, 226, 229, 230, 229, 226, 226, 227, 230, 212, 230, + 227, 227, 212, 212, 231, 176, 172, 172, 228, 231, 232, 231, 228, 228, 229, 232, 233, 232, 229, + 229, 230, 233, 212, 233, 230, 230, 212, 212, 234, 180, 176, 176, 231, 234, 235, 234, 231, 231, + 232, 235, 236, 235, 232, 232, 233, 236, 212, 236, 233, 233, 212, 212, 237, 184, 180, 180, 234, + 237, 238, 237, 234, 234, 235, 238, 239, 238, 235, 235, 236, 239, 212, 239, 236, 236, 212, 212, + 240, 188, 184, 184, 237, 240, 241, 240, 237, 237, 238, 241, 242, 241, 238, 238, 239, 242, 212, + 242, 239, 239, 212, 212, 243, 192, 188, 188, 240, 243, 244, 243, 240, 240, 241, 244, 245, 244, + 241, 241, 242, 245, 212, 245, 242, 242, 212, 212, 246, 196, 192, 192, 243, 246, 247, 246, 243, + 243, 244, 247, 248, 247, 244, 244, 245, 248, 212, 248, 245, 245, 212, 212, 249, 200, 196, 196, + 246, 249, 250, 249, 246, 246, 247, 250, 251, 250, 247, 247, 248, 251, 212, 251, 248, 248, 212, + 212, 252, 204, 200, 200, 249, 252, 253, 252, 249, 249, 250, 253, 254, 253, 250, 250, 251, 254, + 212, 254, 251, 251, 212, 212, 255, 208, 204, 204, 252, 255, 256, 255, 252, 252, 253, 256, 257, + 256, 253, 253, 254, 257, 212, 257, 254, 254, 212, 212, 209, 148, 208, 208, 255, 209, 210, 209, + 255, 255, 256, 210, 211, 210, 256, 256, 257, 211, 212, 211, 257, 257, 212, 212, 264, 263, 258, + 258, 259, 264, 265, 264, 259, 259, 260, 265, 266, 265, 260, 260, 261, 266, 267, 266, 261, 261, + 262, 267, 269, 268, 263, 263, 264, 269, 270, 269, 264, 264, 265, 270, 271, 270, 265, 265, 266, + 271, 272, 271, 266, 266, 267, 272, 274, 273, 268, 268, 269, 274, 275, 274, 269, 269, 270, 275, + 276, 275, 270, 270, 271, 276, 277, 276, 271, 271, 272, 277, 279, 278, 273, 273, 274, 279, 280, + 279, 274, 274, 275, 280, 281, 280, 275, 275, 276, 281, 282, 281, 276, 276, 277, 282, 284, 283, + 278, 278, 279, 284, 285, 284, 279, 279, 280, 285, 286, 285, 280, 280, 281, 286, 287, 286, 281, + 281, 282, 287, 289, 288, 283, 283, 284, 289, 290, 289, 284, 284, 285, 290, 291, 290, 285, 285, + 286, 291, 292, 291, 286, 286, 287, 292, 294, 293, 288, 288, 289, 294, 295, 294, 289, 289, 290, + 295, 296, 295, 290, 290, 291, 296, 297, 296, 291, 291, 292, 297, 259, 258, 293, 293, 294, 259, + 260, 259, 294, 294, 295, 260, 261, 260, 295, 295, 296, 261, 262, 261, 296, 296, 297, 262, 302, + 267, 262, 262, 298, 302, 303, 302, 298, 298, 299, 303, 304, 303, 299, 299, 300, 304, 305, 304, + 300, 300, 301, 305, 306, 272, 267, 267, 302, 306, 307, 306, 302, 302, 303, 307, 308, 307, 303, + 303, 304, 308, 309, 308, 304, 304, 305, 309, 310, 277, 272, 272, 306, 310, 311, 310, 306, 306, + 307, 311, 312, 311, 307, 307, 308, 312, 313, 312, 308, 308, 309, 313, 314, 282, 277, 277, 310, + 314, 315, 314, 310, 310, 311, 315, 316, 315, 311, 311, 312, 316, 317, 316, 312, 312, 313, 317, + 318, 287, 282, 282, 314, 318, 319, 318, 314, 314, 315, 319, 320, 319, 315, 315, 316, 320, 321, + 320, 316, 316, 317, 321, 322, 292, 287, 287, 318, 322, 323, 322, 318, 318, 319, 323, 324, 323, + 319, 319, 320, 324, 325, 324, 320, 320, 321, 325, 326, 297, 292, 292, 322, 326, 327, 326, 322, + 322, 323, 327, 328, 327, 323, 323, 324, 328, 329, 328, 324, 324, 325, 329, 298, 262, 297, 297, + 326, 298, 299, 298, 326, 326, 327, 299, 300, 299, 327, 327, 328, 300, 301, 300, 328, 328, 329, + 301, 336, 335, 330, 330, 331, 336, 337, 336, 331, 331, 332, 337, 338, 337, 332, 332, 333, 338, + 339, 338, 333, 333, 334, 339, 341, 340, 335, 335, 336, 341, 342, 341, 336, 336, 337, 342, 343, + 342, 337, 337, 338, 343, 344, 343, 338, 338, 339, 344, 346, 345, 340, 340, 341, 346, 347, 346, + 341, 341, 342, 347, 348, 347, 342, 342, 343, 348, 349, 348, 343, 343, 344, 349, 351, 350, 345, + 345, 346, 351, 352, 351, 346, 346, 347, 352, 353, 352, 347, 347, 348, 353, 354, 353, 348, 348, + 349, 354, 356, 355, 350, 350, 351, 356, 357, 356, 351, 351, 352, 357, 358, 357, 352, 352, 353, + 358, 359, 358, 353, 353, 354, 359, 361, 360, 355, 355, 356, 361, 362, 361, 356, 356, 357, 362, + 363, 362, 357, 357, 358, 363, 364, 363, 358, 358, 359, 364, 366, 365, 360, 360, 361, 366, 367, + 366, 361, 361, 362, 367, 368, 367, 362, 362, 363, 368, 369, 368, 363, 363, 364, 369, 331, 330, + 365, 365, 366, 331, 332, 331, 366, 366, 367, 332, 333, 332, 367, 367, 368, 333, 334, 333, 368, + 368, 369, 334, 374, 339, 334, 334, 370, 374, 375, 374, 370, 370, 371, 375, 376, 375, 371, 371, + 372, 376, 377, 376, 372, 372, 373, 377, 378, 344, 339, 339, 374, 378, 379, 378, 374, 374, 375, + 379, 380, 379, 375, 375, 376, 380, 381, 380, 376, 376, 377, 381, 382, 349, 344, 344, 378, 382, + 383, 382, 378, 378, 379, 383, 384, 383, 379, 379, 380, 384, 385, 384, 380, 380, 381, 385, 386, + 354, 349, 349, 382, 386, 387, 386, 382, 382, 383, 387, 388, 387, 383, 383, 384, 388, 389, 388, + 384, 384, 385, 389, 390, 359, 354, 354, 386, 390, 391, 390, 386, 386, 387, 391, 392, 391, 387, + 387, 388, 392, 393, 392, 388, 388, 389, 393, 394, 364, 359, 359, 390, 394, 395, 394, 390, 390, + 391, 395, 396, 395, 391, 391, 392, 396, 397, 396, 392, 392, 393, 397, 398, 369, 364, 364, 394, + 398, 399, 398, 394, 394, 395, 399, 400, 399, 395, 395, 396, 400, 401, 400, 396, 396, 397, 401, + 370, 334, 369, 369, 398, 370, 371, 370, 398, 398, 399, 371, 372, 371, 399, 399, 400, 372, 373, + 372, 400, 400, 401, 373, 407, 402, 402, 402, 403, 407, 408, 407, 403, 403, 404, 408, 409, 408, + 404, 404, 405, 409, 410, 409, 405, 405, 406, 410, 411, 402, 402, 402, 407, 411, 412, 411, 407, + 407, 408, 412, 413, 412, 408, 408, 409, 413, 414, 413, 409, 409, 410, 414, 415, 402, 402, 402, + 411, 415, 416, 415, 411, 411, 412, 416, 417, 416, 412, 412, 413, 417, 418, 417, 413, 413, 414, + 418, 419, 402, 402, 402, 415, 419, 420, 419, 415, 415, 416, 420, 421, 420, 416, 416, 417, 421, + 422, 421, 417, 417, 418, 422, 423, 402, 402, 402, 419, 423, 424, 423, 419, 419, 420, 424, 425, + 424, 420, 420, 421, 425, 426, 425, 421, 421, 422, 426, 427, 402, 402, 402, 423, 427, 428, 427, + 423, 423, 424, 428, 429, 428, 424, 424, 425, 429, 430, 429, 425, 425, 426, 430, 431, 402, 402, + 402, 427, 431, 432, 431, 427, 427, 428, 432, 433, 432, 428, 428, 429, 433, 434, 433, 429, 429, + 430, 434, 435, 402, 402, 402, 431, 435, 436, 435, 431, 431, 432, 436, 437, 436, 432, 432, 433, + 437, 438, 437, 433, 433, 434, 438, 439, 402, 402, 402, 435, 439, 440, 439, 435, 435, 436, 440, + 441, 440, 436, 436, 437, 441, 442, 441, 437, 437, 438, 442, 443, 402, 402, 402, 439, 443, 444, + 443, 439, 439, 440, 444, 445, 444, 440, 440, 441, 445, 446, 445, 441, 441, 442, 446, 447, 402, + 402, 402, 443, 447, 448, 447, 443, 443, 444, 448, 449, 448, 444, 444, 445, 449, 450, 449, 445, + 445, 446, 450, 451, 402, 402, 402, 447, 451, 452, 451, 447, 447, 448, 452, 453, 452, 448, 448, + 449, 453, 454, 453, 449, 449, 450, 454, 455, 402, 402, 402, 451, 455, 456, 455, 451, 451, 452, + 456, 457, 456, 452, 452, 453, 457, 458, 457, 453, 453, 454, 458, 459, 402, 402, 402, 455, 459, + 460, 459, 455, 455, 456, 460, 461, 460, 456, 456, 457, 461, 462, 461, 457, 457, 458, 462, 463, + 402, 402, 402, 459, 463, 464, 463, 459, 459, 460, 464, 465, 464, 460, 460, 461, 465, 466, 465, + 461, 461, 462, 466, 403, 402, 402, 402, 463, 403, 404, 403, 463, 463, 464, 404, 405, 404, 464, + 464, 465, 405, 406, 405, 465, 465, 466, 406, 471, 410, 406, 406, 467, 471, 472, 471, 467, 467, + 468, 472, 473, 472, 468, 468, 469, 473, 474, 473, 469, 469, 470, 474, 475, 414, 410, 410, 471, + 475, 476, 475, 471, 471, 472, 476, 477, 476, 472, 472, 473, 477, 478, 477, 473, 473, 474, 478, + 479, 418, 414, 414, 475, 479, 480, 479, 475, 475, 476, 480, 481, 480, 476, 476, 477, 481, 482, + 481, 477, 477, 478, 482, 483, 422, 418, 418, 479, 483, 484, 483, 479, 479, 480, 484, 485, 484, + 480, 480, 481, 485, 486, 485, 481, 481, 482, 486, 487, 426, 422, 422, 483, 487, 488, 487, 483, + 483, 484, 488, 489, 488, 484, 484, 485, 489, 490, 489, 485, 485, 486, 490, 491, 430, 426, 426, + 487, 491, 492, 491, 487, 487, 488, 492, 493, 492, 488, 488, 489, 493, 494, 493, 489, 489, 490, + 494, 495, 434, 430, 430, 491, 495, 496, 495, 491, 491, 492, 496, 497, 496, 492, 492, 493, 497, + 498, 497, 493, 493, 494, 498, 499, 438, 434, 434, 495, 499, 500, 499, 495, 495, 496, 500, 501, + 500, 496, 496, 497, 501, 502, 501, 497, 497, 498, 502, 503, 442, 438, 438, 499, 503, 504, 503, + 499, 499, 500, 504, 505, 504, 500, 500, 501, 505, 506, 505, 501, 501, 502, 506, 507, 446, 442, + 442, 503, 507, 508, 507, 503, 503, 504, 508, 509, 508, 504, 504, 505, 509, 510, 509, 505, 505, + 506, 510, 511, 450, 446, 446, 507, 511, 512, 511, 507, 507, 508, 512, 513, 512, 508, 508, 509, + 513, 514, 513, 509, 509, 510, 514, 515, 454, 450, 450, 511, 515, 516, 515, 511, 511, 512, 516, + 517, 516, 512, 512, 513, 517, 518, 517, 513, 513, 514, 518, 519, 458, 454, 454, 515, 519, 520, + 519, 515, 515, 516, 520, 521, 520, 516, 516, 517, 521, 522, 521, 517, 517, 518, 522, 523, 462, + 458, 458, 519, 523, 524, 523, 519, 519, 520, 524, 525, 524, 520, 520, 521, 525, 526, 525, 521, + 521, 522, 526, 527, 466, 462, 462, 523, 527, 528, 527, 523, 523, 524, 528, 529, 528, 524, 524, + 525, 529, 530, 529, 525, 525, 526, 530, 467, 406, 466, 466, 527, 467, 468, 467, 527, 527, 528, + 468, 469, 468, 528, 528, 529, 469, 470, 469, 529, 529, 530, 470u16, ]; diff --git a/examples/vulkan/vk_teapot_camera.rs b/examples/vulkan/vk_teapot_camera.rs index c929da411..f47c4bf44 100644 --- a/examples/vulkan/vk_teapot_camera.rs +++ b/examples/vulkan/vk_teapot_camera.rs @@ -1,6 +1,4 @@ -extern crate nannou; - -use nannou::math::cgmath::{self, Matrix3, Matrix4, Rad, Point3, Vector3}; +use nannou::math::cgmath::{self, Matrix3, Matrix4, Point3, Rad, Vector3}; use nannou::prelude::*; use std::cell::RefCell; use std::sync::Arc; @@ -36,12 +34,12 @@ struct Camera { #[derive(Copy, Clone)] struct Vertex { - position: (f32, f32, f32) + position: (f32, f32, f32), } #[derive(Copy, Clone)] struct Normal { - normal: (f32, f32, f32) + normal: (f32, f32, f32), } vk::impl_vertex!(Vertex, position); @@ -92,19 +90,23 @@ fn model(app: &App) -> Model { device.clone(), vk::BufferUsage::all(), VERTICES.iter().cloned(), - ).unwrap(); + ) + .unwrap(); let normal_buffer = vk::CpuAccessibleBuffer::from_iter( device.clone(), vk::BufferUsage::all(), NORMALS.iter().cloned(), - ).unwrap(); + ) + .unwrap(); let index_buffer = vk::CpuAccessibleBuffer::from_iter( device.clone(), vk::BufferUsage::all(), INDICES.iter().cloned(), - ).unwrap(); + ) + .unwrap(); - let uniform_buffer = vk::CpuBufferPool::::new(device.clone(), vk::BufferUsage::all()); + let uniform_buffer = + vk::CpuBufferPool::::new(device.clone(), vk::BufferUsage::all()); let vertex_shader = vs::Shader::load(device.clone()).unwrap(); let fragment_shader = fs::Shader::load(device.clone()).unwrap(); @@ -130,7 +132,8 @@ fn model(app: &App) -> Model { color: [color], depth_stencil: {depth} } - ).unwrap(), + ) + .unwrap(), ); let [w, h] = app.main_window().swapchain().dimensions(); @@ -141,14 +144,16 @@ fn model(app: &App) -> Model { &fragment_shader, render_pass.clone(), [w as f32, h as f32], - ).unwrap(); + ) + .unwrap(); let depth_image = vk::AttachmentImage::transient_multisampled( device.clone(), [w, h], app.main_window().msaa_samples(), vk::Format::D16Unorm, - ).unwrap(); + ) + .unwrap(); let view_fbo = ViewFbo::default(); @@ -237,10 +242,10 @@ fn event(_app: &App, model: &mut Model, event: Event) { _ => { let max_pitch = std::f32::consts::PI * 0.5 - 0.0001; let min_pitch = -max_pitch; - model.camera.pitch = (model.camera.pitch + (-value * sensitivity ) as f32) + model.camera.pitch = (model.camera.pitch + (-value * sensitivity) as f32) .min(max_pitch) .max(min_pitch) - }, + } } } } @@ -278,21 +283,26 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { &graphics.fragment_shader, graphics.render_pass.clone(), [w as f32, h as f32], - ).unwrap(); + ) + .unwrap(); graphics.depth_image = vk::AttachmentImage::transient_multisampled( device.clone(), [w, h], frame.image_msaa_samples(), vk::Format::D16Unorm, - ).unwrap(); + ) + .unwrap(); } // Update view_fbo in case of window resize. let render_pass = graphics.render_pass.clone(); let depth_image = graphics.depth_image.clone(); - graphics.view_fbo - .update(&frame, render_pass, |builder, image| builder.add(image)?.add(depth_image.clone())) + graphics + .view_fbo + .update(&frame, render_pass, |builder, image| { + builder.add(image)?.add(depth_image.clone()) + }) .unwrap(); // Create a uniform buffer slice with the world, view and projection matrices. @@ -302,12 +312,7 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { // note: this teapot was meant for OpenGL where the origin is at the lower left instead the // origin is at the upper left in Vulkan, so we reverse the Y axis let aspect_ratio = w as f32 / h as f32; - let proj = cgmath::perspective( - Rad(std::f32::consts::FRAC_PI_2), - aspect_ratio, - 0.01, - 100.0, - ); + let proj = cgmath::perspective(Rad(std::f32::consts::FRAC_PI_2), aspect_ratio, 0.01, 100.0); let scale = Matrix4::from_scale(0.01); let view = model.camera.view(); @@ -325,7 +330,7 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { .add_buffer(uniform_buffer_slice) .unwrap() .build() - .unwrap() + .unwrap(), ); let clear_color = [0.0, 0.0, 0.0, 1.0].into(); @@ -340,7 +345,10 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { .draw_indexed( graphics.graphics_pipeline.clone(), &vk::DynamicState::none(), - vec![graphics.vertex_buffer.clone(), graphics.normal_buffer.clone()], + vec![ + graphics.vertex_buffer.clone(), + graphics.normal_buffer.clone(), + ], graphics.index_buffer.clone(), descriptor_set, (), @@ -426,2098 +434,3354 @@ void main() { // Teapot data, sourced from `vulkano-examples`. const VERTICES: [Vertex; 531] = [ - Vertex { position: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices - // start at 1 - Vertex { position: (40.6266, 28.3457, -1.10804) }, - Vertex { position: (40.0714, 30.4443, -1.10804) }, - Vertex { position: (40.7155, 31.1438, -1.10804) }, - Vertex { position: (42.0257, 30.4443, -1.10804) }, - Vertex { position: (43.4692, 28.3457, -1.10804) }, - Vertex { position: (37.5425, 28.3457, 14.5117) }, - Vertex { position: (37.0303, 30.4443, 14.2938) }, - Vertex { position: (37.6244, 31.1438, 14.5466) }, - Vertex { position: (38.8331, 30.4443, 15.0609) }, - Vertex { position: (40.1647, 28.3457, 15.6274) }, - Vertex { position: (29.0859, 28.3457, 27.1468) }, - Vertex { position: (28.6917, 30.4443, 26.7527) }, - Vertex { position: (29.149, 31.1438, 27.2099) }, - Vertex { position: (30.0792, 30.4443, 28.1402) }, - Vertex { position: (31.1041, 28.3457, 29.165) }, - Vertex { position: (16.4508, 28.3457, 35.6034) }, - Vertex { position: (16.2329, 30.4443, 35.0912) }, - Vertex { position: (16.4857, 31.1438, 35.6853) }, - Vertex { position: (16.9999, 30.4443, 36.894) }, - Vertex { position: (17.5665, 28.3457, 38.2256) }, - Vertex { position: (0.831025, 28.3457, 38.6876) }, - Vertex { position: (0.831025, 30.4443, 38.1324) }, - Vertex { position: (0.831025, 31.1438, 38.7764) }, - Vertex { position: (0.831025, 30.4443, 40.0866) }, - Vertex { position: (0.831025, 28.3457, 41.5301) }, - Vertex { position: (-15.868, 28.3457, 35.6034) }, - Vertex { position: (-15.0262, 30.4443, 35.0912) }, - Vertex { position: (-14.9585, 31.1438, 35.6853) }, - Vertex { position: (-15.3547, 30.4443, 36.894) }, - Vertex { position: (-15.9044, 28.3457, 38.2256) }, - Vertex { position: (-28.3832, 28.3457, 27.1468) }, - Vertex { position: (-27.4344, 30.4443, 26.7527) }, - Vertex { position: (-27.6068, 31.1438, 27.2099) }, - Vertex { position: (-28.4322, 30.4443, 28.1402) }, - Vertex { position: (-29.4421, 28.3457, 29.165) }, - Vertex { position: (-36.2402, 28.3457, 14.5117) }, - Vertex { position: (-35.52, 30.4443, 14.2938) }, - Vertex { position: (-36.0073, 31.1438, 14.5466) }, - Vertex { position: (-37.1767, 30.4443, 15.0609) }, - Vertex { position: (-38.5027, 28.3457, 15.6274) }, - Vertex { position: (-38.9646, 28.3457, -1.10804) }, - Vertex { position: (-38.4094, 30.4443, -1.10804) }, - Vertex { position: (-39.0534, 31.1438, -1.10804) }, - Vertex { position: (-40.3636, 30.4443, -1.10804) }, - Vertex { position: (-41.8071, 28.3457, -1.10804) }, - Vertex { position: (-35.8804, 28.3457, -16.7278) }, - Vertex { position: (-35.3683, 30.4443, -16.5099) }, - Vertex { position: (-35.9624, 31.1438, -16.7627) }, - Vertex { position: (-37.1711, 30.4443, -17.2769) }, - Vertex { position: (-38.5027, 28.3457, -17.8435) }, - Vertex { position: (-27.4238, 28.3457, -29.3629) }, - Vertex { position: (-27.0297, 30.4443, -28.9687) }, - Vertex { position: (-27.4869, 31.1438, -29.426) }, - Vertex { position: (-28.4172, 30.4443, -30.3562) }, - Vertex { position: (-29.4421, 28.3457, -31.3811) }, - Vertex { position: (-14.7887, 28.3457, -37.8195) }, - Vertex { position: (-14.5708, 30.4443, -37.3073) }, - Vertex { position: (-14.8236, 31.1438, -37.9014) }, - Vertex { position: (-15.3379, 30.4443, -39.1101) }, - Vertex { position: (-15.9044, 28.3457, -40.4417) }, - Vertex { position: (0.831025, 28.3457, -40.9036) }, - Vertex { position: (0.831025, 30.4443, -40.3484) }, - Vertex { position: (0.831025, 31.1438, -40.9925) }, - Vertex { position: (0.831025, 30.4443, -42.3027) }, - Vertex { position: (0.831025, 28.3457, -43.7462) }, - Vertex { position: (16.4508, 28.3457, -37.8195) }, - Vertex { position: (16.2329, 30.4443, -37.3073) }, - Vertex { position: (16.4857, 31.1438, -37.9014) }, - Vertex { position: (16.9999, 30.4443, -39.1101) }, - Vertex { position: (17.5665, 28.3457, -40.4417) }, - Vertex { position: (29.0859, 28.3457, -29.3629) }, - Vertex { position: (28.6917, 30.4443, -28.9687) }, - Vertex { position: (29.149, 31.1438, -29.426) }, - Vertex { position: (30.0792, 30.4443, -30.3562) }, - Vertex { position: (31.1041, 28.3457, -31.3811) }, - Vertex { position: (37.5425, 28.3457, -16.7278) }, - Vertex { position: (37.0303, 30.4443, -16.5099) }, - Vertex { position: (37.6244, 31.1438, -16.7627) }, - Vertex { position: (38.8331, 30.4443, -17.2769) }, - Vertex { position: (40.1647, 28.3457, -17.8435) }, - Vertex { position: (48.6879, 17.1865, -1.10804) }, - Vertex { position: (53.2404, 6.22714, -1.10804) }, - Vertex { position: (56.4605, -4.33246, -1.10804) }, - Vertex { position: (57.6819, -14.2925, -1.10804) }, - Vertex { position: (44.979, 17.1865, 17.6758) }, - Vertex { position: (49.1787, 6.22714, 19.4626) }, - Vertex { position: (52.1492, -4.33246, 20.7265) }, - Vertex { position: (53.2759, -14.2925, 21.2059) }, - Vertex { position: (34.8094, 17.1865, 32.8703) }, - Vertex { position: (38.0417, 6.22714, 36.1026) }, - Vertex { position: (40.3279, -4.33246, 38.3889) }, - Vertex { position: (41.1951, -14.2925, 39.2561) }, - Vertex { position: (19.6148, 17.1865, 43.0399) }, - Vertex { position: (21.4017, 6.22714, 47.2396) }, - Vertex { position: (22.6656, -4.33246, 50.2101) }, - Vertex { position: (23.145, -14.2925, 51.3369) }, - Vertex { position: (0.831025, 17.1865, 46.7488) }, - Vertex { position: (0.831025, 6.22714, 51.3013) }, - Vertex { position: (0.831025, -4.33246, 54.5214) }, - Vertex { position: (0.831025, -14.2925, 55.7428) }, - Vertex { position: (-17.9528, 17.1865, 43.0399) }, - Vertex { position: (-19.7397, 6.22714, 47.2396) }, - Vertex { position: (-21.0035, -4.33246, 50.2101) }, - Vertex { position: (-21.4829, -14.2925, 51.3369) }, - Vertex { position: (-33.1474, 17.1865, 32.8703) }, - Vertex { position: (-36.3796, 6.22714, 36.1026) }, - Vertex { position: (-38.6659, -4.33246, 38.3889) }, - Vertex { position: (-39.5331, -14.2925, 39.2561) }, - Vertex { position: (-43.3169, 17.1865, 17.6758) }, - Vertex { position: (-47.5166, 6.22714, 19.4626) }, - Vertex { position: (-50.4871, -4.33246, 20.7265) }, - Vertex { position: (-51.6139, -14.2925, 21.2059) }, - Vertex { position: (-47.0258, 17.1865, -1.10804) }, - Vertex { position: (-51.5784, 6.22714, -1.10804) }, - Vertex { position: (-54.7984, -4.33246, -1.10804) }, - Vertex { position: (-56.0198, -14.2925, -1.10804) }, - Vertex { position: (-43.3169, 17.1865, -19.8919) }, - Vertex { position: (-47.5166, 6.22714, -21.6787) }, - Vertex { position: (-50.4871, -4.33246, -22.9426) }, - Vertex { position: (-51.6139, -14.2925, -23.422) }, - Vertex { position: (-33.1474, 17.1865, -35.0864) }, - Vertex { position: (-36.3796, 6.22714, -38.3187) }, - Vertex { position: (-38.6659, -4.33246, -40.6049) }, - Vertex { position: (-39.5331, -14.2925, -41.4721) }, - Vertex { position: (-17.9528, 17.1865, -45.256) }, - Vertex { position: (-19.7397, 6.22714, -49.4557) }, - Vertex { position: (-21.0035, -4.33246, -52.4262) }, - Vertex { position: (-21.4829, -14.2925, -53.5529) }, - Vertex { position: (0.831025, 17.1865, -48.9649) }, - Vertex { position: (0.831025, 6.22714, -53.5174) }, - Vertex { position: (0.831025, -4.33246, -56.7375) }, - Vertex { position: (0.831025, -14.2925, -57.9589) }, - Vertex { position: (19.6148, 17.1865, -45.256) }, - Vertex { position: (21.4017, 6.22714, -49.4557) }, - Vertex { position: (22.6656, -4.33246, -52.4262) }, - Vertex { position: (23.145, -14.2925, -53.5529) }, - Vertex { position: (34.8094, 17.1865, -35.0864) }, - Vertex { position: (38.0417, 6.22714, -38.3187) }, - Vertex { position: (40.3279, -4.33246, -40.6049) }, - Vertex { position: (41.1951, -14.2925, -41.4721) }, - Vertex { position: (44.979, 17.1865, -19.8919) }, - Vertex { position: (49.1787, 6.22714, -21.6787) }, - Vertex { position: (52.1492, -4.33246, -22.9426) }, - Vertex { position: (53.2759, -14.2925, -23.422) }, - Vertex { position: (55.4611, -22.7202, -1.10804) }, - Vertex { position: (50.5755, -28.9493, -1.10804) }, - Vertex { position: (45.6899, -33.1798, -1.10804) }, - Vertex { position: (43.4692, -35.6115, -1.10804) }, - Vertex { position: (51.2273, -22.7202, 20.3343) }, - Vertex { position: (46.7203, -28.9493, 18.4167) }, - Vertex { position: (42.2133, -33.1798, 16.4991) }, - Vertex { position: (40.1647, -35.6115, 15.6274) }, - Vertex { position: (39.6184, -22.7202, 37.6793) }, - Vertex { position: (36.1496, -28.9493, 34.2106) }, - Vertex { position: (32.6808, -33.1798, 30.7418) }, - Vertex { position: (31.1041, -35.6115, 29.165) }, - Vertex { position: (22.2733, -22.7202, 49.2882) }, - Vertex { position: (20.3557, -28.9493, 44.7813) }, - Vertex { position: (18.4381, -33.1798, 40.2743) }, - Vertex { position: (17.5665, -35.6115, 38.2256) }, - Vertex { position: (0.831025, -22.7202, 53.5221) }, - Vertex { position: (0.831025, -28.9493, 48.6365) }, - Vertex { position: (0.831025, -33.1798, 43.7508) }, - Vertex { position: (0.831025, -35.6115, 41.5301) }, - Vertex { position: (-20.6113, -22.7202, 49.2882) }, - Vertex { position: (-18.6937, -28.9493, 44.7813) }, - Vertex { position: (-16.7761, -33.1798, 40.2743) }, - Vertex { position: (-15.9044, -35.6115, 38.2256) }, - Vertex { position: (-37.9564, -22.7202, 37.6793) }, - Vertex { position: (-34.4876, -28.9493, 34.2106) }, - Vertex { position: (-31.0188, -33.1798, 30.7418) }, - Vertex { position: (-29.4421, -35.6115, 29.165) }, - Vertex { position: (-49.5653, -22.7202, 20.3343) }, - Vertex { position: (-45.0583, -28.9493, 18.4167) }, - Vertex { position: (-40.5513, -33.1798, 16.4991) }, - Vertex { position: (-38.5027, -35.6115, 15.6274) }, - Vertex { position: (-53.7991, -22.7202, -1.10804) }, - Vertex { position: (-48.9135, -28.9493, -1.10804) }, - Vertex { position: (-44.0279, -33.1798, -1.10804) }, - Vertex { position: (-41.8071, -35.6115, -1.10804) }, - Vertex { position: (-49.5653, -22.7202, -22.5504) }, - Vertex { position: (-45.0583, -28.9493, -20.6327) }, - Vertex { position: (-40.5513, -33.1798, -18.7151) }, - Vertex { position: (-38.5027, -35.6115, -17.8435) }, - Vertex { position: (-37.9564, -22.7202, -39.8954) }, - Vertex { position: (-34.4876, -28.9493, -36.4266) }, - Vertex { position: (-31.0188, -33.1798, -32.9578) }, - Vertex { position: (-29.4421, -35.6115, -31.3811) }, - Vertex { position: (-20.6113, -22.7202, -51.5043) }, - Vertex { position: (-18.6937, -28.9493, -46.9973) }, - Vertex { position: (-16.7761, -33.1798, -42.4903) }, - Vertex { position: (-15.9044, -35.6115, -40.4417) }, - Vertex { position: (0.831025, -22.7202, -55.7382) }, - Vertex { position: (0.831025, -28.9493, -50.8525) }, - Vertex { position: (0.831025, -33.1798, -45.9669) }, - Vertex { position: (0.831025, -35.6115, -43.7462) }, - Vertex { position: (22.2733, -22.7202, -51.5043) }, - Vertex { position: (20.3557, -28.9493, -46.9973) }, - Vertex { position: (18.4381, -33.1798, -42.4903) }, - Vertex { position: (17.5665, -35.6115, -40.4417) }, - Vertex { position: (39.6184, -22.7202, -39.8954) }, - Vertex { position: (36.1496, -28.9493, -36.4266) }, - Vertex { position: (32.6808, -33.1798, -32.9578) }, - Vertex { position: (31.1041, -35.6115, -31.3811) }, - Vertex { position: (51.2273, -22.7202, -22.5504) }, - Vertex { position: (46.7203, -28.9493, -20.6327) }, - Vertex { position: (42.2133, -33.1798, -18.7151) }, - Vertex { position: (40.1647, -35.6115, -17.8435) }, - Vertex { position: (42.5031, -37.1772, -1.10804) }, - Vertex { position: (37.3399, -38.5429, -1.10804) }, - Vertex { position: (24.5818, -39.5089, -1.10804) }, - Vertex { position: (0.831025, -39.8754, -1.10804) }, - Vertex { position: (39.2736, -37.1772, 15.2483) }, - Vertex { position: (34.5105, -38.5429, 13.2217) }, - Vertex { position: (22.7411, -39.5089, 8.21414) }, - Vertex { position: (30.4182, -37.1772, 28.4792) }, - Vertex { position: (26.7523, -38.5429, 24.8133) }, - Vertex { position: (17.6941, -39.5089, 15.755) }, - Vertex { position: (17.1873, -37.1772, 37.3345) }, - Vertex { position: (15.1608, -38.5429, 32.5714) }, - Vertex { position: (10.1532, -39.5089, 20.8021) }, - Vertex { position: (0.831025, -37.1772, 40.5641) }, - Vertex { position: (0.831025, -38.5429, 35.4009) }, - Vertex { position: (0.831025, -39.5089, 22.6427) }, - Vertex { position: (-15.5253, -37.1772, 37.3345) }, - Vertex { position: (-13.4987, -38.5429, 32.5714) }, - Vertex { position: (-8.49115, -39.5089, 20.8021) }, - Vertex { position: (-28.7562, -37.1772, 28.4792) }, - Vertex { position: (-25.0903, -38.5429, 24.8133) }, - Vertex { position: (-16.032, -39.5089, 15.755) }, - Vertex { position: (-37.6115, -37.1772, 15.2483) }, - Vertex { position: (-32.8484, -38.5429, 13.2217) }, - Vertex { position: (-21.0791, -39.5089, 8.21414) }, - Vertex { position: (-40.8411, -37.1772, -1.10804) }, - Vertex { position: (-35.6779, -38.5429, -1.10804) }, - Vertex { position: (-22.9198, -39.5089, -1.10804) }, - Vertex { position: (-37.6115, -37.1772, -17.4643) }, - Vertex { position: (-32.8484, -38.5429, -15.4378) }, - Vertex { position: (-21.0791, -39.5089, -10.4302) }, - Vertex { position: (-28.7562, -37.1772, -30.6952) }, - Vertex { position: (-25.0903, -38.5429, -27.0294) }, - Vertex { position: (-16.032, -39.5089, -17.9711) }, - Vertex { position: (-15.5253, -37.1772, -39.5506) }, - Vertex { position: (-13.4987, -38.5429, -34.7875) }, - Vertex { position: (-8.49115, -39.5089, -23.0181) }, - Vertex { position: (0.831025, -37.1772, -42.7802) }, - Vertex { position: (0.831025, -38.5429, -37.6169) }, - Vertex { position: (0.831025, -39.5089, -24.8588) }, - Vertex { position: (17.1873, -37.1772, -39.5506) }, - Vertex { position: (15.1608, -38.5429, -34.7875) }, - Vertex { position: (10.1532, -39.5089, -23.0181) }, - Vertex { position: (30.4182, -37.1772, -30.6952) }, - Vertex { position: (26.7523, -38.5429, -27.0294) }, - Vertex { position: (17.6941, -39.5089, -17.9711) }, - Vertex { position: (39.2736, -37.1772, -17.4643) }, - Vertex { position: (34.5105, -38.5429, -15.4378) }, - Vertex { position: (22.7411, -39.5089, -10.4302) }, - Vertex { position: (-44.6497, 17.6861, -1.10804) }, - Vertex { position: (-57.9297, 17.5862, -1.10804) }, - Vertex { position: (-67.7453, 16.8867, -1.10804) }, - Vertex { position: (-73.8301, 14.9879, -1.10804) }, - Vertex { position: (-75.9176, 11.2904, -1.10804) }, - Vertex { position: (-44.2055, 18.6855, 3.68876) }, - Vertex { position: (-58.3252, 18.5699, 3.68876) }, - Vertex { position: (-68.6891, 17.7611, 3.68876) }, - Vertex { position: (-75.0724, 15.5657, 3.68876) }, - Vertex { position: (-77.2501, 11.2904, 3.68876) }, - Vertex { position: (-43.2284, 20.884, 5.28769) }, - Vertex { position: (-59.1955, 20.7341, 5.28769) }, - Vertex { position: (-70.7655, 19.6848, 5.28769) }, - Vertex { position: (-77.8053, 16.8367, 5.28769) }, - Vertex { position: (-80.1814, 11.2904, 5.28769) }, - Vertex { position: (-42.2513, 23.0825, 3.68876) }, - Vertex { position: (-60.0657, 22.8983, 3.68876) }, - Vertex { position: (-72.8419, 21.6085, 3.68876) }, - Vertex { position: (-80.5381, 18.1077, 3.68876) }, - Vertex { position: (-83.1128, 11.2904, 3.68876) }, - Vertex { position: (-41.8071, 24.0819, -1.10804) }, - Vertex { position: (-60.4613, 23.882, -1.10804) }, - Vertex { position: (-73.7857, 22.4829, -1.10804) }, - Vertex { position: (-81.7804, 18.6855, -1.10804) }, - Vertex { position: (-84.4453, 11.2904, -1.10804) }, - Vertex { position: (-42.2513, 23.0825, -5.90483) }, - Vertex { position: (-60.0657, 22.8983, -5.90483) }, - Vertex { position: (-72.8419, 21.6085, -5.90483) }, - Vertex { position: (-80.5381, 18.1077, -5.90483) }, - Vertex { position: (-83.1128, 11.2904, -5.90483) }, - Vertex { position: (-43.2284, 20.884, -7.50376) }, - Vertex { position: (-59.1955, 20.7341, -7.50376) }, - Vertex { position: (-70.7655, 19.6848, -7.50376) }, - Vertex { position: (-77.8053, 16.8367, -7.50376) }, - Vertex { position: (-80.1814, 11.2904, -7.50376) }, - Vertex { position: (-44.2055, 18.6855, -5.90483) }, - Vertex { position: (-58.3252, 18.5699, -5.90483) }, - Vertex { position: (-68.6891, 17.7611, -5.90483) }, - Vertex { position: (-75.0724, 15.5657, -5.90483) }, - Vertex { position: (-77.2501, 11.2904, -5.90483) }, - Vertex { position: (-74.8073, 5.4943, -1.10804) }, - Vertex { position: (-71.2985, -1.50103, -1.10804) }, - Vertex { position: (-65.1248, -8.49634, -1.10804) }, - Vertex { position: (-56.0198, -14.2925, -1.10804) }, - Vertex { position: (-76.0183, 4.93477, 3.68876) }, - Vertex { position: (-72.159, -2.35462, 3.68876) }, - Vertex { position: (-65.4267, -9.55033, 3.68876) }, - Vertex { position: (-55.5757, -15.6249, 3.68876) }, - Vertex { position: (-78.6824, 3.70383, 5.28769) }, - Vertex { position: (-74.0522, -4.23253, 5.28769) }, - Vertex { position: (-66.0909, -11.8691, 5.28769) }, - Vertex { position: (-54.5986, -18.5563, 5.28769) }, - Vertex { position: (-81.3466, 2.47288, 3.68876) }, - Vertex { position: (-75.9454, -6.11044, 3.68876) }, - Vertex { position: (-66.755, -14.1878, 3.68876) }, - Vertex { position: (-53.6214, -21.4877, 3.68876) }, - Vertex { position: (-82.5576, 1.91336, -1.10804) }, - Vertex { position: (-76.8059, -6.96404, -1.10804) }, - Vertex { position: (-67.0569, -15.2418, -1.10804) }, - Vertex { position: (-53.1773, -22.8201, -1.10804) }, - Vertex { position: (-81.3466, 2.47288, -5.90483) }, - Vertex { position: (-75.9454, -6.11044, -5.90483) }, - Vertex { position: (-66.755, -14.1878, -5.90483) }, - Vertex { position: (-53.6214, -21.4877, -5.90483) }, - Vertex { position: (-78.6824, 3.70383, -7.50376) }, - Vertex { position: (-74.0522, -4.23253, -7.50376) }, - Vertex { position: (-66.0909, -11.8691, -7.50376) }, - Vertex { position: (-54.5986, -18.5563, -7.50376) }, - Vertex { position: (-76.0183, 4.93477, -5.90483) }, - Vertex { position: (-72.159, -2.35462, -5.90483) }, - Vertex { position: (-65.4267, -9.55033, -5.90483) }, - Vertex { position: (-55.5757, -15.6249, -5.90483) }, - Vertex { position: (49.1543, 0.630882, -1.10804) }, - Vertex { position: (62.7896, 3.76212, -1.10804) }, - Vertex { position: (68.6967, 11.2904, -1.10804) }, - Vertex { position: (71.939, 20.4176, -1.10804) }, - Vertex { position: (77.5797, 28.3457, -1.10804) }, - Vertex { position: (49.1543, -3.03333, 9.4449) }, - Vertex { position: (63.8305, 1.04519, 8.42059) }, - Vertex { position: (70.0292, 9.70814, 6.1671) }, - Vertex { position: (73.5629, 19.8451, 3.91361) }, - Vertex { position: (80.2446, 28.3457, 2.88929) }, - Vertex { position: (49.1543, -11.0946, 12.9626) }, - Vertex { position: (66.1207, -4.93206, 11.5968) }, - Vertex { position: (72.9605, 6.22714, 8.59214) }, - Vertex { position: (77.1355, 18.5855, 5.58749) }, - Vertex { position: (86.1073, 28.3457, 4.22173) }, - Vertex { position: (49.1543, -19.1559, 9.4449) }, - Vertex { position: (68.4108, -10.9093, 8.42059) }, - Vertex { position: (75.8919, 2.74614, 6.1671) }, - Vertex { position: (80.7081, 17.326, 3.91361) }, - Vertex { position: (91.97, 28.3457, 2.88929) }, - Vertex { position: (49.1543, -22.8201, -1.10804) }, - Vertex { position: (69.4518, -13.6262, -1.10804) }, - Vertex { position: (77.2244, 1.16386, -1.10804) }, - Vertex { position: (82.3321, 16.7534, -1.10804) }, - Vertex { position: (94.6349, 28.3457, -1.10804) }, - Vertex { position: (49.1543, -19.1559, -11.661) }, - Vertex { position: (68.4108, -10.9093, -10.6367) }, - Vertex { position: (75.8919, 2.74614, -8.38317) }, - Vertex { position: (80.7081, 17.326, -6.12968) }, - Vertex { position: (91.97, 28.3457, -5.10536) }, - Vertex { position: (49.1543, -11.0946, -15.1786) }, - Vertex { position: (66.1207, -4.93206, -13.8129) }, - Vertex { position: (72.9605, 6.22714, -10.8082) }, - Vertex { position: (77.1355, 18.5855, -7.80356) }, - Vertex { position: (86.1073, 28.3457, -6.4378) }, - Vertex { position: (49.1543, -3.03333, -11.661) }, - Vertex { position: (63.8305, 1.04519, -10.6367) }, - Vertex { position: (70.0292, 9.70814, -8.38317) }, - Vertex { position: (73.5629, 19.8451, -6.12968) }, - Vertex { position: (80.2446, 28.3457, -5.10536) }, - Vertex { position: (79.6227, 29.5449, -1.10804) }, - Vertex { position: (81.1329, 29.9446, -1.10804) }, - Vertex { position: (81.577, 29.5449, -1.10804) }, - Vertex { position: (80.4222, 28.3457, -1.10804) }, - Vertex { position: (82.4767, 29.6034, 2.63946) }, - Vertex { position: (83.8116, 30.0383, 2.08983) }, - Vertex { position: (83.8515, 29.6268, 1.54019) }, - Vertex { position: (82.1988, 28.3457, 1.29036) }, - Vertex { position: (88.7555, 29.7322, 3.88862) }, - Vertex { position: (89.7049, 30.2444, 3.15578) }, - Vertex { position: (88.8555, 29.8072, 2.42294) }, - Vertex { position: (86.1073, 28.3457, 2.08983) }, - Vertex { position: (95.0343, 29.8611, 2.63946) }, - Vertex { position: (95.5982, 30.4505, 2.08983) }, - Vertex { position: (93.8594, 29.9875, 1.54019) }, - Vertex { position: (90.0158, 28.3457, 1.29036) }, - Vertex { position: (97.8883, 29.9196, -1.10804) }, - Vertex { position: (98.2769, 30.5442, -1.10804) }, - Vertex { position: (96.1339, 30.0695, -1.10804) }, - Vertex { position: (91.7924, 28.3457, -1.10804) }, - Vertex { position: (95.0343, 29.8611, -4.85553) }, - Vertex { position: (95.5982, 30.4505, -4.3059) }, - Vertex { position: (93.8594, 29.9875, -3.75626) }, - Vertex { position: (90.0158, 28.3457, -3.50643) }, - Vertex { position: (88.7555, 29.7322, -6.10469) }, - Vertex { position: (89.7049, 30.2444, -5.37185) }, - Vertex { position: (88.8555, 29.8072, -4.63901) }, - Vertex { position: (86.1073, 28.3457, -4.3059) }, - Vertex { position: (82.4767, 29.6034, -4.85553) }, - Vertex { position: (83.8116, 30.0383, -4.3059) }, - Vertex { position: (83.8515, 29.6268, -3.75626) }, - Vertex { position: (82.1988, 28.3457, -3.50643) }, - Vertex { position: (0.831025, 49.6647, -1.10804) }, - Vertex { position: (10.5134, 48.2657, -1.10804) }, - Vertex { position: (10.0693, 44.868, -1.10804) }, - Vertex { position: (6.42728, 40.6708, -1.10804) }, - Vertex { position: (6.51611, 36.8733, -1.10804) }, - Vertex { position: (9.76642, 48.2657, 2.70243) }, - Vertex { position: (9.35632, 44.868, 2.52698) }, - Vertex { position: (5.9947, 40.6708, 1.09187) }, - Vertex { position: (6.07552, 36.8733, 1.12336) }, - Vertex { position: (7.71453, 48.2657, 5.77547) }, - Vertex { position: (7.39819, 44.868, 5.45913) }, - Vertex { position: (4.80736, 40.6708, 2.8683) }, - Vertex { position: (4.86744, 36.8733, 2.92838) }, - Vertex { position: (4.64149, 48.2657, 7.82736) }, - Vertex { position: (4.46604, 44.868, 7.41726) }, - Vertex { position: (3.03093, 40.6708, 4.05564) }, - Vertex { position: (3.06242, 36.8733, 4.13646) }, - Vertex { position: (0.831025, 48.2657, 8.57438) }, - Vertex { position: (0.831025, 44.868, 8.13023) }, - Vertex { position: (0.831025, 40.6708, 4.48822) }, - Vertex { position: (0.831025, 36.8733, 4.57705) }, - Vertex { position: (-2.97944, 48.2657, 7.82736) }, - Vertex { position: (-2.80399, 44.868, 7.41726) }, - Vertex { position: (-1.36888, 40.6708, 4.05564) }, - Vertex { position: (-1.40037, 36.8733, 4.13646) }, - Vertex { position: (-6.05248, 48.2657, 5.77547) }, - Vertex { position: (-5.73614, 44.868, 5.45913) }, - Vertex { position: (-3.14531, 40.6708, 2.8683) }, - Vertex { position: (-3.20539, 36.8733, 2.92838) }, - Vertex { position: (-8.10437, 48.2657, 2.70243) }, - Vertex { position: (-7.69427, 44.868, 2.52698) }, - Vertex { position: (-4.33265, 40.6708, 1.09187) }, - Vertex { position: (-4.41347, 36.8733, 1.12336) }, - Vertex { position: (-8.85139, 48.2657, -1.10804) }, - Vertex { position: (-8.40724, 44.868, -1.10804) }, - Vertex { position: (-4.76523, 40.6708, -1.10804) }, - Vertex { position: (-4.85406, 36.8733, -1.10804) }, - Vertex { position: (-8.10437, 48.2657, -4.9185) }, - Vertex { position: (-7.69427, 44.868, -4.74305) }, - Vertex { position: (-4.33265, 40.6708, -3.30794) }, - Vertex { position: (-4.41347, 36.8733, -3.33943) }, - Vertex { position: (-6.05248, 48.2657, -7.99154) }, - Vertex { position: (-5.73614, 44.868, -7.6752) }, - Vertex { position: (-3.14531, 40.6708, -5.08437) }, - Vertex { position: (-3.20539, 36.8733, -5.14445) }, - Vertex { position: (-2.97944, 48.2657, -10.0434) }, - Vertex { position: (-2.80399, 44.868, -9.63333) }, - Vertex { position: (-1.36888, 40.6708, -6.27171) }, - Vertex { position: (-1.40037, 36.8733, -6.35253) }, - Vertex { position: (0.831025, 48.2657, -10.7904) }, - Vertex { position: (0.831025, 44.868, -10.3463) }, - Vertex { position: (0.831025, 40.6708, -6.70429) }, - Vertex { position: (0.831025, 36.8733, -6.79312) }, - Vertex { position: (4.64149, 48.2657, -10.0434) }, - Vertex { position: (4.46604, 44.868, -9.63333) }, - Vertex { position: (3.03093, 40.6708, -6.27171) }, - Vertex { position: (3.06242, 36.8733, -6.35253) }, - Vertex { position: (7.71453, 48.2657, -7.99154) }, - Vertex { position: (7.39819, 44.868, -7.6752) }, - Vertex { position: (4.80736, 40.6708, -5.08437) }, - Vertex { position: (4.86744, 36.8733, -5.14445) }, - Vertex { position: (9.76642, 48.2657, -4.9185) }, - Vertex { position: (9.35632, 44.868, -4.74305) }, - Vertex { position: (5.9947, 40.6708, -3.30794) }, - Vertex { position: (6.07552, 36.8733, -3.33943) }, - Vertex { position: (13.8001, 34.3417, -1.10804) }, - Vertex { position: (24.282, 32.6095, -1.10804) }, - Vertex { position: (33.6979, 30.8773, -1.10804) }, - Vertex { position: (37.7841, 28.3457, -1.10804) }, - Vertex { position: (12.795, 34.3417, 3.98234) }, - Vertex { position: (22.4646, 32.6095, 8.09647) }, - Vertex { position: (31.1507, 30.8773, 11.7922) }, - Vertex { position: (34.9202, 28.3457, 13.396) }, - Vertex { position: (10.0391, 34.3417, 8.10003) }, - Vertex { position: (17.4812, 32.6095, 15.5422) }, - Vertex { position: (24.1665, 30.8773, 22.2275) }, - Vertex { position: (27.0677, 28.3457, 25.1286) }, - Vertex { position: (5.9214, 34.3417, 10.856) }, - Vertex { position: (10.0355, 32.6095, 20.5255) }, - Vertex { position: (13.7313, 30.8773, 29.2117) }, - Vertex { position: (15.3351, 28.3457, 32.9812) }, - Vertex { position: (0.831025, 34.3417, 11.8611) }, - Vertex { position: (0.831025, 32.6095, 22.3429) }, - Vertex { position: (0.831025, 30.8773, 31.7589) }, - Vertex { position: (0.831025, 28.3457, 35.845) }, - Vertex { position: (-4.25935, 34.3417, 10.856) }, - Vertex { position: (-8.37348, 32.6095, 20.5255) }, - Vertex { position: (-12.0692, 30.8773, 29.2117) }, - Vertex { position: (-13.673, 28.3457, 32.9812) }, - Vertex { position: (-8.37704, 34.3417, 8.10003) }, - Vertex { position: (-15.8192, 32.6095, 15.5422) }, - Vertex { position: (-22.5045, 30.8773, 22.2275) }, - Vertex { position: (-25.4056, 28.3457, 25.1286) }, - Vertex { position: (-11.133, 34.3417, 3.98234) }, - Vertex { position: (-20.8025, 32.6095, 8.09647) }, - Vertex { position: (-29.4887, 30.8773, 11.7922) }, - Vertex { position: (-33.2582, 28.3457, 13.396) }, - Vertex { position: (-12.1381, 34.3417, -1.10804) }, - Vertex { position: (-22.62, 32.6095, -1.10804) }, - Vertex { position: (-32.0359, 30.8773, -1.10804) }, - Vertex { position: (-36.122, 28.3457, -1.10804) }, - Vertex { position: (-11.133, 34.3417, -6.19841) }, - Vertex { position: (-20.8025, 32.6095, -10.3125) }, - Vertex { position: (-29.4887, 30.8773, -14.0083) }, - Vertex { position: (-33.2582, 28.3457, -15.6121) }, - Vertex { position: (-8.37704, 34.3417, -10.3161) }, - Vertex { position: (-15.8192, 32.6095, -17.7582) }, - Vertex { position: (-22.5045, 30.8773, -24.4435) }, - Vertex { position: (-25.4056, 28.3457, -27.3447) }, - Vertex { position: (-4.25935, 34.3417, -13.072) }, - Vertex { position: (-8.37348, 32.6095, -22.7416) }, - Vertex { position: (-12.0692, 30.8773, -31.4277) }, - Vertex { position: (-13.673, 28.3457, -35.1972) }, - Vertex { position: (0.831025, 34.3417, -14.0771) }, - Vertex { position: (0.831025, 32.6095, -24.559) }, - Vertex { position: (0.831025, 30.8773, -33.9749) }, - Vertex { position: (0.831025, 28.3457, -38.0611) }, - Vertex { position: (5.9214, 34.3417, -13.072) }, - Vertex { position: (10.0355, 32.6095, -22.7416) }, - Vertex { position: (13.7313, 30.8773, -31.4277) }, - Vertex { position: (15.3351, 28.3457, -35.1972) }, - Vertex { position: (10.0391, 34.3417, -10.3161) }, - Vertex { position: (17.4812, 32.6095, -17.7582) }, - Vertex { position: (24.1665, 30.8773, -24.4435) }, - Vertex { position: (27.0677, 28.3457, -27.3447) }, - Vertex { position: (12.795, 34.3417, -6.19841) }, - Vertex { position: (22.4646, 32.6095, -10.3125) }, - Vertex { position: (31.1507, 30.8773, -14.0083) }, - Vertex { position: (34.9202, 28.3457, -15.6121) } + Vertex { + position: (0.0, 0.0, 0.0), + }, // dummy vector because in the original model indices + // start at 1 + Vertex { + position: (40.6266, 28.3457, -1.10804), + }, + Vertex { + position: (40.0714, 30.4443, -1.10804), + }, + Vertex { + position: (40.7155, 31.1438, -1.10804), + }, + Vertex { + position: (42.0257, 30.4443, -1.10804), + }, + Vertex { + position: (43.4692, 28.3457, -1.10804), + }, + Vertex { + position: (37.5425, 28.3457, 14.5117), + }, + Vertex { + position: (37.0303, 30.4443, 14.2938), + }, + Vertex { + position: (37.6244, 31.1438, 14.5466), + }, + Vertex { + position: (38.8331, 30.4443, 15.0609), + }, + Vertex { + position: (40.1647, 28.3457, 15.6274), + }, + Vertex { + position: (29.0859, 28.3457, 27.1468), + }, + Vertex { + position: (28.6917, 30.4443, 26.7527), + }, + Vertex { + position: (29.149, 31.1438, 27.2099), + }, + Vertex { + position: (30.0792, 30.4443, 28.1402), + }, + Vertex { + position: (31.1041, 28.3457, 29.165), + }, + Vertex { + position: (16.4508, 28.3457, 35.6034), + }, + Vertex { + position: (16.2329, 30.4443, 35.0912), + }, + Vertex { + position: (16.4857, 31.1438, 35.6853), + }, + Vertex { + position: (16.9999, 30.4443, 36.894), + }, + Vertex { + position: (17.5665, 28.3457, 38.2256), + }, + Vertex { + position: (0.831025, 28.3457, 38.6876), + }, + Vertex { + position: (0.831025, 30.4443, 38.1324), + }, + Vertex { + position: (0.831025, 31.1438, 38.7764), + }, + Vertex { + position: (0.831025, 30.4443, 40.0866), + }, + Vertex { + position: (0.831025, 28.3457, 41.5301), + }, + Vertex { + position: (-15.868, 28.3457, 35.6034), + }, + Vertex { + position: (-15.0262, 30.4443, 35.0912), + }, + Vertex { + position: (-14.9585, 31.1438, 35.6853), + }, + Vertex { + position: (-15.3547, 30.4443, 36.894), + }, + Vertex { + position: (-15.9044, 28.3457, 38.2256), + }, + Vertex { + position: (-28.3832, 28.3457, 27.1468), + }, + Vertex { + position: (-27.4344, 30.4443, 26.7527), + }, + Vertex { + position: (-27.6068, 31.1438, 27.2099), + }, + Vertex { + position: (-28.4322, 30.4443, 28.1402), + }, + Vertex { + position: (-29.4421, 28.3457, 29.165), + }, + Vertex { + position: (-36.2402, 28.3457, 14.5117), + }, + Vertex { + position: (-35.52, 30.4443, 14.2938), + }, + Vertex { + position: (-36.0073, 31.1438, 14.5466), + }, + Vertex { + position: (-37.1767, 30.4443, 15.0609), + }, + Vertex { + position: (-38.5027, 28.3457, 15.6274), + }, + Vertex { + position: (-38.9646, 28.3457, -1.10804), + }, + Vertex { + position: (-38.4094, 30.4443, -1.10804), + }, + Vertex { + position: (-39.0534, 31.1438, -1.10804), + }, + Vertex { + position: (-40.3636, 30.4443, -1.10804), + }, + Vertex { + position: (-41.8071, 28.3457, -1.10804), + }, + Vertex { + position: (-35.8804, 28.3457, -16.7278), + }, + Vertex { + position: (-35.3683, 30.4443, -16.5099), + }, + Vertex { + position: (-35.9624, 31.1438, -16.7627), + }, + Vertex { + position: (-37.1711, 30.4443, -17.2769), + }, + Vertex { + position: (-38.5027, 28.3457, -17.8435), + }, + Vertex { + position: (-27.4238, 28.3457, -29.3629), + }, + Vertex { + position: (-27.0297, 30.4443, -28.9687), + }, + Vertex { + position: (-27.4869, 31.1438, -29.426), + }, + Vertex { + position: (-28.4172, 30.4443, -30.3562), + }, + Vertex { + position: (-29.4421, 28.3457, -31.3811), + }, + Vertex { + position: (-14.7887, 28.3457, -37.8195), + }, + Vertex { + position: (-14.5708, 30.4443, -37.3073), + }, + Vertex { + position: (-14.8236, 31.1438, -37.9014), + }, + Vertex { + position: (-15.3379, 30.4443, -39.1101), + }, + Vertex { + position: (-15.9044, 28.3457, -40.4417), + }, + Vertex { + position: (0.831025, 28.3457, -40.9036), + }, + Vertex { + position: (0.831025, 30.4443, -40.3484), + }, + Vertex { + position: (0.831025, 31.1438, -40.9925), + }, + Vertex { + position: (0.831025, 30.4443, -42.3027), + }, + Vertex { + position: (0.831025, 28.3457, -43.7462), + }, + Vertex { + position: (16.4508, 28.3457, -37.8195), + }, + Vertex { + position: (16.2329, 30.4443, -37.3073), + }, + Vertex { + position: (16.4857, 31.1438, -37.9014), + }, + Vertex { + position: (16.9999, 30.4443, -39.1101), + }, + Vertex { + position: (17.5665, 28.3457, -40.4417), + }, + Vertex { + position: (29.0859, 28.3457, -29.3629), + }, + Vertex { + position: (28.6917, 30.4443, -28.9687), + }, + Vertex { + position: (29.149, 31.1438, -29.426), + }, + Vertex { + position: (30.0792, 30.4443, -30.3562), + }, + Vertex { + position: (31.1041, 28.3457, -31.3811), + }, + Vertex { + position: (37.5425, 28.3457, -16.7278), + }, + Vertex { + position: (37.0303, 30.4443, -16.5099), + }, + Vertex { + position: (37.6244, 31.1438, -16.7627), + }, + Vertex { + position: (38.8331, 30.4443, -17.2769), + }, + Vertex { + position: (40.1647, 28.3457, -17.8435), + }, + Vertex { + position: (48.6879, 17.1865, -1.10804), + }, + Vertex { + position: (53.2404, 6.22714, -1.10804), + }, + Vertex { + position: (56.4605, -4.33246, -1.10804), + }, + Vertex { + position: (57.6819, -14.2925, -1.10804), + }, + Vertex { + position: (44.979, 17.1865, 17.6758), + }, + Vertex { + position: (49.1787, 6.22714, 19.4626), + }, + Vertex { + position: (52.1492, -4.33246, 20.7265), + }, + Vertex { + position: (53.2759, -14.2925, 21.2059), + }, + Vertex { + position: (34.8094, 17.1865, 32.8703), + }, + Vertex { + position: (38.0417, 6.22714, 36.1026), + }, + Vertex { + position: (40.3279, -4.33246, 38.3889), + }, + Vertex { + position: (41.1951, -14.2925, 39.2561), + }, + Vertex { + position: (19.6148, 17.1865, 43.0399), + }, + Vertex { + position: (21.4017, 6.22714, 47.2396), + }, + Vertex { + position: (22.6656, -4.33246, 50.2101), + }, + Vertex { + position: (23.145, -14.2925, 51.3369), + }, + Vertex { + position: (0.831025, 17.1865, 46.7488), + }, + Vertex { + position: (0.831025, 6.22714, 51.3013), + }, + Vertex { + position: (0.831025, -4.33246, 54.5214), + }, + Vertex { + position: (0.831025, -14.2925, 55.7428), + }, + Vertex { + position: (-17.9528, 17.1865, 43.0399), + }, + Vertex { + position: (-19.7397, 6.22714, 47.2396), + }, + Vertex { + position: (-21.0035, -4.33246, 50.2101), + }, + Vertex { + position: (-21.4829, -14.2925, 51.3369), + }, + Vertex { + position: (-33.1474, 17.1865, 32.8703), + }, + Vertex { + position: (-36.3796, 6.22714, 36.1026), + }, + Vertex { + position: (-38.6659, -4.33246, 38.3889), + }, + Vertex { + position: (-39.5331, -14.2925, 39.2561), + }, + Vertex { + position: (-43.3169, 17.1865, 17.6758), + }, + Vertex { + position: (-47.5166, 6.22714, 19.4626), + }, + Vertex { + position: (-50.4871, -4.33246, 20.7265), + }, + Vertex { + position: (-51.6139, -14.2925, 21.2059), + }, + Vertex { + position: (-47.0258, 17.1865, -1.10804), + }, + Vertex { + position: (-51.5784, 6.22714, -1.10804), + }, + Vertex { + position: (-54.7984, -4.33246, -1.10804), + }, + Vertex { + position: (-56.0198, -14.2925, -1.10804), + }, + Vertex { + position: (-43.3169, 17.1865, -19.8919), + }, + Vertex { + position: (-47.5166, 6.22714, -21.6787), + }, + Vertex { + position: (-50.4871, -4.33246, -22.9426), + }, + Vertex { + position: (-51.6139, -14.2925, -23.422), + }, + Vertex { + position: (-33.1474, 17.1865, -35.0864), + }, + Vertex { + position: (-36.3796, 6.22714, -38.3187), + }, + Vertex { + position: (-38.6659, -4.33246, -40.6049), + }, + Vertex { + position: (-39.5331, -14.2925, -41.4721), + }, + Vertex { + position: (-17.9528, 17.1865, -45.256), + }, + Vertex { + position: (-19.7397, 6.22714, -49.4557), + }, + Vertex { + position: (-21.0035, -4.33246, -52.4262), + }, + Vertex { + position: (-21.4829, -14.2925, -53.5529), + }, + Vertex { + position: (0.831025, 17.1865, -48.9649), + }, + Vertex { + position: (0.831025, 6.22714, -53.5174), + }, + Vertex { + position: (0.831025, -4.33246, -56.7375), + }, + Vertex { + position: (0.831025, -14.2925, -57.9589), + }, + Vertex { + position: (19.6148, 17.1865, -45.256), + }, + Vertex { + position: (21.4017, 6.22714, -49.4557), + }, + Vertex { + position: (22.6656, -4.33246, -52.4262), + }, + Vertex { + position: (23.145, -14.2925, -53.5529), + }, + Vertex { + position: (34.8094, 17.1865, -35.0864), + }, + Vertex { + position: (38.0417, 6.22714, -38.3187), + }, + Vertex { + position: (40.3279, -4.33246, -40.6049), + }, + Vertex { + position: (41.1951, -14.2925, -41.4721), + }, + Vertex { + position: (44.979, 17.1865, -19.8919), + }, + Vertex { + position: (49.1787, 6.22714, -21.6787), + }, + Vertex { + position: (52.1492, -4.33246, -22.9426), + }, + Vertex { + position: (53.2759, -14.2925, -23.422), + }, + Vertex { + position: (55.4611, -22.7202, -1.10804), + }, + Vertex { + position: (50.5755, -28.9493, -1.10804), + }, + Vertex { + position: (45.6899, -33.1798, -1.10804), + }, + Vertex { + position: (43.4692, -35.6115, -1.10804), + }, + Vertex { + position: (51.2273, -22.7202, 20.3343), + }, + Vertex { + position: (46.7203, -28.9493, 18.4167), + }, + Vertex { + position: (42.2133, -33.1798, 16.4991), + }, + Vertex { + position: (40.1647, -35.6115, 15.6274), + }, + Vertex { + position: (39.6184, -22.7202, 37.6793), + }, + Vertex { + position: (36.1496, -28.9493, 34.2106), + }, + Vertex { + position: (32.6808, -33.1798, 30.7418), + }, + Vertex { + position: (31.1041, -35.6115, 29.165), + }, + Vertex { + position: (22.2733, -22.7202, 49.2882), + }, + Vertex { + position: (20.3557, -28.9493, 44.7813), + }, + Vertex { + position: (18.4381, -33.1798, 40.2743), + }, + Vertex { + position: (17.5665, -35.6115, 38.2256), + }, + Vertex { + position: (0.831025, -22.7202, 53.5221), + }, + Vertex { + position: (0.831025, -28.9493, 48.6365), + }, + Vertex { + position: (0.831025, -33.1798, 43.7508), + }, + Vertex { + position: (0.831025, -35.6115, 41.5301), + }, + Vertex { + position: (-20.6113, -22.7202, 49.2882), + }, + Vertex { + position: (-18.6937, -28.9493, 44.7813), + }, + Vertex { + position: (-16.7761, -33.1798, 40.2743), + }, + Vertex { + position: (-15.9044, -35.6115, 38.2256), + }, + Vertex { + position: (-37.9564, -22.7202, 37.6793), + }, + Vertex { + position: (-34.4876, -28.9493, 34.2106), + }, + Vertex { + position: (-31.0188, -33.1798, 30.7418), + }, + Vertex { + position: (-29.4421, -35.6115, 29.165), + }, + Vertex { + position: (-49.5653, -22.7202, 20.3343), + }, + Vertex { + position: (-45.0583, -28.9493, 18.4167), + }, + Vertex { + position: (-40.5513, -33.1798, 16.4991), + }, + Vertex { + position: (-38.5027, -35.6115, 15.6274), + }, + Vertex { + position: (-53.7991, -22.7202, -1.10804), + }, + Vertex { + position: (-48.9135, -28.9493, -1.10804), + }, + Vertex { + position: (-44.0279, -33.1798, -1.10804), + }, + Vertex { + position: (-41.8071, -35.6115, -1.10804), + }, + Vertex { + position: (-49.5653, -22.7202, -22.5504), + }, + Vertex { + position: (-45.0583, -28.9493, -20.6327), + }, + Vertex { + position: (-40.5513, -33.1798, -18.7151), + }, + Vertex { + position: (-38.5027, -35.6115, -17.8435), + }, + Vertex { + position: (-37.9564, -22.7202, -39.8954), + }, + Vertex { + position: (-34.4876, -28.9493, -36.4266), + }, + Vertex { + position: (-31.0188, -33.1798, -32.9578), + }, + Vertex { + position: (-29.4421, -35.6115, -31.3811), + }, + Vertex { + position: (-20.6113, -22.7202, -51.5043), + }, + Vertex { + position: (-18.6937, -28.9493, -46.9973), + }, + Vertex { + position: (-16.7761, -33.1798, -42.4903), + }, + Vertex { + position: (-15.9044, -35.6115, -40.4417), + }, + Vertex { + position: (0.831025, -22.7202, -55.7382), + }, + Vertex { + position: (0.831025, -28.9493, -50.8525), + }, + Vertex { + position: (0.831025, -33.1798, -45.9669), + }, + Vertex { + position: (0.831025, -35.6115, -43.7462), + }, + Vertex { + position: (22.2733, -22.7202, -51.5043), + }, + Vertex { + position: (20.3557, -28.9493, -46.9973), + }, + Vertex { + position: (18.4381, -33.1798, -42.4903), + }, + Vertex { + position: (17.5665, -35.6115, -40.4417), + }, + Vertex { + position: (39.6184, -22.7202, -39.8954), + }, + Vertex { + position: (36.1496, -28.9493, -36.4266), + }, + Vertex { + position: (32.6808, -33.1798, -32.9578), + }, + Vertex { + position: (31.1041, -35.6115, -31.3811), + }, + Vertex { + position: (51.2273, -22.7202, -22.5504), + }, + Vertex { + position: (46.7203, -28.9493, -20.6327), + }, + Vertex { + position: (42.2133, -33.1798, -18.7151), + }, + Vertex { + position: (40.1647, -35.6115, -17.8435), + }, + Vertex { + position: (42.5031, -37.1772, -1.10804), + }, + Vertex { + position: (37.3399, -38.5429, -1.10804), + }, + Vertex { + position: (24.5818, -39.5089, -1.10804), + }, + Vertex { + position: (0.831025, -39.8754, -1.10804), + }, + Vertex { + position: (39.2736, -37.1772, 15.2483), + }, + Vertex { + position: (34.5105, -38.5429, 13.2217), + }, + Vertex { + position: (22.7411, -39.5089, 8.21414), + }, + Vertex { + position: (30.4182, -37.1772, 28.4792), + }, + Vertex { + position: (26.7523, -38.5429, 24.8133), + }, + Vertex { + position: (17.6941, -39.5089, 15.755), + }, + Vertex { + position: (17.1873, -37.1772, 37.3345), + }, + Vertex { + position: (15.1608, -38.5429, 32.5714), + }, + Vertex { + position: (10.1532, -39.5089, 20.8021), + }, + Vertex { + position: (0.831025, -37.1772, 40.5641), + }, + Vertex { + position: (0.831025, -38.5429, 35.4009), + }, + Vertex { + position: (0.831025, -39.5089, 22.6427), + }, + Vertex { + position: (-15.5253, -37.1772, 37.3345), + }, + Vertex { + position: (-13.4987, -38.5429, 32.5714), + }, + Vertex { + position: (-8.49115, -39.5089, 20.8021), + }, + Vertex { + position: (-28.7562, -37.1772, 28.4792), + }, + Vertex { + position: (-25.0903, -38.5429, 24.8133), + }, + Vertex { + position: (-16.032, -39.5089, 15.755), + }, + Vertex { + position: (-37.6115, -37.1772, 15.2483), + }, + Vertex { + position: (-32.8484, -38.5429, 13.2217), + }, + Vertex { + position: (-21.0791, -39.5089, 8.21414), + }, + Vertex { + position: (-40.8411, -37.1772, -1.10804), + }, + Vertex { + position: (-35.6779, -38.5429, -1.10804), + }, + Vertex { + position: (-22.9198, -39.5089, -1.10804), + }, + Vertex { + position: (-37.6115, -37.1772, -17.4643), + }, + Vertex { + position: (-32.8484, -38.5429, -15.4378), + }, + Vertex { + position: (-21.0791, -39.5089, -10.4302), + }, + Vertex { + position: (-28.7562, -37.1772, -30.6952), + }, + Vertex { + position: (-25.0903, -38.5429, -27.0294), + }, + Vertex { + position: (-16.032, -39.5089, -17.9711), + }, + Vertex { + position: (-15.5253, -37.1772, -39.5506), + }, + Vertex { + position: (-13.4987, -38.5429, -34.7875), + }, + Vertex { + position: (-8.49115, -39.5089, -23.0181), + }, + Vertex { + position: (0.831025, -37.1772, -42.7802), + }, + Vertex { + position: (0.831025, -38.5429, -37.6169), + }, + Vertex { + position: (0.831025, -39.5089, -24.8588), + }, + Vertex { + position: (17.1873, -37.1772, -39.5506), + }, + Vertex { + position: (15.1608, -38.5429, -34.7875), + }, + Vertex { + position: (10.1532, -39.5089, -23.0181), + }, + Vertex { + position: (30.4182, -37.1772, -30.6952), + }, + Vertex { + position: (26.7523, -38.5429, -27.0294), + }, + Vertex { + position: (17.6941, -39.5089, -17.9711), + }, + Vertex { + position: (39.2736, -37.1772, -17.4643), + }, + Vertex { + position: (34.5105, -38.5429, -15.4378), + }, + Vertex { + position: (22.7411, -39.5089, -10.4302), + }, + Vertex { + position: (-44.6497, 17.6861, -1.10804), + }, + Vertex { + position: (-57.9297, 17.5862, -1.10804), + }, + Vertex { + position: (-67.7453, 16.8867, -1.10804), + }, + Vertex { + position: (-73.8301, 14.9879, -1.10804), + }, + Vertex { + position: (-75.9176, 11.2904, -1.10804), + }, + Vertex { + position: (-44.2055, 18.6855, 3.68876), + }, + Vertex { + position: (-58.3252, 18.5699, 3.68876), + }, + Vertex { + position: (-68.6891, 17.7611, 3.68876), + }, + Vertex { + position: (-75.0724, 15.5657, 3.68876), + }, + Vertex { + position: (-77.2501, 11.2904, 3.68876), + }, + Vertex { + position: (-43.2284, 20.884, 5.28769), + }, + Vertex { + position: (-59.1955, 20.7341, 5.28769), + }, + Vertex { + position: (-70.7655, 19.6848, 5.28769), + }, + Vertex { + position: (-77.8053, 16.8367, 5.28769), + }, + Vertex { + position: (-80.1814, 11.2904, 5.28769), + }, + Vertex { + position: (-42.2513, 23.0825, 3.68876), + }, + Vertex { + position: (-60.0657, 22.8983, 3.68876), + }, + Vertex { + position: (-72.8419, 21.6085, 3.68876), + }, + Vertex { + position: (-80.5381, 18.1077, 3.68876), + }, + Vertex { + position: (-83.1128, 11.2904, 3.68876), + }, + Vertex { + position: (-41.8071, 24.0819, -1.10804), + }, + Vertex { + position: (-60.4613, 23.882, -1.10804), + }, + Vertex { + position: (-73.7857, 22.4829, -1.10804), + }, + Vertex { + position: (-81.7804, 18.6855, -1.10804), + }, + Vertex { + position: (-84.4453, 11.2904, -1.10804), + }, + Vertex { + position: (-42.2513, 23.0825, -5.90483), + }, + Vertex { + position: (-60.0657, 22.8983, -5.90483), + }, + Vertex { + position: (-72.8419, 21.6085, -5.90483), + }, + Vertex { + position: (-80.5381, 18.1077, -5.90483), + }, + Vertex { + position: (-83.1128, 11.2904, -5.90483), + }, + Vertex { + position: (-43.2284, 20.884, -7.50376), + }, + Vertex { + position: (-59.1955, 20.7341, -7.50376), + }, + Vertex { + position: (-70.7655, 19.6848, -7.50376), + }, + Vertex { + position: (-77.8053, 16.8367, -7.50376), + }, + Vertex { + position: (-80.1814, 11.2904, -7.50376), + }, + Vertex { + position: (-44.2055, 18.6855, -5.90483), + }, + Vertex { + position: (-58.3252, 18.5699, -5.90483), + }, + Vertex { + position: (-68.6891, 17.7611, -5.90483), + }, + Vertex { + position: (-75.0724, 15.5657, -5.90483), + }, + Vertex { + position: (-77.2501, 11.2904, -5.90483), + }, + Vertex { + position: (-74.8073, 5.4943, -1.10804), + }, + Vertex { + position: (-71.2985, -1.50103, -1.10804), + }, + Vertex { + position: (-65.1248, -8.49634, -1.10804), + }, + Vertex { + position: (-56.0198, -14.2925, -1.10804), + }, + Vertex { + position: (-76.0183, 4.93477, 3.68876), + }, + Vertex { + position: (-72.159, -2.35462, 3.68876), + }, + Vertex { + position: (-65.4267, -9.55033, 3.68876), + }, + Vertex { + position: (-55.5757, -15.6249, 3.68876), + }, + Vertex { + position: (-78.6824, 3.70383, 5.28769), + }, + Vertex { + position: (-74.0522, -4.23253, 5.28769), + }, + Vertex { + position: (-66.0909, -11.8691, 5.28769), + }, + Vertex { + position: (-54.5986, -18.5563, 5.28769), + }, + Vertex { + position: (-81.3466, 2.47288, 3.68876), + }, + Vertex { + position: (-75.9454, -6.11044, 3.68876), + }, + Vertex { + position: (-66.755, -14.1878, 3.68876), + }, + Vertex { + position: (-53.6214, -21.4877, 3.68876), + }, + Vertex { + position: (-82.5576, 1.91336, -1.10804), + }, + Vertex { + position: (-76.8059, -6.96404, -1.10804), + }, + Vertex { + position: (-67.0569, -15.2418, -1.10804), + }, + Vertex { + position: (-53.1773, -22.8201, -1.10804), + }, + Vertex { + position: (-81.3466, 2.47288, -5.90483), + }, + Vertex { + position: (-75.9454, -6.11044, -5.90483), + }, + Vertex { + position: (-66.755, -14.1878, -5.90483), + }, + Vertex { + position: (-53.6214, -21.4877, -5.90483), + }, + Vertex { + position: (-78.6824, 3.70383, -7.50376), + }, + Vertex { + position: (-74.0522, -4.23253, -7.50376), + }, + Vertex { + position: (-66.0909, -11.8691, -7.50376), + }, + Vertex { + position: (-54.5986, -18.5563, -7.50376), + }, + Vertex { + position: (-76.0183, 4.93477, -5.90483), + }, + Vertex { + position: (-72.159, -2.35462, -5.90483), + }, + Vertex { + position: (-65.4267, -9.55033, -5.90483), + }, + Vertex { + position: (-55.5757, -15.6249, -5.90483), + }, + Vertex { + position: (49.1543, 0.630882, -1.10804), + }, + Vertex { + position: (62.7896, 3.76212, -1.10804), + }, + Vertex { + position: (68.6967, 11.2904, -1.10804), + }, + Vertex { + position: (71.939, 20.4176, -1.10804), + }, + Vertex { + position: (77.5797, 28.3457, -1.10804), + }, + Vertex { + position: (49.1543, -3.03333, 9.4449), + }, + Vertex { + position: (63.8305, 1.04519, 8.42059), + }, + Vertex { + position: (70.0292, 9.70814, 6.1671), + }, + Vertex { + position: (73.5629, 19.8451, 3.91361), + }, + Vertex { + position: (80.2446, 28.3457, 2.88929), + }, + Vertex { + position: (49.1543, -11.0946, 12.9626), + }, + Vertex { + position: (66.1207, -4.93206, 11.5968), + }, + Vertex { + position: (72.9605, 6.22714, 8.59214), + }, + Vertex { + position: (77.1355, 18.5855, 5.58749), + }, + Vertex { + position: (86.1073, 28.3457, 4.22173), + }, + Vertex { + position: (49.1543, -19.1559, 9.4449), + }, + Vertex { + position: (68.4108, -10.9093, 8.42059), + }, + Vertex { + position: (75.8919, 2.74614, 6.1671), + }, + Vertex { + position: (80.7081, 17.326, 3.91361), + }, + Vertex { + position: (91.97, 28.3457, 2.88929), + }, + Vertex { + position: (49.1543, -22.8201, -1.10804), + }, + Vertex { + position: (69.4518, -13.6262, -1.10804), + }, + Vertex { + position: (77.2244, 1.16386, -1.10804), + }, + Vertex { + position: (82.3321, 16.7534, -1.10804), + }, + Vertex { + position: (94.6349, 28.3457, -1.10804), + }, + Vertex { + position: (49.1543, -19.1559, -11.661), + }, + Vertex { + position: (68.4108, -10.9093, -10.6367), + }, + Vertex { + position: (75.8919, 2.74614, -8.38317), + }, + Vertex { + position: (80.7081, 17.326, -6.12968), + }, + Vertex { + position: (91.97, 28.3457, -5.10536), + }, + Vertex { + position: (49.1543, -11.0946, -15.1786), + }, + Vertex { + position: (66.1207, -4.93206, -13.8129), + }, + Vertex { + position: (72.9605, 6.22714, -10.8082), + }, + Vertex { + position: (77.1355, 18.5855, -7.80356), + }, + Vertex { + position: (86.1073, 28.3457, -6.4378), + }, + Vertex { + position: (49.1543, -3.03333, -11.661), + }, + Vertex { + position: (63.8305, 1.04519, -10.6367), + }, + Vertex { + position: (70.0292, 9.70814, -8.38317), + }, + Vertex { + position: (73.5629, 19.8451, -6.12968), + }, + Vertex { + position: (80.2446, 28.3457, -5.10536), + }, + Vertex { + position: (79.6227, 29.5449, -1.10804), + }, + Vertex { + position: (81.1329, 29.9446, -1.10804), + }, + Vertex { + position: (81.577, 29.5449, -1.10804), + }, + Vertex { + position: (80.4222, 28.3457, -1.10804), + }, + Vertex { + position: (82.4767, 29.6034, 2.63946), + }, + Vertex { + position: (83.8116, 30.0383, 2.08983), + }, + Vertex { + position: (83.8515, 29.6268, 1.54019), + }, + Vertex { + position: (82.1988, 28.3457, 1.29036), + }, + Vertex { + position: (88.7555, 29.7322, 3.88862), + }, + Vertex { + position: (89.7049, 30.2444, 3.15578), + }, + Vertex { + position: (88.8555, 29.8072, 2.42294), + }, + Vertex { + position: (86.1073, 28.3457, 2.08983), + }, + Vertex { + position: (95.0343, 29.8611, 2.63946), + }, + Vertex { + position: (95.5982, 30.4505, 2.08983), + }, + Vertex { + position: (93.8594, 29.9875, 1.54019), + }, + Vertex { + position: (90.0158, 28.3457, 1.29036), + }, + Vertex { + position: (97.8883, 29.9196, -1.10804), + }, + Vertex { + position: (98.2769, 30.5442, -1.10804), + }, + Vertex { + position: (96.1339, 30.0695, -1.10804), + }, + Vertex { + position: (91.7924, 28.3457, -1.10804), + }, + Vertex { + position: (95.0343, 29.8611, -4.85553), + }, + Vertex { + position: (95.5982, 30.4505, -4.3059), + }, + Vertex { + position: (93.8594, 29.9875, -3.75626), + }, + Vertex { + position: (90.0158, 28.3457, -3.50643), + }, + Vertex { + position: (88.7555, 29.7322, -6.10469), + }, + Vertex { + position: (89.7049, 30.2444, -5.37185), + }, + Vertex { + position: (88.8555, 29.8072, -4.63901), + }, + Vertex { + position: (86.1073, 28.3457, -4.3059), + }, + Vertex { + position: (82.4767, 29.6034, -4.85553), + }, + Vertex { + position: (83.8116, 30.0383, -4.3059), + }, + Vertex { + position: (83.8515, 29.6268, -3.75626), + }, + Vertex { + position: (82.1988, 28.3457, -3.50643), + }, + Vertex { + position: (0.831025, 49.6647, -1.10804), + }, + Vertex { + position: (10.5134, 48.2657, -1.10804), + }, + Vertex { + position: (10.0693, 44.868, -1.10804), + }, + Vertex { + position: (6.42728, 40.6708, -1.10804), + }, + Vertex { + position: (6.51611, 36.8733, -1.10804), + }, + Vertex { + position: (9.76642, 48.2657, 2.70243), + }, + Vertex { + position: (9.35632, 44.868, 2.52698), + }, + Vertex { + position: (5.9947, 40.6708, 1.09187), + }, + Vertex { + position: (6.07552, 36.8733, 1.12336), + }, + Vertex { + position: (7.71453, 48.2657, 5.77547), + }, + Vertex { + position: (7.39819, 44.868, 5.45913), + }, + Vertex { + position: (4.80736, 40.6708, 2.8683), + }, + Vertex { + position: (4.86744, 36.8733, 2.92838), + }, + Vertex { + position: (4.64149, 48.2657, 7.82736), + }, + Vertex { + position: (4.46604, 44.868, 7.41726), + }, + Vertex { + position: (3.03093, 40.6708, 4.05564), + }, + Vertex { + position: (3.06242, 36.8733, 4.13646), + }, + Vertex { + position: (0.831025, 48.2657, 8.57438), + }, + Vertex { + position: (0.831025, 44.868, 8.13023), + }, + Vertex { + position: (0.831025, 40.6708, 4.48822), + }, + Vertex { + position: (0.831025, 36.8733, 4.57705), + }, + Vertex { + position: (-2.97944, 48.2657, 7.82736), + }, + Vertex { + position: (-2.80399, 44.868, 7.41726), + }, + Vertex { + position: (-1.36888, 40.6708, 4.05564), + }, + Vertex { + position: (-1.40037, 36.8733, 4.13646), + }, + Vertex { + position: (-6.05248, 48.2657, 5.77547), + }, + Vertex { + position: (-5.73614, 44.868, 5.45913), + }, + Vertex { + position: (-3.14531, 40.6708, 2.8683), + }, + Vertex { + position: (-3.20539, 36.8733, 2.92838), + }, + Vertex { + position: (-8.10437, 48.2657, 2.70243), + }, + Vertex { + position: (-7.69427, 44.868, 2.52698), + }, + Vertex { + position: (-4.33265, 40.6708, 1.09187), + }, + Vertex { + position: (-4.41347, 36.8733, 1.12336), + }, + Vertex { + position: (-8.85139, 48.2657, -1.10804), + }, + Vertex { + position: (-8.40724, 44.868, -1.10804), + }, + Vertex { + position: (-4.76523, 40.6708, -1.10804), + }, + Vertex { + position: (-4.85406, 36.8733, -1.10804), + }, + Vertex { + position: (-8.10437, 48.2657, -4.9185), + }, + Vertex { + position: (-7.69427, 44.868, -4.74305), + }, + Vertex { + position: (-4.33265, 40.6708, -3.30794), + }, + Vertex { + position: (-4.41347, 36.8733, -3.33943), + }, + Vertex { + position: (-6.05248, 48.2657, -7.99154), + }, + Vertex { + position: (-5.73614, 44.868, -7.6752), + }, + Vertex { + position: (-3.14531, 40.6708, -5.08437), + }, + Vertex { + position: (-3.20539, 36.8733, -5.14445), + }, + Vertex { + position: (-2.97944, 48.2657, -10.0434), + }, + Vertex { + position: (-2.80399, 44.868, -9.63333), + }, + Vertex { + position: (-1.36888, 40.6708, -6.27171), + }, + Vertex { + position: (-1.40037, 36.8733, -6.35253), + }, + Vertex { + position: (0.831025, 48.2657, -10.7904), + }, + Vertex { + position: (0.831025, 44.868, -10.3463), + }, + Vertex { + position: (0.831025, 40.6708, -6.70429), + }, + Vertex { + position: (0.831025, 36.8733, -6.79312), + }, + Vertex { + position: (4.64149, 48.2657, -10.0434), + }, + Vertex { + position: (4.46604, 44.868, -9.63333), + }, + Vertex { + position: (3.03093, 40.6708, -6.27171), + }, + Vertex { + position: (3.06242, 36.8733, -6.35253), + }, + Vertex { + position: (7.71453, 48.2657, -7.99154), + }, + Vertex { + position: (7.39819, 44.868, -7.6752), + }, + Vertex { + position: (4.80736, 40.6708, -5.08437), + }, + Vertex { + position: (4.86744, 36.8733, -5.14445), + }, + Vertex { + position: (9.76642, 48.2657, -4.9185), + }, + Vertex { + position: (9.35632, 44.868, -4.74305), + }, + Vertex { + position: (5.9947, 40.6708, -3.30794), + }, + Vertex { + position: (6.07552, 36.8733, -3.33943), + }, + Vertex { + position: (13.8001, 34.3417, -1.10804), + }, + Vertex { + position: (24.282, 32.6095, -1.10804), + }, + Vertex { + position: (33.6979, 30.8773, -1.10804), + }, + Vertex { + position: (37.7841, 28.3457, -1.10804), + }, + Vertex { + position: (12.795, 34.3417, 3.98234), + }, + Vertex { + position: (22.4646, 32.6095, 8.09647), + }, + Vertex { + position: (31.1507, 30.8773, 11.7922), + }, + Vertex { + position: (34.9202, 28.3457, 13.396), + }, + Vertex { + position: (10.0391, 34.3417, 8.10003), + }, + Vertex { + position: (17.4812, 32.6095, 15.5422), + }, + Vertex { + position: (24.1665, 30.8773, 22.2275), + }, + Vertex { + position: (27.0677, 28.3457, 25.1286), + }, + Vertex { + position: (5.9214, 34.3417, 10.856), + }, + Vertex { + position: (10.0355, 32.6095, 20.5255), + }, + Vertex { + position: (13.7313, 30.8773, 29.2117), + }, + Vertex { + position: (15.3351, 28.3457, 32.9812), + }, + Vertex { + position: (0.831025, 34.3417, 11.8611), + }, + Vertex { + position: (0.831025, 32.6095, 22.3429), + }, + Vertex { + position: (0.831025, 30.8773, 31.7589), + }, + Vertex { + position: (0.831025, 28.3457, 35.845), + }, + Vertex { + position: (-4.25935, 34.3417, 10.856), + }, + Vertex { + position: (-8.37348, 32.6095, 20.5255), + }, + Vertex { + position: (-12.0692, 30.8773, 29.2117), + }, + Vertex { + position: (-13.673, 28.3457, 32.9812), + }, + Vertex { + position: (-8.37704, 34.3417, 8.10003), + }, + Vertex { + position: (-15.8192, 32.6095, 15.5422), + }, + Vertex { + position: (-22.5045, 30.8773, 22.2275), + }, + Vertex { + position: (-25.4056, 28.3457, 25.1286), + }, + Vertex { + position: (-11.133, 34.3417, 3.98234), + }, + Vertex { + position: (-20.8025, 32.6095, 8.09647), + }, + Vertex { + position: (-29.4887, 30.8773, 11.7922), + }, + Vertex { + position: (-33.2582, 28.3457, 13.396), + }, + Vertex { + position: (-12.1381, 34.3417, -1.10804), + }, + Vertex { + position: (-22.62, 32.6095, -1.10804), + }, + Vertex { + position: (-32.0359, 30.8773, -1.10804), + }, + Vertex { + position: (-36.122, 28.3457, -1.10804), + }, + Vertex { + position: (-11.133, 34.3417, -6.19841), + }, + Vertex { + position: (-20.8025, 32.6095, -10.3125), + }, + Vertex { + position: (-29.4887, 30.8773, -14.0083), + }, + Vertex { + position: (-33.2582, 28.3457, -15.6121), + }, + Vertex { + position: (-8.37704, 34.3417, -10.3161), + }, + Vertex { + position: (-15.8192, 32.6095, -17.7582), + }, + Vertex { + position: (-22.5045, 30.8773, -24.4435), + }, + Vertex { + position: (-25.4056, 28.3457, -27.3447), + }, + Vertex { + position: (-4.25935, 34.3417, -13.072), + }, + Vertex { + position: (-8.37348, 32.6095, -22.7416), + }, + Vertex { + position: (-12.0692, 30.8773, -31.4277), + }, + Vertex { + position: (-13.673, 28.3457, -35.1972), + }, + Vertex { + position: (0.831025, 34.3417, -14.0771), + }, + Vertex { + position: (0.831025, 32.6095, -24.559), + }, + Vertex { + position: (0.831025, 30.8773, -33.9749), + }, + Vertex { + position: (0.831025, 28.3457, -38.0611), + }, + Vertex { + position: (5.9214, 34.3417, -13.072), + }, + Vertex { + position: (10.0355, 32.6095, -22.7416), + }, + Vertex { + position: (13.7313, 30.8773, -31.4277), + }, + Vertex { + position: (15.3351, 28.3457, -35.1972), + }, + Vertex { + position: (10.0391, 34.3417, -10.3161), + }, + Vertex { + position: (17.4812, 32.6095, -17.7582), + }, + Vertex { + position: (24.1665, 30.8773, -24.4435), + }, + Vertex { + position: (27.0677, 28.3457, -27.3447), + }, + Vertex { + position: (12.795, 34.3417, -6.19841), + }, + Vertex { + position: (22.4646, 32.6095, -10.3125), + }, + Vertex { + position: (31.1507, 30.8773, -14.0083), + }, + Vertex { + position: (34.9202, 28.3457, -15.6121), + }, ]; const NORMALS: [Normal; 531] = [ - Normal { normal: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices - // start at 1 - Normal { normal: (-0.966742, -0.255752, 0.0) }, - Normal { normal: (-0.966824, 0.255443, 0.0) }, - Normal { normal: (-0.092052, 0.995754, 0.0) }, - Normal { normal: (0.68205, 0.731305, 0.0) }, - Normal { normal: (0.870301, 0.492521, -0.0) }, - Normal { normal: (-0.893014, -0.256345, -0.369882) }, - Normal { normal: (-0.893437, 0.255997, -0.369102) }, - Normal { normal: (-0.0838771, 0.995843, -0.0355068) }, - Normal { normal: (0.629724, 0.73186, 0.260439) }, - Normal { normal: (0.803725, 0.49337, 0.332584) }, - Normal { normal: (-0.683407, -0.256729, -0.683407) }, - Normal { normal: (-0.683531, 0.256067, -0.683531) }, - Normal { normal: (-0.0649249, 0.995776, -0.0649248) }, - Normal { normal: (0.481398, 0.732469, 0.481398) }, - Normal { normal: (0.614804, 0.493997, 0.614804) }, - Normal { normal: (-0.369882, -0.256345, -0.893014) }, - Normal { normal: (-0.369102, 0.255997, -0.893437) }, - Normal { normal: (-0.0355067, 0.995843, -0.0838772) }, - Normal { normal: (0.260439, 0.73186, 0.629724) }, - Normal { normal: (0.332584, 0.49337, 0.803725) }, - Normal { normal: (-0.00284834, -0.257863, -0.966177) }, - Normal { normal: (-0.00192311, 0.254736, -0.967009) }, - Normal { normal: (-0.000266114, 0.995734, -0.0922702) }, - Normal { normal: (0.0, 0.731295, 0.682061) }, - Normal { normal: (0.0, 0.492521, 0.870301) }, - Normal { normal: (0.379058, -0.3593, -0.852771) }, - Normal { normal: (0.37711, 0.149086, -0.914091) }, - Normal { normal: (0.0275022, 0.992081, -0.122551) }, - Normal { normal: (-0.26101, 0.726762, 0.635367) }, - Normal { normal: (-0.332485, 0.492546, 0.804271) }, - Normal { normal: (0.663548, -0.410791, -0.625264) }, - Normal { normal: (0.712664, 0.0737216, -0.697621) }, - Normal { normal: (0.0997268, 0.987509, -0.121984) }, - Normal { normal: (-0.48732, 0.723754, 0.488568) }, - Normal { normal: (-0.615242, 0.492602, 0.615484) }, - Normal { normal: (0.880028, -0.332908, -0.338709) }, - Normal { normal: (0.917276, 0.167113, -0.361493) }, - Normal { normal: (0.113584, 0.992365, -0.0480695) }, - Normal { normal: (-0.63415, 0.727508, 0.261889) }, - Normal { normal: (-0.804126, 0.492634, 0.332705) }, - Normal { normal: (0.96669, -0.255738, 0.0104537) }, - Normal { normal: (0.967442, 0.252962, 0.00810329) }, - Normal { normal: (0.0934365, 0.995624, 0.00128063) }, - Normal { normal: (-0.682167, 0.731196, -0.00034353) }, - Normal { normal: (-0.870322, 0.492483, -0.0) }, - Normal { normal: (0.893014, -0.256345, 0.369882) }, - Normal { normal: (0.893437, 0.255997, 0.369102) }, - Normal { normal: (0.0838768, 0.995843, 0.0355066) }, - Normal { normal: (-0.629724, 0.73186, -0.260439) }, - Normal { normal: (-0.803725, 0.49337, -0.332584) }, - Normal { normal: (0.683407, -0.256729, 0.683407) }, - Normal { normal: (0.683531, 0.256067, 0.683531) }, - Normal { normal: (0.0649249, 0.995776, 0.0649249) }, - Normal { normal: (-0.481398, 0.732469, -0.481398) }, - Normal { normal: (-0.614804, 0.493997, -0.614804) }, - Normal { normal: (0.369882, -0.256345, 0.893014) }, - Normal { normal: (0.369102, 0.255997, 0.893437) }, - Normal { normal: (0.0355067, 0.995843, 0.083877) }, - Normal { normal: (-0.260439, 0.73186, -0.629724) }, - Normal { normal: (-0.332584, 0.49337, -0.803725) }, - Normal { normal: (0.0, -0.255752, 0.966742) }, - Normal { normal: (0.0, 0.255443, 0.966824) }, - Normal { normal: (0.0, 0.995754, 0.092052) }, - Normal { normal: (0.0, 0.731305, -0.68205) }, - Normal { normal: (-0.0, 0.492521, -0.870301) }, - Normal { normal: (-0.369882, -0.256345, 0.893014) }, - Normal { normal: (-0.369102, 0.255996, 0.893437) }, - Normal { normal: (-0.0355068, 0.995843, 0.0838771) }, - Normal { normal: (0.260439, 0.73186, -0.629724) }, - Normal { normal: (0.332584, 0.49337, -0.803725) }, - Normal { normal: (-0.683407, -0.256729, 0.683407) }, - Normal { normal: (-0.683531, 0.256067, 0.683531) }, - Normal { normal: (-0.0649249, 0.995776, 0.064925) }, - Normal { normal: (0.481398, 0.732469, -0.481398) }, - Normal { normal: (0.614804, 0.493997, -0.614804) }, - Normal { normal: (-0.893014, -0.256345, 0.369882) }, - Normal { normal: (-0.893437, 0.255997, 0.369102) }, - Normal { normal: (-0.0838767, 0.995843, 0.0355066) }, - Normal { normal: (0.629724, 0.73186, -0.260439) }, - Normal { normal: (0.803725, 0.49337, -0.332584) }, - Normal { normal: (0.915321, 0.402725, 0.0) }, - Normal { normal: (0.941808, 0.336151, -0.0) }, - Normal { normal: (0.97869, 0.205342, 0.0) }, - Normal { normal: (0.997804, -0.0662397, 0.0) }, - Normal { normal: (0.845438, 0.403546, 0.349835) }, - Normal { normal: (0.869996, 0.336859, 0.360047) }, - Normal { normal: (0.904193, 0.205791, 0.37428) }, - Normal { normal: (0.921879, -0.0663697, 0.381752) }, - Normal { normal: (0.646802, 0.404096, 0.646802) }, - Normal { normal: (0.665655, 0.337351, 0.665655) }, - Normal { normal: (0.691923, 0.20612, 0.691923) }, - Normal { normal: (0.705542, -0.0664796, 0.705543) }, - Normal { normal: (0.349835, 0.403546, 0.845438) }, - Normal { normal: (0.360047, 0.336859, 0.869996) }, - Normal { normal: (0.37428, 0.205791, 0.904193) }, - Normal { normal: (0.381752, -0.0663697, 0.921879) }, - Normal { normal: (-0.0, 0.402725, 0.915321) }, - Normal { normal: (0.0, 0.336151, 0.941808) }, - Normal { normal: (-0.0, 0.205342, 0.97869) }, - Normal { normal: (-0.0, -0.0662397, 0.997804) }, - Normal { normal: (-0.349835, 0.403546, 0.845438) }, - Normal { normal: (-0.360047, 0.336859, 0.869996) }, - Normal { normal: (-0.37428, 0.205791, 0.904193) }, - Normal { normal: (-0.381752, -0.0663697, 0.921879) }, - Normal { normal: (-0.646802, 0.404096, 0.646802) }, - Normal { normal: (-0.665655, 0.337351, 0.665655) }, - Normal { normal: (-0.691923, 0.20612, 0.691923) }, - Normal { normal: (-0.705543, -0.0664796, 0.705543) }, - Normal { normal: (-0.845438, 0.403546, 0.349835) }, - Normal { normal: (-0.869996, 0.336859, 0.360047) }, - Normal { normal: (-0.904193, 0.205791, 0.37428) }, - Normal { normal: (-0.921879, -0.0663697, 0.381752) }, - Normal { normal: (-0.915321, 0.402725, -0.0) }, - Normal { normal: (-0.941808, 0.336151, -0.0) }, - Normal { normal: (-0.97869, 0.205342, -0.0) }, - Normal { normal: (-0.997804, -0.0662397, -0.0) }, - Normal { normal: (-0.845438, 0.403546, -0.349835) }, - Normal { normal: (-0.869996, 0.336859, -0.360047) }, - Normal { normal: (-0.904193, 0.205791, -0.37428) }, - Normal { normal: (-0.921879, -0.0663697, -0.381752) }, - Normal { normal: (-0.646802, 0.404096, -0.646802) }, - Normal { normal: (-0.665655, 0.337351, -0.665655) }, - Normal { normal: (-0.691923, 0.20612, -0.691923) }, - Normal { normal: (-0.705542, -0.0664796, -0.705543) }, - Normal { normal: (-0.349835, 0.403546, -0.845438) }, - Normal { normal: (-0.360047, 0.336859, -0.869996) }, - Normal { normal: (-0.37428, 0.205791, -0.904193) }, - Normal { normal: (-0.381752, -0.0663697, -0.921879) }, - Normal { normal: (0.0, 0.402725, -0.915321) }, - Normal { normal: (-0.0, 0.336151, -0.941808) }, - Normal { normal: (0.0, 0.205342, -0.97869) }, - Normal { normal: (0.0, -0.0662397, -0.997804) }, - Normal { normal: (0.349835, 0.403546, -0.845438) }, - Normal { normal: (0.360047, 0.336859, -0.869996) }, - Normal { normal: (0.37428, 0.205791, -0.904193) }, - Normal { normal: (0.381752, -0.0663697, -0.921879) }, - Normal { normal: (0.646802, 0.404096, -0.646802) }, - Normal { normal: (0.665655, 0.337351, -0.665655) }, - Normal { normal: (0.691923, 0.20612, -0.691923) }, - Normal { normal: (0.705543, -0.0664796, -0.705542) }, - Normal { normal: (0.845438, 0.403546, -0.349835) }, - Normal { normal: (0.869996, 0.336859, -0.360047) }, - Normal { normal: (0.904193, 0.205791, -0.37428) }, - Normal { normal: (0.921879, -0.0663697, -0.381752) }, - Normal { normal: (0.900182, -0.435513, -0.0) }, - Normal { normal: (0.729611, -0.683863, -0.0) }, - Normal { normal: (0.693951, -0.720022, -0.0) }, - Normal { normal: (0.79395, -0.607984, 0.0) }, - Normal { normal: (0.831437, -0.43618, 0.344179) }, - Normal { normal: (0.673512, -0.684665, 0.278594) }, - Normal { normal: (0.640399, -0.720924, 0.264874) }, - Normal { normal: (0.732949, -0.608996, 0.303166) }, - Normal { normal: (0.636092, -0.436777, 0.636092) }, - Normal { normal: (0.514965, -0.685289, 0.514965) }, - Normal { normal: (0.489651, -0.721446, 0.489651) }, - Normal { normal: (0.560555, -0.609554, 0.560555) }, - Normal { normal: (0.344179, -0.43618, 0.831437) }, - Normal { normal: (0.278594, -0.684665, 0.673512) }, - Normal { normal: (0.264874, -0.720924, 0.640399) }, - Normal { normal: (0.303166, -0.608996, 0.732949) }, - Normal { normal: (0.0, -0.435513, 0.900182) }, - Normal { normal: (-0.0, -0.683863, 0.729611) }, - Normal { normal: (0.0, -0.720022, 0.693951) }, - Normal { normal: (-0.0, -0.607984, 0.79395) }, - Normal { normal: (-0.344179, -0.43618, 0.831437) }, - Normal { normal: (-0.278594, -0.684665, 0.673512) }, - Normal { normal: (-0.264874, -0.720924, 0.640399) }, - Normal { normal: (-0.303166, -0.608996, 0.732949) }, - Normal { normal: (-0.636092, -0.436777, 0.636092) }, - Normal { normal: (-0.514965, -0.685289, 0.514965) }, - Normal { normal: (-0.489651, -0.721446, 0.489651) }, - Normal { normal: (-0.560555, -0.609554, 0.560555) }, - Normal { normal: (-0.831437, -0.43618, 0.344179) }, - Normal { normal: (-0.673512, -0.684665, 0.278595) }, - Normal { normal: (-0.640399, -0.720924, 0.264874) }, - Normal { normal: (-0.732949, -0.608996, 0.303166) }, - Normal { normal: (-0.900182, -0.435513, -0.0) }, - Normal { normal: (-0.729611, -0.683863, -0.0) }, - Normal { normal: (-0.693951, -0.720022, 0.0) }, - Normal { normal: (-0.79395, -0.607983, -0.0) }, - Normal { normal: (-0.831437, -0.43618, -0.344179) }, - Normal { normal: (-0.673512, -0.684665, -0.278594) }, - Normal { normal: (-0.640399, -0.720924, -0.264874) }, - Normal { normal: (-0.732949, -0.608996, -0.303166) }, - Normal { normal: (-0.636092, -0.436777, -0.636092) }, - Normal { normal: (-0.514965, -0.685289, -0.514965) }, - Normal { normal: (-0.489651, -0.721446, -0.489651) }, - Normal { normal: (-0.560555, -0.609554, -0.560555) }, - Normal { normal: (-0.344179, -0.43618, -0.831437) }, - Normal { normal: (-0.278594, -0.684665, -0.673512) }, - Normal { normal: (-0.264874, -0.720924, -0.640399) }, - Normal { normal: (-0.303166, -0.608996, -0.732949) }, - Normal { normal: (-0.0, -0.435513, -0.900182) }, - Normal { normal: (0.0, -0.683863, -0.729611) }, - Normal { normal: (-0.0, -0.720022, -0.693951) }, - Normal { normal: (0.0, -0.607984, -0.79395) }, - Normal { normal: (0.344179, -0.43618, -0.831437) }, - Normal { normal: (0.278594, -0.684665, -0.673512) }, - Normal { normal: (0.264874, -0.720924, -0.640399) }, - Normal { normal: (0.303167, -0.608996, -0.732949) }, - Normal { normal: (0.636092, -0.436777, -0.636092) }, - Normal { normal: (0.514965, -0.685289, -0.514965) }, - Normal { normal: (0.489651, -0.721446, -0.489651) }, - Normal { normal: (0.560555, -0.609554, -0.560555) }, - Normal { normal: (0.831437, -0.43618, -0.344179) }, - Normal { normal: (0.673512, -0.684665, -0.278595) }, - Normal { normal: (0.640399, -0.720924, -0.264874) }, - Normal { normal: (0.732949, -0.608996, -0.303166) }, - Normal { normal: (0.62386, -0.781536, 0.0) }, - Normal { normal: (0.177291, -0.984159, -0.0) }, - Normal { normal: (0.0492072, -0.998789, 0.0) }, - Normal { normal: (0.0, -1.0, -0.0) }, - Normal { normal: (0.576229, -0.781801, 0.238217) }, - Normal { normal: (0.163629, -0.984208, 0.0675273) }, - Normal { normal: (0.0454217, -0.998792, 0.0187357) }, - Normal { normal: (0.440416, -0.782348, 0.440416) }, - Normal { normal: (0.124903, -0.984276, 0.124903) }, - Normal { normal: (0.0346621, -0.998798, 0.0346621) }, - Normal { normal: (0.238217, -0.781801, 0.576229) }, - Normal { normal: (0.0675273, -0.984208, 0.163629) }, - Normal { normal: (0.0187357, -0.998792, 0.0454217) }, - Normal { normal: (-0.0, -0.781536, 0.62386) }, - Normal { normal: (0.0, -0.984159, 0.177291) }, - Normal { normal: (-0.0, -0.998789, 0.0492072) }, - Normal { normal: (-0.238216, -0.781801, 0.576229) }, - Normal { normal: (-0.0675273, -0.984208, 0.163629) }, - Normal { normal: (-0.0187357, -0.998792, 0.0454217) }, - Normal { normal: (-0.440416, -0.782348, 0.440416) }, - Normal { normal: (-0.124903, -0.984276, 0.124903) }, - Normal { normal: (-0.0346621, -0.998798, 0.0346621) }, - Normal { normal: (-0.576229, -0.781801, 0.238217) }, - Normal { normal: (-0.163629, -0.984208, 0.0675273) }, - Normal { normal: (-0.0454217, -0.998792, 0.0187357) }, - Normal { normal: (-0.62386, -0.781536, -0.0) }, - Normal { normal: (-0.177291, -0.984159, 0.0) }, - Normal { normal: (-0.0492072, -0.998789, -0.0) }, - Normal { normal: (-0.576229, -0.781801, -0.238217) }, - Normal { normal: (-0.163629, -0.984208, -0.0675273) }, - Normal { normal: (-0.0454217, -0.998792, -0.0187357) }, - Normal { normal: (-0.440416, -0.782348, -0.440416) }, - Normal { normal: (-0.124903, -0.984276, -0.124903) }, - Normal { normal: (-0.0346621, -0.998798, -0.0346621) }, - Normal { normal: (-0.238217, -0.781801, -0.576229) }, - Normal { normal: (-0.0675273, -0.984208, -0.163629) }, - Normal { normal: (-0.0187357, -0.998792, -0.0454217) }, - Normal { normal: (0.0, -0.781536, -0.62386) }, - Normal { normal: (-0.0, -0.984159, -0.177291) }, - Normal { normal: (0.0, -0.998789, -0.0492072) }, - Normal { normal: (0.238217, -0.781801, -0.576229) }, - Normal { normal: (0.0675273, -0.984208, -0.163629) }, - Normal { normal: (0.0187357, -0.998792, -0.0454217) }, - Normal { normal: (0.440416, -0.782348, -0.440416) }, - Normal { normal: (0.124903, -0.984276, -0.124903) }, - Normal { normal: (0.0346621, -0.998798, -0.0346621) }, - Normal { normal: (0.576229, -0.781801, -0.238217) }, - Normal { normal: (0.163629, -0.984208, -0.0675273) }, - Normal { normal: (0.0454217, -0.998792, -0.0187357) }, - Normal { normal: (0.00778619, -0.99997, -0.000215809) }, - Normal { normal: (0.0391385, -0.999233, -0.000988567) }, - Normal { normal: (0.179511, -0.983746, -0.00436856) }, - Normal { normal: (0.6123, -0.790556, -0.0104598) }, - Normal { normal: (0.986152, -0.165707, -0.00666949) }, - Normal { normal: (0.00703893, -0.812495, 0.582926) }, - Normal { normal: (0.0361273, -0.837257, 0.545614) }, - Normal { normal: (0.161845, -0.810421, 0.563048) }, - Normal { normal: (0.482365, -0.595148, 0.642746) }, - Normal { normal: (0.73872, -0.114593, 0.664199) }, - Normal { normal: (-0.00190867, 0.162121, 0.986769) }, - Normal { normal: (0.0027616, 0.0171073, 0.99985) }, - Normal { normal: (0.0105326, 0.0733989, 0.997247) }, - Normal { normal: (-0.0660406, 0.130069, 0.989303) }, - Normal { normal: (-0.0944272, 0.0165946, 0.995393) }, - Normal { normal: (-0.009203, 0.871509, 0.490293) }, - Normal { normal: (-0.0486064, 0.840609, 0.539457) }, - Normal { normal: (-0.223298, 0.802881, 0.552739) }, - Normal { normal: (-0.596365, 0.559971, 0.575135) }, - Normal { normal: (-0.803337, 0.0682361, 0.591602) }, - Normal { normal: (-0.0105609, 0.999944, 0.000103364) }, - Normal { normal: (-0.0587986, 0.99827, 0.000709759) }, - Normal { normal: (-0.28071, 0.959787, 0.00326876) }, - Normal { normal: (-0.749723, 0.661738, 0.0042684) }, - Normal { normal: (-0.997351, 0.0727144, 0.00205923) }, - Normal { normal: (-0.00879197, 0.871493, -0.49033) }, - Normal { normal: (-0.0464937, 0.841178, -0.538756) }, - Normal { normal: (-0.217909, 0.806807, -0.549161) }, - Normal { normal: (-0.597291, 0.560026, -0.574121) }, - Normal { normal: (-0.804, 0.0629127, -0.591291) }, - Normal { normal: (-0.00180555, 0.161691, -0.98684) }, - Normal { normal: (0.00203087, 0.014555, -0.999892) }, - Normal { normal: (0.00921499, 0.0600698, -0.998152) }, - Normal { normal: (-0.0593333, 0.113865, -0.991723) }, - Normal { normal: (-0.0868992, 0.0122903, -0.996141) }, - Normal { normal: (0.00641779, -0.812379, -0.583094) }, - Normal { normal: (0.0337833, -0.837512, -0.545373) }, - Normal { normal: (0.157112, -0.811947, -0.56219) }, - Normal { normal: (0.484407, -0.589365, -0.646528) }, - Normal { normal: (0.73887, -0.10132, -0.666187) }, - Normal { normal: (0.946512, 0.32265, -0.0033571) }, - Normal { normal: (0.82583, 0.56387, -0.00745213) }, - Normal { normal: (0.650011, 0.759893, -0.00693681) }, - Normal { normal: (0.532429, 0.846458, -0.00524544) }, - Normal { normal: (0.725608, 0.259351, 0.637362) }, - Normal { normal: (0.645945, 0.461988, 0.607719) }, - Normal { normal: (0.531614, 0.63666, 0.558615) }, - Normal { normal: (0.424964, 0.681717, 0.59554) }, - Normal { normal: (-0.0495616, -0.019755, 0.998576) }, - Normal { normal: (-0.0378162, -0.0356243, 0.99865) }, - Normal { normal: (-0.0379139, -0.0365122, 0.998614) }, - Normal { normal: (-0.168854, -0.297946, 0.93953) }, - Normal { normal: (-0.742342, -0.299166, 0.599523) }, - Normal { normal: (-0.619602, -0.529406, 0.579503) }, - Normal { normal: (-0.483708, -0.685761, 0.543837) }, - Normal { normal: (-0.445293, -0.794355, 0.413176) }, - Normal { normal: (-0.926513, -0.376257, 0.00199587) }, - Normal { normal: (-0.75392, -0.656952, 0.00431723) }, - Normal { normal: (-0.566224, -0.824244, 0.00346105) }, - Normal { normal: (-0.481804, -0.876277, 0.00185047) }, - Normal { normal: (-0.744675, -0.294424, -0.598977) }, - Normal { normal: (-0.621949, -0.528114, -0.578165) }, - Normal { normal: (-0.481171, -0.68834, -0.542828) }, - Normal { normal: (-0.438055, -0.797035, -0.415744) }, - Normal { normal: (-0.0443368, -0.0170558, -0.998871) }, - Normal { normal: (-0.0261761, -0.0281665, -0.99926) }, - Normal { normal: (-0.0252939, -0.0283323, -0.999278) }, - Normal { normal: (-0.157482, -0.289392, -0.944167) }, - Normal { normal: (0.728244, 0.25241, -0.637142) }, - Normal { normal: (0.647055, 0.459725, -0.608254) }, - Normal { normal: (0.522994, 0.640657, -0.562171) }, - Normal { normal: (0.409978, 0.682857, -0.604669) }, - Normal { normal: (-0.230787, 0.972982, -0.00652338) }, - Normal { normal: (-0.548936, 0.835863, -0.00151111) }, - Normal { normal: (-0.875671, 0.482807, 0.00989278) }, - Normal { normal: (-0.877554, 0.479097, 0.0190923) }, - Normal { normal: (-0.69619, 0.717439, 0.024497) }, - Normal { normal: (-0.152878, 0.687211, 0.71019) }, - Normal { normal: (-0.316721, 0.63775, 0.702113) }, - Normal { normal: (-0.601067, 0.471452, 0.64533) }, - Normal { normal: (-0.635889, 0.44609, 0.6298) }, - Normal { normal: (-0.435746, 0.601008, 0.670011) }, - Normal { normal: (0.111112, -0.0850694, 0.99016) }, - Normal { normal: (0.22331, 0.00654036, 0.974726) }, - Normal { normal: (0.190097, 0.154964, 0.969458) }, - Normal { normal: (0.00527077, 0.189482, 0.98187) }, - Normal { normal: (-0.0117518, 0.246688, 0.969024) }, - Normal { normal: (0.343906, -0.722796, 0.599412) }, - Normal { normal: (0.572489, -0.567656, 0.591627) }, - Normal { normal: (0.787436, -0.256459, 0.560512) }, - Normal { normal: (0.647097, -0.306374, 0.698141) }, - Normal { normal: (0.427528, -0.499343, 0.753576) }, - Normal { normal: (0.410926, -0.911668, 0.00128446) }, - Normal { normal: (0.67152, -0.740986, -0.000899122) }, - Normal { normal: (0.922026, -0.38706, -0.00725269) }, - Normal { normal: (0.84691, -0.531556, -0.0138542) }, - Normal { normal: (0.535925, -0.8442, -0.0105045) }, - Normal { normal: (0.341188, -0.722822, -0.600931) }, - Normal { normal: (0.578664, -0.561139, -0.591838) }, - Normal { normal: (0.784869, -0.25102, -0.566542) }, - Normal { normal: (0.642681, -0.302257, -0.70399) }, - Normal { normal: (0.418589, -0.500042, -0.758117) }, - Normal { normal: (0.115806, -0.0791394, -0.990114) }, - Normal { normal: (0.232811, 0.0125652, -0.972441) }, - Normal { normal: (0.206662, 0.153601, -0.96628) }, - Normal { normal: (0.0244996, 0.161443, -0.986578) }, - Normal { normal: (0.00338193, 0.211115, -0.977455) }, - Normal { normal: (-0.134912, 0.687491, -0.713551) }, - Normal { normal: (-0.31954, 0.633073, -0.705062) }, - Normal { normal: (-0.603902, 0.461442, -0.649903) }, - Normal { normal: (-0.631816, 0.437169, -0.640072) }, - Normal { normal: (-0.424306, 0.612706, -0.66675) }, - Normal { normal: (-0.4258, 0.904753, 0.0108049) }, - Normal { normal: (0.0220472, 0.999756, 0.00162273) }, - Normal { normal: (0.999599, 0.0258705, 0.0115556) }, - Normal { normal: (0.709585, -0.704553, 0.00967183) }, - Normal { normal: (-0.259858, 0.791936, 0.552549) }, - Normal { normal: (0.00953916, 0.99972, -0.0216718) }, - Normal { normal: (0.410156, 0.332912, -0.849083) }, - Normal { normal: (0.541523, -0.54862, -0.637) }, - Normal { normal: (0.0463104, 0.455224, 0.889172) }, - Normal { normal: (-0.0106883, 0.988794, 0.148901) }, - Normal { normal: (-0.0443756, 0.682947, -0.729118) }, - Normal { normal: (0.122825, 0.00923214, -0.992385) }, - Normal { normal: (0.481839, -0.180439, 0.85748) }, - Normal { normal: (0.455272, 0.736752, 0.499925) }, - Normal { normal: (-0.220542, 0.907193, -0.358276) }, - Normal { normal: (-0.23592, 0.657249, -0.715797) }, - Normal { normal: (0.728092, -0.685302, -0.0155853) }, - Normal { normal: (0.888739, 0.45811, -0.0166791) }, - Normal { normal: (-0.260097, 0.965582, 0.000800195) }, - Normal { normal: (-0.371612, 0.928378, -0.00441745) }, - Normal { normal: (0.480166, -0.17836, -0.858853) }, - Normal { normal: (0.488103, 0.716801, -0.497947) }, - Normal { normal: (-0.222004, 0.905399, 0.361893) }, - Normal { normal: (-0.235405, 0.66318, 0.710477) }, - Normal { normal: (0.0587203, 0.437704, -0.8972) }, - Normal { normal: (0.00132612, 0.986459, -0.164003) }, - Normal { normal: (-0.0441901, 0.681677, 0.730317) }, - Normal { normal: (0.138801, -0.0341896, 0.98973) }, - Normal { normal: (-0.25889, 0.797206, -0.54538) }, - Normal { normal: (0.0122703, 0.999739, 0.0192865) }, - Normal { normal: (0.39863, 0.35489, 0.845663) }, - Normal { normal: (0.537564, -0.5814, 0.610737) }, - Normal { normal: (-0.0, 1.0, 0.0) }, - Normal { normal: (0.82454, 0.565804, 0.0) }, - Normal { normal: (0.917701, -0.397272, 0.0) }, - Normal { normal: (0.935269, -0.353939, 0.000112842) }, - Normal { normal: (0.780712, 0.624891, 0.0) }, - Normal { normal: (0.762641, 0.565035, 0.314825) }, - Normal { normal: (0.847982, -0.397998, 0.350034) }, - Normal { normal: (0.864141, -0.355261, 0.356441) }, - Normal { normal: (0.720991, 0.625625, 0.297933) }, - Normal { normal: (0.583357, 0.565165, 0.583338) }, - Normal { normal: (0.648485, -0.398726, 0.648448) }, - Normal { normal: (0.660872, -0.355894, 0.660748) }, - Normal { normal: (0.551862, 0.62529, 0.55178) }, - Normal { normal: (0.314824, 0.565051, 0.762629) }, - Normal { normal: (0.350045, -0.397976, 0.847988) }, - Normal { normal: (0.356474, -0.3552, 0.864153) }, - Normal { normal: (0.297983, 0.625515, 0.721067) }, - Normal { normal: (-0.0, 0.565804, 0.82454) }, - Normal { normal: (-0.0, -0.397272, 0.917701) }, - Normal { normal: (-0.000112839, -0.353939, 0.935269) }, - Normal { normal: (-0.0, 0.624891, 0.780712) }, - Normal { normal: (-0.314825, 0.565035, 0.762641) }, - Normal { normal: (-0.350034, -0.397998, 0.847982) }, - Normal { normal: (-0.356441, -0.355261, 0.864141) }, - Normal { normal: (-0.297933, 0.625625, 0.720991) }, - Normal { normal: (-0.583338, 0.565165, 0.583357) }, - Normal { normal: (-0.648448, -0.398726, 0.648485) }, - Normal { normal: (-0.660748, -0.355894, 0.660872) }, - Normal { normal: (-0.55178, 0.62529, 0.551862) }, - Normal { normal: (-0.762629, 0.565051, 0.314824) }, - Normal { normal: (-0.847988, -0.397976, 0.350045) }, - Normal { normal: (-0.864153, -0.3552, 0.356474) }, - Normal { normal: (-0.721067, 0.625515, 0.297983) }, - Normal { normal: (-0.82454, 0.565804, -0.0) }, - Normal { normal: (-0.917701, -0.397272, -0.0) }, - Normal { normal: (-0.935269, -0.353939, -0.000112839) }, - Normal { normal: (-0.780712, 0.624891, -0.0) }, - Normal { normal: (-0.76264, 0.565035, -0.314825) }, - Normal { normal: (-0.847982, -0.397998, -0.350034) }, - Normal { normal: (-0.864141, -0.355261, -0.356441) }, - Normal { normal: (-0.720991, 0.625625, -0.297933) }, - Normal { normal: (-0.583357, 0.565165, -0.583338) }, - Normal { normal: (-0.648485, -0.398726, -0.648448) }, - Normal { normal: (-0.660872, -0.355894, -0.660748) }, - Normal { normal: (-0.551862, 0.62529, -0.55178) }, - Normal { normal: (-0.314824, 0.565051, -0.762629) }, - Normal { normal: (-0.350045, -0.397976, -0.847988) }, - Normal { normal: (-0.356474, -0.3552, -0.864153) }, - Normal { normal: (-0.297983, 0.625515, -0.721067) }, - Normal { normal: (0.0, 0.565804, -0.82454) }, - Normal { normal: (0.0, -0.397272, -0.917701) }, - Normal { normal: (0.000112839, -0.353939, -0.935269) }, - Normal { normal: (0.0, 0.624891, -0.780712) }, - Normal { normal: (0.314825, 0.565035, -0.762641) }, - Normal { normal: (0.350034, -0.397998, -0.847982) }, - Normal { normal: (0.356441, -0.355261, -0.864141) }, - Normal { normal: (0.297933, 0.625625, -0.720991) }, - Normal { normal: (0.583338, 0.565165, -0.583357) }, - Normal { normal: (0.648448, -0.398726, -0.648485) }, - Normal { normal: (0.660748, -0.355894, -0.660872) }, - Normal { normal: (0.55178, 0.62529, -0.551862) }, - Normal { normal: (0.762629, 0.565051, -0.314824) }, - Normal { normal: (0.847988, -0.397976, -0.350045) }, - Normal { normal: (0.864153, -0.3552, -0.356474) }, - Normal { normal: (0.721067, 0.625515, -0.297983) }, - Normal { normal: (0.236584, 0.971611, 0.0) }, - Normal { normal: (0.173084, 0.984907, -0.0) }, - Normal { normal: (0.379703, 0.925108, 0.0) }, - Normal { normal: (0.526673, 0.850068, 0.0) }, - Normal { normal: (0.217978, 0.971775, 0.0902162) }, - Normal { normal: (0.15959, 0.984977, 0.0659615) }, - Normal { normal: (0.350498, 0.925312, 0.14474) }, - Normal { normal: (0.48559, 0.850653, 0.201474) }, - Normal { normal: (0.166631, 0.971838, 0.166631) }, - Normal { normal: (0.121908, 0.985026, 0.121908) }, - Normal { normal: (0.267668, 0.925585, 0.267668) }, - Normal { normal: (0.371315, 0.851029, 0.371315) }, - Normal { normal: (0.0902162, 0.971775, 0.217978) }, - Normal { normal: (0.0659615, 0.984977, 0.15959) }, - Normal { normal: (0.14474, 0.925312, 0.350498) }, - Normal { normal: (0.201474, 0.850653, 0.48559) }, - Normal { normal: (-0.0, 0.971611, 0.236584) }, - Normal { normal: (0.0, 0.984907, 0.173084) }, - Normal { normal: (0.0, 0.925108, 0.379703) }, - Normal { normal: (0.0, 0.850068, 0.526673) }, - Normal { normal: (-0.0902162, 0.971775, 0.217978) }, - Normal { normal: (-0.0659615, 0.984977, 0.15959) }, - Normal { normal: (-0.14474, 0.925312, 0.350498) }, - Normal { normal: (-0.201474, 0.850653, 0.48559) }, - Normal { normal: (-0.166631, 0.971838, 0.166631) }, - Normal { normal: (-0.121908, 0.985026, 0.121908) }, - Normal { normal: (-0.267668, 0.925585, 0.267668) }, - Normal { normal: (-0.371315, 0.851029, 0.371315) }, - Normal { normal: (-0.217978, 0.971775, 0.0902162) }, - Normal { normal: (-0.15959, 0.984977, 0.0659615) }, - Normal { normal: (-0.350498, 0.925312, 0.14474) }, - Normal { normal: (-0.48559, 0.850653, 0.201474) }, - Normal { normal: (-0.236583, 0.971611, -0.0) }, - Normal { normal: (-0.173084, 0.984907, 0.0) }, - Normal { normal: (-0.379703, 0.925108, -0.0) }, - Normal { normal: (-0.526673, 0.850068, 0.0) }, - Normal { normal: (-0.217978, 0.971775, -0.0902162) }, - Normal { normal: (-0.15959, 0.984977, -0.0659615) }, - Normal { normal: (-0.350498, 0.925312, -0.14474) }, - Normal { normal: (-0.48559, 0.850653, -0.201474) }, - Normal { normal: (-0.166631, 0.971838, -0.166631) }, - Normal { normal: (-0.121908, 0.985026, -0.121908) }, - Normal { normal: (-0.267668, 0.925585, -0.267668) }, - Normal { normal: (-0.371315, 0.851029, -0.371315) }, - Normal { normal: (-0.0902162, 0.971775, -0.217978) }, - Normal { normal: (-0.0659615, 0.984977, -0.15959) }, - Normal { normal: (-0.14474, 0.925312, -0.350498) }, - Normal { normal: (-0.201474, 0.850653, -0.485589) }, - Normal { normal: (0.0, 0.971611, -0.236584) }, - Normal { normal: (-0.0, 0.984907, -0.173084) }, - Normal { normal: (-0.0, 0.925108, -0.379703) }, - Normal { normal: (-0.0, 0.850068, -0.526673) }, - Normal { normal: (0.0902162, 0.971775, -0.217978) }, - Normal { normal: (0.0659615, 0.984977, -0.15959) }, - Normal { normal: (0.14474, 0.925312, -0.350498) }, - Normal { normal: (0.201474, 0.850653, -0.48559) }, - Normal { normal: (0.166631, 0.971838, -0.166631) }, - Normal { normal: (0.121908, 0.985026, -0.121908) }, - Normal { normal: (0.267668, 0.925585, -0.267668) }, - Normal { normal: (0.371315, 0.851029, -0.371315) }, - Normal { normal: (0.217978, 0.971775, -0.0902162) }, - Normal { normal: (0.15959, 0.984977, -0.0659615) }, - Normal { normal: (0.350498, 0.925312, -0.14474) }, - Normal { normal: (0.48559, 0.850653, -0.201474) }, + Normal { + normal: (0.0, 0.0, 0.0), + }, // dummy vector because in the original model indices + // start at 1 + Normal { + normal: (-0.966742, -0.255752, 0.0), + }, + Normal { + normal: (-0.966824, 0.255443, 0.0), + }, + Normal { + normal: (-0.092052, 0.995754, 0.0), + }, + Normal { + normal: (0.68205, 0.731305, 0.0), + }, + Normal { + normal: (0.870301, 0.492521, -0.0), + }, + Normal { + normal: (-0.893014, -0.256345, -0.369882), + }, + Normal { + normal: (-0.893437, 0.255997, -0.369102), + }, + Normal { + normal: (-0.0838771, 0.995843, -0.0355068), + }, + Normal { + normal: (0.629724, 0.73186, 0.260439), + }, + Normal { + normal: (0.803725, 0.49337, 0.332584), + }, + Normal { + normal: (-0.683407, -0.256729, -0.683407), + }, + Normal { + normal: (-0.683531, 0.256067, -0.683531), + }, + Normal { + normal: (-0.0649249, 0.995776, -0.0649248), + }, + Normal { + normal: (0.481398, 0.732469, 0.481398), + }, + Normal { + normal: (0.614804, 0.493997, 0.614804), + }, + Normal { + normal: (-0.369882, -0.256345, -0.893014), + }, + Normal { + normal: (-0.369102, 0.255997, -0.893437), + }, + Normal { + normal: (-0.0355067, 0.995843, -0.0838772), + }, + Normal { + normal: (0.260439, 0.73186, 0.629724), + }, + Normal { + normal: (0.332584, 0.49337, 0.803725), + }, + Normal { + normal: (-0.00284834, -0.257863, -0.966177), + }, + Normal { + normal: (-0.00192311, 0.254736, -0.967009), + }, + Normal { + normal: (-0.000266114, 0.995734, -0.0922702), + }, + Normal { + normal: (0.0, 0.731295, 0.682061), + }, + Normal { + normal: (0.0, 0.492521, 0.870301), + }, + Normal { + normal: (0.379058, -0.3593, -0.852771), + }, + Normal { + normal: (0.37711, 0.149086, -0.914091), + }, + Normal { + normal: (0.0275022, 0.992081, -0.122551), + }, + Normal { + normal: (-0.26101, 0.726762, 0.635367), + }, + Normal { + normal: (-0.332485, 0.492546, 0.804271), + }, + Normal { + normal: (0.663548, -0.410791, -0.625264), + }, + Normal { + normal: (0.712664, 0.0737216, -0.697621), + }, + Normal { + normal: (0.0997268, 0.987509, -0.121984), + }, + Normal { + normal: (-0.48732, 0.723754, 0.488568), + }, + Normal { + normal: (-0.615242, 0.492602, 0.615484), + }, + Normal { + normal: (0.880028, -0.332908, -0.338709), + }, + Normal { + normal: (0.917276, 0.167113, -0.361493), + }, + Normal { + normal: (0.113584, 0.992365, -0.0480695), + }, + Normal { + normal: (-0.63415, 0.727508, 0.261889), + }, + Normal { + normal: (-0.804126, 0.492634, 0.332705), + }, + Normal { + normal: (0.96669, -0.255738, 0.0104537), + }, + Normal { + normal: (0.967442, 0.252962, 0.00810329), + }, + Normal { + normal: (0.0934365, 0.995624, 0.00128063), + }, + Normal { + normal: (-0.682167, 0.731196, -0.00034353), + }, + Normal { + normal: (-0.870322, 0.492483, -0.0), + }, + Normal { + normal: (0.893014, -0.256345, 0.369882), + }, + Normal { + normal: (0.893437, 0.255997, 0.369102), + }, + Normal { + normal: (0.0838768, 0.995843, 0.0355066), + }, + Normal { + normal: (-0.629724, 0.73186, -0.260439), + }, + Normal { + normal: (-0.803725, 0.49337, -0.332584), + }, + Normal { + normal: (0.683407, -0.256729, 0.683407), + }, + Normal { + normal: (0.683531, 0.256067, 0.683531), + }, + Normal { + normal: (0.0649249, 0.995776, 0.0649249), + }, + Normal { + normal: (-0.481398, 0.732469, -0.481398), + }, + Normal { + normal: (-0.614804, 0.493997, -0.614804), + }, + Normal { + normal: (0.369882, -0.256345, 0.893014), + }, + Normal { + normal: (0.369102, 0.255997, 0.893437), + }, + Normal { + normal: (0.0355067, 0.995843, 0.083877), + }, + Normal { + normal: (-0.260439, 0.73186, -0.629724), + }, + Normal { + normal: (-0.332584, 0.49337, -0.803725), + }, + Normal { + normal: (0.0, -0.255752, 0.966742), + }, + Normal { + normal: (0.0, 0.255443, 0.966824), + }, + Normal { + normal: (0.0, 0.995754, 0.092052), + }, + Normal { + normal: (0.0, 0.731305, -0.68205), + }, + Normal { + normal: (-0.0, 0.492521, -0.870301), + }, + Normal { + normal: (-0.369882, -0.256345, 0.893014), + }, + Normal { + normal: (-0.369102, 0.255996, 0.893437), + }, + Normal { + normal: (-0.0355068, 0.995843, 0.0838771), + }, + Normal { + normal: (0.260439, 0.73186, -0.629724), + }, + Normal { + normal: (0.332584, 0.49337, -0.803725), + }, + Normal { + normal: (-0.683407, -0.256729, 0.683407), + }, + Normal { + normal: (-0.683531, 0.256067, 0.683531), + }, + Normal { + normal: (-0.0649249, 0.995776, 0.064925), + }, + Normal { + normal: (0.481398, 0.732469, -0.481398), + }, + Normal { + normal: (0.614804, 0.493997, -0.614804), + }, + Normal { + normal: (-0.893014, -0.256345, 0.369882), + }, + Normal { + normal: (-0.893437, 0.255997, 0.369102), + }, + Normal { + normal: (-0.0838767, 0.995843, 0.0355066), + }, + Normal { + normal: (0.629724, 0.73186, -0.260439), + }, + Normal { + normal: (0.803725, 0.49337, -0.332584), + }, + Normal { + normal: (0.915321, 0.402725, 0.0), + }, + Normal { + normal: (0.941808, 0.336151, -0.0), + }, + Normal { + normal: (0.97869, 0.205342, 0.0), + }, + Normal { + normal: (0.997804, -0.0662397, 0.0), + }, + Normal { + normal: (0.845438, 0.403546, 0.349835), + }, + Normal { + normal: (0.869996, 0.336859, 0.360047), + }, + Normal { + normal: (0.904193, 0.205791, 0.37428), + }, + Normal { + normal: (0.921879, -0.0663697, 0.381752), + }, + Normal { + normal: (0.646802, 0.404096, 0.646802), + }, + Normal { + normal: (0.665655, 0.337351, 0.665655), + }, + Normal { + normal: (0.691923, 0.20612, 0.691923), + }, + Normal { + normal: (0.705542, -0.0664796, 0.705543), + }, + Normal { + normal: (0.349835, 0.403546, 0.845438), + }, + Normal { + normal: (0.360047, 0.336859, 0.869996), + }, + Normal { + normal: (0.37428, 0.205791, 0.904193), + }, + Normal { + normal: (0.381752, -0.0663697, 0.921879), + }, + Normal { + normal: (-0.0, 0.402725, 0.915321), + }, + Normal { + normal: (0.0, 0.336151, 0.941808), + }, + Normal { + normal: (-0.0, 0.205342, 0.97869), + }, + Normal { + normal: (-0.0, -0.0662397, 0.997804), + }, + Normal { + normal: (-0.349835, 0.403546, 0.845438), + }, + Normal { + normal: (-0.360047, 0.336859, 0.869996), + }, + Normal { + normal: (-0.37428, 0.205791, 0.904193), + }, + Normal { + normal: (-0.381752, -0.0663697, 0.921879), + }, + Normal { + normal: (-0.646802, 0.404096, 0.646802), + }, + Normal { + normal: (-0.665655, 0.337351, 0.665655), + }, + Normal { + normal: (-0.691923, 0.20612, 0.691923), + }, + Normal { + normal: (-0.705543, -0.0664796, 0.705543), + }, + Normal { + normal: (-0.845438, 0.403546, 0.349835), + }, + Normal { + normal: (-0.869996, 0.336859, 0.360047), + }, + Normal { + normal: (-0.904193, 0.205791, 0.37428), + }, + Normal { + normal: (-0.921879, -0.0663697, 0.381752), + }, + Normal { + normal: (-0.915321, 0.402725, -0.0), + }, + Normal { + normal: (-0.941808, 0.336151, -0.0), + }, + Normal { + normal: (-0.97869, 0.205342, -0.0), + }, + Normal { + normal: (-0.997804, -0.0662397, -0.0), + }, + Normal { + normal: (-0.845438, 0.403546, -0.349835), + }, + Normal { + normal: (-0.869996, 0.336859, -0.360047), + }, + Normal { + normal: (-0.904193, 0.205791, -0.37428), + }, + Normal { + normal: (-0.921879, -0.0663697, -0.381752), + }, + Normal { + normal: (-0.646802, 0.404096, -0.646802), + }, + Normal { + normal: (-0.665655, 0.337351, -0.665655), + }, + Normal { + normal: (-0.691923, 0.20612, -0.691923), + }, + Normal { + normal: (-0.705542, -0.0664796, -0.705543), + }, + Normal { + normal: (-0.349835, 0.403546, -0.845438), + }, + Normal { + normal: (-0.360047, 0.336859, -0.869996), + }, + Normal { + normal: (-0.37428, 0.205791, -0.904193), + }, + Normal { + normal: (-0.381752, -0.0663697, -0.921879), + }, + Normal { + normal: (0.0, 0.402725, -0.915321), + }, + Normal { + normal: (-0.0, 0.336151, -0.941808), + }, + Normal { + normal: (0.0, 0.205342, -0.97869), + }, + Normal { + normal: (0.0, -0.0662397, -0.997804), + }, + Normal { + normal: (0.349835, 0.403546, -0.845438), + }, + Normal { + normal: (0.360047, 0.336859, -0.869996), + }, + Normal { + normal: (0.37428, 0.205791, -0.904193), + }, + Normal { + normal: (0.381752, -0.0663697, -0.921879), + }, + Normal { + normal: (0.646802, 0.404096, -0.646802), + }, + Normal { + normal: (0.665655, 0.337351, -0.665655), + }, + Normal { + normal: (0.691923, 0.20612, -0.691923), + }, + Normal { + normal: (0.705543, -0.0664796, -0.705542), + }, + Normal { + normal: (0.845438, 0.403546, -0.349835), + }, + Normal { + normal: (0.869996, 0.336859, -0.360047), + }, + Normal { + normal: (0.904193, 0.205791, -0.37428), + }, + Normal { + normal: (0.921879, -0.0663697, -0.381752), + }, + Normal { + normal: (0.900182, -0.435513, -0.0), + }, + Normal { + normal: (0.729611, -0.683863, -0.0), + }, + Normal { + normal: (0.693951, -0.720022, -0.0), + }, + Normal { + normal: (0.79395, -0.607984, 0.0), + }, + Normal { + normal: (0.831437, -0.43618, 0.344179), + }, + Normal { + normal: (0.673512, -0.684665, 0.278594), + }, + Normal { + normal: (0.640399, -0.720924, 0.264874), + }, + Normal { + normal: (0.732949, -0.608996, 0.303166), + }, + Normal { + normal: (0.636092, -0.436777, 0.636092), + }, + Normal { + normal: (0.514965, -0.685289, 0.514965), + }, + Normal { + normal: (0.489651, -0.721446, 0.489651), + }, + Normal { + normal: (0.560555, -0.609554, 0.560555), + }, + Normal { + normal: (0.344179, -0.43618, 0.831437), + }, + Normal { + normal: (0.278594, -0.684665, 0.673512), + }, + Normal { + normal: (0.264874, -0.720924, 0.640399), + }, + Normal { + normal: (0.303166, -0.608996, 0.732949), + }, + Normal { + normal: (0.0, -0.435513, 0.900182), + }, + Normal { + normal: (-0.0, -0.683863, 0.729611), + }, + Normal { + normal: (0.0, -0.720022, 0.693951), + }, + Normal { + normal: (-0.0, -0.607984, 0.79395), + }, + Normal { + normal: (-0.344179, -0.43618, 0.831437), + }, + Normal { + normal: (-0.278594, -0.684665, 0.673512), + }, + Normal { + normal: (-0.264874, -0.720924, 0.640399), + }, + Normal { + normal: (-0.303166, -0.608996, 0.732949), + }, + Normal { + normal: (-0.636092, -0.436777, 0.636092), + }, + Normal { + normal: (-0.514965, -0.685289, 0.514965), + }, + Normal { + normal: (-0.489651, -0.721446, 0.489651), + }, + Normal { + normal: (-0.560555, -0.609554, 0.560555), + }, + Normal { + normal: (-0.831437, -0.43618, 0.344179), + }, + Normal { + normal: (-0.673512, -0.684665, 0.278595), + }, + Normal { + normal: (-0.640399, -0.720924, 0.264874), + }, + Normal { + normal: (-0.732949, -0.608996, 0.303166), + }, + Normal { + normal: (-0.900182, -0.435513, -0.0), + }, + Normal { + normal: (-0.729611, -0.683863, -0.0), + }, + Normal { + normal: (-0.693951, -0.720022, 0.0), + }, + Normal { + normal: (-0.79395, -0.607983, -0.0), + }, + Normal { + normal: (-0.831437, -0.43618, -0.344179), + }, + Normal { + normal: (-0.673512, -0.684665, -0.278594), + }, + Normal { + normal: (-0.640399, -0.720924, -0.264874), + }, + Normal { + normal: (-0.732949, -0.608996, -0.303166), + }, + Normal { + normal: (-0.636092, -0.436777, -0.636092), + }, + Normal { + normal: (-0.514965, -0.685289, -0.514965), + }, + Normal { + normal: (-0.489651, -0.721446, -0.489651), + }, + Normal { + normal: (-0.560555, -0.609554, -0.560555), + }, + Normal { + normal: (-0.344179, -0.43618, -0.831437), + }, + Normal { + normal: (-0.278594, -0.684665, -0.673512), + }, + Normal { + normal: (-0.264874, -0.720924, -0.640399), + }, + Normal { + normal: (-0.303166, -0.608996, -0.732949), + }, + Normal { + normal: (-0.0, -0.435513, -0.900182), + }, + Normal { + normal: (0.0, -0.683863, -0.729611), + }, + Normal { + normal: (-0.0, -0.720022, -0.693951), + }, + Normal { + normal: (0.0, -0.607984, -0.79395), + }, + Normal { + normal: (0.344179, -0.43618, -0.831437), + }, + Normal { + normal: (0.278594, -0.684665, -0.673512), + }, + Normal { + normal: (0.264874, -0.720924, -0.640399), + }, + Normal { + normal: (0.303167, -0.608996, -0.732949), + }, + Normal { + normal: (0.636092, -0.436777, -0.636092), + }, + Normal { + normal: (0.514965, -0.685289, -0.514965), + }, + Normal { + normal: (0.489651, -0.721446, -0.489651), + }, + Normal { + normal: (0.560555, -0.609554, -0.560555), + }, + Normal { + normal: (0.831437, -0.43618, -0.344179), + }, + Normal { + normal: (0.673512, -0.684665, -0.278595), + }, + Normal { + normal: (0.640399, -0.720924, -0.264874), + }, + Normal { + normal: (0.732949, -0.608996, -0.303166), + }, + Normal { + normal: (0.62386, -0.781536, 0.0), + }, + Normal { + normal: (0.177291, -0.984159, -0.0), + }, + Normal { + normal: (0.0492072, -0.998789, 0.0), + }, + Normal { + normal: (0.0, -1.0, -0.0), + }, + Normal { + normal: (0.576229, -0.781801, 0.238217), + }, + Normal { + normal: (0.163629, -0.984208, 0.0675273), + }, + Normal { + normal: (0.0454217, -0.998792, 0.0187357), + }, + Normal { + normal: (0.440416, -0.782348, 0.440416), + }, + Normal { + normal: (0.124903, -0.984276, 0.124903), + }, + Normal { + normal: (0.0346621, -0.998798, 0.0346621), + }, + Normal { + normal: (0.238217, -0.781801, 0.576229), + }, + Normal { + normal: (0.0675273, -0.984208, 0.163629), + }, + Normal { + normal: (0.0187357, -0.998792, 0.0454217), + }, + Normal { + normal: (-0.0, -0.781536, 0.62386), + }, + Normal { + normal: (0.0, -0.984159, 0.177291), + }, + Normal { + normal: (-0.0, -0.998789, 0.0492072), + }, + Normal { + normal: (-0.238216, -0.781801, 0.576229), + }, + Normal { + normal: (-0.0675273, -0.984208, 0.163629), + }, + Normal { + normal: (-0.0187357, -0.998792, 0.0454217), + }, + Normal { + normal: (-0.440416, -0.782348, 0.440416), + }, + Normal { + normal: (-0.124903, -0.984276, 0.124903), + }, + Normal { + normal: (-0.0346621, -0.998798, 0.0346621), + }, + Normal { + normal: (-0.576229, -0.781801, 0.238217), + }, + Normal { + normal: (-0.163629, -0.984208, 0.0675273), + }, + Normal { + normal: (-0.0454217, -0.998792, 0.0187357), + }, + Normal { + normal: (-0.62386, -0.781536, -0.0), + }, + Normal { + normal: (-0.177291, -0.984159, 0.0), + }, + Normal { + normal: (-0.0492072, -0.998789, -0.0), + }, + Normal { + normal: (-0.576229, -0.781801, -0.238217), + }, + Normal { + normal: (-0.163629, -0.984208, -0.0675273), + }, + Normal { + normal: (-0.0454217, -0.998792, -0.0187357), + }, + Normal { + normal: (-0.440416, -0.782348, -0.440416), + }, + Normal { + normal: (-0.124903, -0.984276, -0.124903), + }, + Normal { + normal: (-0.0346621, -0.998798, -0.0346621), + }, + Normal { + normal: (-0.238217, -0.781801, -0.576229), + }, + Normal { + normal: (-0.0675273, -0.984208, -0.163629), + }, + Normal { + normal: (-0.0187357, -0.998792, -0.0454217), + }, + Normal { + normal: (0.0, -0.781536, -0.62386), + }, + Normal { + normal: (-0.0, -0.984159, -0.177291), + }, + Normal { + normal: (0.0, -0.998789, -0.0492072), + }, + Normal { + normal: (0.238217, -0.781801, -0.576229), + }, + Normal { + normal: (0.0675273, -0.984208, -0.163629), + }, + Normal { + normal: (0.0187357, -0.998792, -0.0454217), + }, + Normal { + normal: (0.440416, -0.782348, -0.440416), + }, + Normal { + normal: (0.124903, -0.984276, -0.124903), + }, + Normal { + normal: (0.0346621, -0.998798, -0.0346621), + }, + Normal { + normal: (0.576229, -0.781801, -0.238217), + }, + Normal { + normal: (0.163629, -0.984208, -0.0675273), + }, + Normal { + normal: (0.0454217, -0.998792, -0.0187357), + }, + Normal { + normal: (0.00778619, -0.99997, -0.000215809), + }, + Normal { + normal: (0.0391385, -0.999233, -0.000988567), + }, + Normal { + normal: (0.179511, -0.983746, -0.00436856), + }, + Normal { + normal: (0.6123, -0.790556, -0.0104598), + }, + Normal { + normal: (0.986152, -0.165707, -0.00666949), + }, + Normal { + normal: (0.00703893, -0.812495, 0.582926), + }, + Normal { + normal: (0.0361273, -0.837257, 0.545614), + }, + Normal { + normal: (0.161845, -0.810421, 0.563048), + }, + Normal { + normal: (0.482365, -0.595148, 0.642746), + }, + Normal { + normal: (0.73872, -0.114593, 0.664199), + }, + Normal { + normal: (-0.00190867, 0.162121, 0.986769), + }, + Normal { + normal: (0.0027616, 0.0171073, 0.99985), + }, + Normal { + normal: (0.0105326, 0.0733989, 0.997247), + }, + Normal { + normal: (-0.0660406, 0.130069, 0.989303), + }, + Normal { + normal: (-0.0944272, 0.0165946, 0.995393), + }, + Normal { + normal: (-0.009203, 0.871509, 0.490293), + }, + Normal { + normal: (-0.0486064, 0.840609, 0.539457), + }, + Normal { + normal: (-0.223298, 0.802881, 0.552739), + }, + Normal { + normal: (-0.596365, 0.559971, 0.575135), + }, + Normal { + normal: (-0.803337, 0.0682361, 0.591602), + }, + Normal { + normal: (-0.0105609, 0.999944, 0.000103364), + }, + Normal { + normal: (-0.0587986, 0.99827, 0.000709759), + }, + Normal { + normal: (-0.28071, 0.959787, 0.00326876), + }, + Normal { + normal: (-0.749723, 0.661738, 0.0042684), + }, + Normal { + normal: (-0.997351, 0.0727144, 0.00205923), + }, + Normal { + normal: (-0.00879197, 0.871493, -0.49033), + }, + Normal { + normal: (-0.0464937, 0.841178, -0.538756), + }, + Normal { + normal: (-0.217909, 0.806807, -0.549161), + }, + Normal { + normal: (-0.597291, 0.560026, -0.574121), + }, + Normal { + normal: (-0.804, 0.0629127, -0.591291), + }, + Normal { + normal: (-0.00180555, 0.161691, -0.98684), + }, + Normal { + normal: (0.00203087, 0.014555, -0.999892), + }, + Normal { + normal: (0.00921499, 0.0600698, -0.998152), + }, + Normal { + normal: (-0.0593333, 0.113865, -0.991723), + }, + Normal { + normal: (-0.0868992, 0.0122903, -0.996141), + }, + Normal { + normal: (0.00641779, -0.812379, -0.583094), + }, + Normal { + normal: (0.0337833, -0.837512, -0.545373), + }, + Normal { + normal: (0.157112, -0.811947, -0.56219), + }, + Normal { + normal: (0.484407, -0.589365, -0.646528), + }, + Normal { + normal: (0.73887, -0.10132, -0.666187), + }, + Normal { + normal: (0.946512, 0.32265, -0.0033571), + }, + Normal { + normal: (0.82583, 0.56387, -0.00745213), + }, + Normal { + normal: (0.650011, 0.759893, -0.00693681), + }, + Normal { + normal: (0.532429, 0.846458, -0.00524544), + }, + Normal { + normal: (0.725608, 0.259351, 0.637362), + }, + Normal { + normal: (0.645945, 0.461988, 0.607719), + }, + Normal { + normal: (0.531614, 0.63666, 0.558615), + }, + Normal { + normal: (0.424964, 0.681717, 0.59554), + }, + Normal { + normal: (-0.0495616, -0.019755, 0.998576), + }, + Normal { + normal: (-0.0378162, -0.0356243, 0.99865), + }, + Normal { + normal: (-0.0379139, -0.0365122, 0.998614), + }, + Normal { + normal: (-0.168854, -0.297946, 0.93953), + }, + Normal { + normal: (-0.742342, -0.299166, 0.599523), + }, + Normal { + normal: (-0.619602, -0.529406, 0.579503), + }, + Normal { + normal: (-0.483708, -0.685761, 0.543837), + }, + Normal { + normal: (-0.445293, -0.794355, 0.413176), + }, + Normal { + normal: (-0.926513, -0.376257, 0.00199587), + }, + Normal { + normal: (-0.75392, -0.656952, 0.00431723), + }, + Normal { + normal: (-0.566224, -0.824244, 0.00346105), + }, + Normal { + normal: (-0.481804, -0.876277, 0.00185047), + }, + Normal { + normal: (-0.744675, -0.294424, -0.598977), + }, + Normal { + normal: (-0.621949, -0.528114, -0.578165), + }, + Normal { + normal: (-0.481171, -0.68834, -0.542828), + }, + Normal { + normal: (-0.438055, -0.797035, -0.415744), + }, + Normal { + normal: (-0.0443368, -0.0170558, -0.998871), + }, + Normal { + normal: (-0.0261761, -0.0281665, -0.99926), + }, + Normal { + normal: (-0.0252939, -0.0283323, -0.999278), + }, + Normal { + normal: (-0.157482, -0.289392, -0.944167), + }, + Normal { + normal: (0.728244, 0.25241, -0.637142), + }, + Normal { + normal: (0.647055, 0.459725, -0.608254), + }, + Normal { + normal: (0.522994, 0.640657, -0.562171), + }, + Normal { + normal: (0.409978, 0.682857, -0.604669), + }, + Normal { + normal: (-0.230787, 0.972982, -0.00652338), + }, + Normal { + normal: (-0.548936, 0.835863, -0.00151111), + }, + Normal { + normal: (-0.875671, 0.482807, 0.00989278), + }, + Normal { + normal: (-0.877554, 0.479097, 0.0190923), + }, + Normal { + normal: (-0.69619, 0.717439, 0.024497), + }, + Normal { + normal: (-0.152878, 0.687211, 0.71019), + }, + Normal { + normal: (-0.316721, 0.63775, 0.702113), + }, + Normal { + normal: (-0.601067, 0.471452, 0.64533), + }, + Normal { + normal: (-0.635889, 0.44609, 0.6298), + }, + Normal { + normal: (-0.435746, 0.601008, 0.670011), + }, + Normal { + normal: (0.111112, -0.0850694, 0.99016), + }, + Normal { + normal: (0.22331, 0.00654036, 0.974726), + }, + Normal { + normal: (0.190097, 0.154964, 0.969458), + }, + Normal { + normal: (0.00527077, 0.189482, 0.98187), + }, + Normal { + normal: (-0.0117518, 0.246688, 0.969024), + }, + Normal { + normal: (0.343906, -0.722796, 0.599412), + }, + Normal { + normal: (0.572489, -0.567656, 0.591627), + }, + Normal { + normal: (0.787436, -0.256459, 0.560512), + }, + Normal { + normal: (0.647097, -0.306374, 0.698141), + }, + Normal { + normal: (0.427528, -0.499343, 0.753576), + }, + Normal { + normal: (0.410926, -0.911668, 0.00128446), + }, + Normal { + normal: (0.67152, -0.740986, -0.000899122), + }, + Normal { + normal: (0.922026, -0.38706, -0.00725269), + }, + Normal { + normal: (0.84691, -0.531556, -0.0138542), + }, + Normal { + normal: (0.535925, -0.8442, -0.0105045), + }, + Normal { + normal: (0.341188, -0.722822, -0.600931), + }, + Normal { + normal: (0.578664, -0.561139, -0.591838), + }, + Normal { + normal: (0.784869, -0.25102, -0.566542), + }, + Normal { + normal: (0.642681, -0.302257, -0.70399), + }, + Normal { + normal: (0.418589, -0.500042, -0.758117), + }, + Normal { + normal: (0.115806, -0.0791394, -0.990114), + }, + Normal { + normal: (0.232811, 0.0125652, -0.972441), + }, + Normal { + normal: (0.206662, 0.153601, -0.96628), + }, + Normal { + normal: (0.0244996, 0.161443, -0.986578), + }, + Normal { + normal: (0.00338193, 0.211115, -0.977455), + }, + Normal { + normal: (-0.134912, 0.687491, -0.713551), + }, + Normal { + normal: (-0.31954, 0.633073, -0.705062), + }, + Normal { + normal: (-0.603902, 0.461442, -0.649903), + }, + Normal { + normal: (-0.631816, 0.437169, -0.640072), + }, + Normal { + normal: (-0.424306, 0.612706, -0.66675), + }, + Normal { + normal: (-0.4258, 0.904753, 0.0108049), + }, + Normal { + normal: (0.0220472, 0.999756, 0.00162273), + }, + Normal { + normal: (0.999599, 0.0258705, 0.0115556), + }, + Normal { + normal: (0.709585, -0.704553, 0.00967183), + }, + Normal { + normal: (-0.259858, 0.791936, 0.552549), + }, + Normal { + normal: (0.00953916, 0.99972, -0.0216718), + }, + Normal { + normal: (0.410156, 0.332912, -0.849083), + }, + Normal { + normal: (0.541523, -0.54862, -0.637), + }, + Normal { + normal: (0.0463104, 0.455224, 0.889172), + }, + Normal { + normal: (-0.0106883, 0.988794, 0.148901), + }, + Normal { + normal: (-0.0443756, 0.682947, -0.729118), + }, + Normal { + normal: (0.122825, 0.00923214, -0.992385), + }, + Normal { + normal: (0.481839, -0.180439, 0.85748), + }, + Normal { + normal: (0.455272, 0.736752, 0.499925), + }, + Normal { + normal: (-0.220542, 0.907193, -0.358276), + }, + Normal { + normal: (-0.23592, 0.657249, -0.715797), + }, + Normal { + normal: (0.728092, -0.685302, -0.0155853), + }, + Normal { + normal: (0.888739, 0.45811, -0.0166791), + }, + Normal { + normal: (-0.260097, 0.965582, 0.000800195), + }, + Normal { + normal: (-0.371612, 0.928378, -0.00441745), + }, + Normal { + normal: (0.480166, -0.17836, -0.858853), + }, + Normal { + normal: (0.488103, 0.716801, -0.497947), + }, + Normal { + normal: (-0.222004, 0.905399, 0.361893), + }, + Normal { + normal: (-0.235405, 0.66318, 0.710477), + }, + Normal { + normal: (0.0587203, 0.437704, -0.8972), + }, + Normal { + normal: (0.00132612, 0.986459, -0.164003), + }, + Normal { + normal: (-0.0441901, 0.681677, 0.730317), + }, + Normal { + normal: (0.138801, -0.0341896, 0.98973), + }, + Normal { + normal: (-0.25889, 0.797206, -0.54538), + }, + Normal { + normal: (0.0122703, 0.999739, 0.0192865), + }, + Normal { + normal: (0.39863, 0.35489, 0.845663), + }, + Normal { + normal: (0.537564, -0.5814, 0.610737), + }, + Normal { + normal: (-0.0, 1.0, 0.0), + }, + Normal { + normal: (0.82454, 0.565804, 0.0), + }, + Normal { + normal: (0.917701, -0.397272, 0.0), + }, + Normal { + normal: (0.935269, -0.353939, 0.000112842), + }, + Normal { + normal: (0.780712, 0.624891, 0.0), + }, + Normal { + normal: (0.762641, 0.565035, 0.314825), + }, + Normal { + normal: (0.847982, -0.397998, 0.350034), + }, + Normal { + normal: (0.864141, -0.355261, 0.356441), + }, + Normal { + normal: (0.720991, 0.625625, 0.297933), + }, + Normal { + normal: (0.583357, 0.565165, 0.583338), + }, + Normal { + normal: (0.648485, -0.398726, 0.648448), + }, + Normal { + normal: (0.660872, -0.355894, 0.660748), + }, + Normal { + normal: (0.551862, 0.62529, 0.55178), + }, + Normal { + normal: (0.314824, 0.565051, 0.762629), + }, + Normal { + normal: (0.350045, -0.397976, 0.847988), + }, + Normal { + normal: (0.356474, -0.3552, 0.864153), + }, + Normal { + normal: (0.297983, 0.625515, 0.721067), + }, + Normal { + normal: (-0.0, 0.565804, 0.82454), + }, + Normal { + normal: (-0.0, -0.397272, 0.917701), + }, + Normal { + normal: (-0.000112839, -0.353939, 0.935269), + }, + Normal { + normal: (-0.0, 0.624891, 0.780712), + }, + Normal { + normal: (-0.314825, 0.565035, 0.762641), + }, + Normal { + normal: (-0.350034, -0.397998, 0.847982), + }, + Normal { + normal: (-0.356441, -0.355261, 0.864141), + }, + Normal { + normal: (-0.297933, 0.625625, 0.720991), + }, + Normal { + normal: (-0.583338, 0.565165, 0.583357), + }, + Normal { + normal: (-0.648448, -0.398726, 0.648485), + }, + Normal { + normal: (-0.660748, -0.355894, 0.660872), + }, + Normal { + normal: (-0.55178, 0.62529, 0.551862), + }, + Normal { + normal: (-0.762629, 0.565051, 0.314824), + }, + Normal { + normal: (-0.847988, -0.397976, 0.350045), + }, + Normal { + normal: (-0.864153, -0.3552, 0.356474), + }, + Normal { + normal: (-0.721067, 0.625515, 0.297983), + }, + Normal { + normal: (-0.82454, 0.565804, -0.0), + }, + Normal { + normal: (-0.917701, -0.397272, -0.0), + }, + Normal { + normal: (-0.935269, -0.353939, -0.000112839), + }, + Normal { + normal: (-0.780712, 0.624891, -0.0), + }, + Normal { + normal: (-0.76264, 0.565035, -0.314825), + }, + Normal { + normal: (-0.847982, -0.397998, -0.350034), + }, + Normal { + normal: (-0.864141, -0.355261, -0.356441), + }, + Normal { + normal: (-0.720991, 0.625625, -0.297933), + }, + Normal { + normal: (-0.583357, 0.565165, -0.583338), + }, + Normal { + normal: (-0.648485, -0.398726, -0.648448), + }, + Normal { + normal: (-0.660872, -0.355894, -0.660748), + }, + Normal { + normal: (-0.551862, 0.62529, -0.55178), + }, + Normal { + normal: (-0.314824, 0.565051, -0.762629), + }, + Normal { + normal: (-0.350045, -0.397976, -0.847988), + }, + Normal { + normal: (-0.356474, -0.3552, -0.864153), + }, + Normal { + normal: (-0.297983, 0.625515, -0.721067), + }, + Normal { + normal: (0.0, 0.565804, -0.82454), + }, + Normal { + normal: (0.0, -0.397272, -0.917701), + }, + Normal { + normal: (0.000112839, -0.353939, -0.935269), + }, + Normal { + normal: (0.0, 0.624891, -0.780712), + }, + Normal { + normal: (0.314825, 0.565035, -0.762641), + }, + Normal { + normal: (0.350034, -0.397998, -0.847982), + }, + Normal { + normal: (0.356441, -0.355261, -0.864141), + }, + Normal { + normal: (0.297933, 0.625625, -0.720991), + }, + Normal { + normal: (0.583338, 0.565165, -0.583357), + }, + Normal { + normal: (0.648448, -0.398726, -0.648485), + }, + Normal { + normal: (0.660748, -0.355894, -0.660872), + }, + Normal { + normal: (0.55178, 0.62529, -0.551862), + }, + Normal { + normal: (0.762629, 0.565051, -0.314824), + }, + Normal { + normal: (0.847988, -0.397976, -0.350045), + }, + Normal { + normal: (0.864153, -0.3552, -0.356474), + }, + Normal { + normal: (0.721067, 0.625515, -0.297983), + }, + Normal { + normal: (0.236584, 0.971611, 0.0), + }, + Normal { + normal: (0.173084, 0.984907, -0.0), + }, + Normal { + normal: (0.379703, 0.925108, 0.0), + }, + Normal { + normal: (0.526673, 0.850068, 0.0), + }, + Normal { + normal: (0.217978, 0.971775, 0.0902162), + }, + Normal { + normal: (0.15959, 0.984977, 0.0659615), + }, + Normal { + normal: (0.350498, 0.925312, 0.14474), + }, + Normal { + normal: (0.48559, 0.850653, 0.201474), + }, + Normal { + normal: (0.166631, 0.971838, 0.166631), + }, + Normal { + normal: (0.121908, 0.985026, 0.121908), + }, + Normal { + normal: (0.267668, 0.925585, 0.267668), + }, + Normal { + normal: (0.371315, 0.851029, 0.371315), + }, + Normal { + normal: (0.0902162, 0.971775, 0.217978), + }, + Normal { + normal: (0.0659615, 0.984977, 0.15959), + }, + Normal { + normal: (0.14474, 0.925312, 0.350498), + }, + Normal { + normal: (0.201474, 0.850653, 0.48559), + }, + Normal { + normal: (-0.0, 0.971611, 0.236584), + }, + Normal { + normal: (0.0, 0.984907, 0.173084), + }, + Normal { + normal: (0.0, 0.925108, 0.379703), + }, + Normal { + normal: (0.0, 0.850068, 0.526673), + }, + Normal { + normal: (-0.0902162, 0.971775, 0.217978), + }, + Normal { + normal: (-0.0659615, 0.984977, 0.15959), + }, + Normal { + normal: (-0.14474, 0.925312, 0.350498), + }, + Normal { + normal: (-0.201474, 0.850653, 0.48559), + }, + Normal { + normal: (-0.166631, 0.971838, 0.166631), + }, + Normal { + normal: (-0.121908, 0.985026, 0.121908), + }, + Normal { + normal: (-0.267668, 0.925585, 0.267668), + }, + Normal { + normal: (-0.371315, 0.851029, 0.371315), + }, + Normal { + normal: (-0.217978, 0.971775, 0.0902162), + }, + Normal { + normal: (-0.15959, 0.984977, 0.0659615), + }, + Normal { + normal: (-0.350498, 0.925312, 0.14474), + }, + Normal { + normal: (-0.48559, 0.850653, 0.201474), + }, + Normal { + normal: (-0.236583, 0.971611, -0.0), + }, + Normal { + normal: (-0.173084, 0.984907, 0.0), + }, + Normal { + normal: (-0.379703, 0.925108, -0.0), + }, + Normal { + normal: (-0.526673, 0.850068, 0.0), + }, + Normal { + normal: (-0.217978, 0.971775, -0.0902162), + }, + Normal { + normal: (-0.15959, 0.984977, -0.0659615), + }, + Normal { + normal: (-0.350498, 0.925312, -0.14474), + }, + Normal { + normal: (-0.48559, 0.850653, -0.201474), + }, + Normal { + normal: (-0.166631, 0.971838, -0.166631), + }, + Normal { + normal: (-0.121908, 0.985026, -0.121908), + }, + Normal { + normal: (-0.267668, 0.925585, -0.267668), + }, + Normal { + normal: (-0.371315, 0.851029, -0.371315), + }, + Normal { + normal: (-0.0902162, 0.971775, -0.217978), + }, + Normal { + normal: (-0.0659615, 0.984977, -0.15959), + }, + Normal { + normal: (-0.14474, 0.925312, -0.350498), + }, + Normal { + normal: (-0.201474, 0.850653, -0.485589), + }, + Normal { + normal: (0.0, 0.971611, -0.236584), + }, + Normal { + normal: (-0.0, 0.984907, -0.173084), + }, + Normal { + normal: (-0.0, 0.925108, -0.379703), + }, + Normal { + normal: (-0.0, 0.850068, -0.526673), + }, + Normal { + normal: (0.0902162, 0.971775, -0.217978), + }, + Normal { + normal: (0.0659615, 0.984977, -0.15959), + }, + Normal { + normal: (0.14474, 0.925312, -0.350498), + }, + Normal { + normal: (0.201474, 0.850653, -0.48559), + }, + Normal { + normal: (0.166631, 0.971838, -0.166631), + }, + Normal { + normal: (0.121908, 0.985026, -0.121908), + }, + Normal { + normal: (0.267668, 0.925585, -0.267668), + }, + Normal { + normal: (0.371315, 0.851029, -0.371315), + }, + Normal { + normal: (0.217978, 0.971775, -0.0902162), + }, + Normal { + normal: (0.15959, 0.984977, -0.0659615), + }, + Normal { + normal: (0.350498, 0.925312, -0.14474), + }, + Normal { + normal: (0.48559, 0.850653, -0.201474), + }, ]; const INDICES: [u16; 3072] = [ - 7, 6, 1, - 1, 2, 7, - 8, 7, 2, - 2, 3, 8, - 9, 8, 3, - 3, 4, 9, - 10, 9, 4, - 4, 5, 10, - 12, 11, 6, - 6, 7, 12, - 13, 12, 7, - 7, 8, 13, - 14, 13, 8, - 8, 9, 14, - 15, 14, 9, - 9, 10, 15, - 17, 16, 11, - 11, 12, 17, - 18, 17, 12, - 12, 13, 18, - 19, 18, 13, - 13, 14, 19, - 20, 19, 14, - 14, 15, 20, - 22, 21, 16, - 16, 17, 22, - 23, 22, 17, - 17, 18, 23, - 24, 23, 18, - 18, 19, 24, - 25, 24, 19, - 19, 20, 25, - 27, 26, 21, - 21, 22, 27, - 28, 27, 22, - 22, 23, 28, - 29, 28, 23, - 23, 24, 29, - 30, 29, 24, - 24, 25, 30, - 32, 31, 26, - 26, 27, 32, - 33, 32, 27, - 27, 28, 33, - 34, 33, 28, - 28, 29, 34, - 35, 34, 29, - 29, 30, 35, - 37, 36, 31, - 31, 32, 37, - 38, 37, 32, - 32, 33, 38, - 39, 38, 33, - 33, 34, 39, - 40, 39, 34, - 34, 35, 40, - 42, 41, 36, - 36, 37, 42, - 43, 42, 37, - 37, 38, 43, - 44, 43, 38, - 38, 39, 44, - 45, 44, 39, - 39, 40, 45, - 47, 46, 41, - 41, 42, 47, - 48, 47, 42, - 42, 43, 48, - 49, 48, 43, - 43, 44, 49, - 50, 49, 44, - 44, 45, 50, - 52, 51, 46, - 46, 47, 52, - 53, 52, 47, - 47, 48, 53, - 54, 53, 48, - 48, 49, 54, - 55, 54, 49, - 49, 50, 55, - 57, 56, 51, - 51, 52, 57, - 58, 57, 52, - 52, 53, 58, - 59, 58, 53, - 53, 54, 59, - 60, 59, 54, - 54, 55, 60, - 62, 61, 56, - 56, 57, 62, - 63, 62, 57, - 57, 58, 63, - 64, 63, 58, - 58, 59, 64, - 65, 64, 59, - 59, 60, 65, - 67, 66, 61, - 61, 62, 67, - 68, 67, 62, - 62, 63, 68, - 69, 68, 63, - 63, 64, 69, - 70, 69, 64, - 64, 65, 70, - 72, 71, 66, - 66, 67, 72, - 73, 72, 67, - 67, 68, 73, - 74, 73, 68, - 68, 69, 74, - 75, 74, 69, - 69, 70, 75, - 77, 76, 71, - 71, 72, 77, - 78, 77, 72, - 72, 73, 78, - 79, 78, 73, - 73, 74, 79, - 80, 79, 74, - 74, 75, 80, - 2, 1, 76, - 76, 77, 2, - 3, 2, 77, - 77, 78, 3, - 4, 3, 78, - 78, 79, 4, - 5, 4, 79, - 79, 80, 5, - 85, 10, 5, - 5, 81, 85, - 86, 85, 81, - 81, 82, 86, - 87, 86, 82, - 82, 83, 87, - 88, 87, 83, - 83, 84, 88, - 89, 15, 10, - 10, 85, 89, - 90, 89, 85, - 85, 86, 90, - 91, 90, 86, - 86, 87, 91, - 92, 91, 87, - 87, 88, 92, - 93, 20, 15, - 15, 89, 93, - 94, 93, 89, - 89, 90, 94, - 95, 94, 90, - 90, 91, 95, - 96, 95, 91, - 91, 92, 96, - 97, 25, 20, - 20, 93, 97, - 98, 97, 93, - 93, 94, 98, - 99, 98, 94, - 94, 95, 99, - 100, 99, 95, - 95, 96, 100, - 101, 30, 25, - 25, 97, 101, - 102, 101, 97, - 97, 98, 102, - 103, 102, 98, - 98, 99, 103, - 104, 103, 99, - 99, 100, 104, - 105, 35, 30, - 30, 101, 105, - 106, 105, 101, - 101, 102, 106, - 107, 106, 102, - 102, 103, 107, - 108, 107, 103, - 103, 104, 108, - 109, 40, 35, - 35, 105, 109, - 110, 109, 105, - 105, 106, 110, - 111, 110, 106, - 106, 107, 111, - 112, 111, 107, - 107, 108, 112, - 113, 45, 40, - 40, 109, 113, - 114, 113, 109, - 109, 110, 114, - 115, 114, 110, - 110, 111, 115, - 116, 115, 111, - 111, 112, 116, - 117, 50, 45, - 45, 113, 117, - 118, 117, 113, - 113, 114, 118, - 119, 118, 114, - 114, 115, 119, - 120, 119, 115, - 115, 116, 120, - 121, 55, 50, - 50, 117, 121, - 122, 121, 117, - 117, 118, 122, - 123, 122, 118, - 118, 119, 123, - 124, 123, 119, - 119, 120, 124, - 125, 60, 55, - 55, 121, 125, - 126, 125, 121, - 121, 122, 126, - 127, 126, 122, - 122, 123, 127, - 128, 127, 123, - 123, 124, 128, - 129, 65, 60, - 60, 125, 129, - 130, 129, 125, - 125, 126, 130, - 131, 130, 126, - 126, 127, 131, - 132, 131, 127, - 127, 128, 132, - 133, 70, 65, - 65, 129, 133, - 134, 133, 129, - 129, 130, 134, - 135, 134, 130, - 130, 131, 135, - 136, 135, 131, - 131, 132, 136, - 137, 75, 70, - 70, 133, 137, - 138, 137, 133, - 133, 134, 138, - 139, 138, 134, - 134, 135, 139, - 140, 139, 135, - 135, 136, 140, - 141, 80, 75, - 75, 137, 141, - 142, 141, 137, - 137, 138, 142, - 143, 142, 138, - 138, 139, 143, - 144, 143, 139, - 139, 140, 144, - 81, 5, 80, - 80, 141, 81, - 82, 81, 141, - 141, 142, 82, - 83, 82, 142, - 142, 143, 83, - 84, 83, 143, - 143, 144, 84, - 149, 88, 84, - 84, 145, 149, - 150, 149, 145, - 145, 146, 150, - 151, 150, 146, - 146, 147, 151, - 152, 151, 147, - 147, 148, 152, - 153, 92, 88, - 88, 149, 153, - 154, 153, 149, - 149, 150, 154, - 155, 154, 150, - 150, 151, 155, - 156, 155, 151, - 151, 152, 156, - 157, 96, 92, - 92, 153, 157, - 158, 157, 153, - 153, 154, 158, - 159, 158, 154, - 154, 155, 159, - 160, 159, 155, - 155, 156, 160, - 161, 100, 96, - 96, 157, 161, - 162, 161, 157, - 157, 158, 162, - 163, 162, 158, - 158, 159, 163, - 164, 163, 159, - 159, 160, 164, - 165, 104, 100, - 100, 161, 165, - 166, 165, 161, - 161, 162, 166, - 167, 166, 162, - 162, 163, 167, - 168, 167, 163, - 163, 164, 168, - 169, 108, 104, - 104, 165, 169, - 170, 169, 165, - 165, 166, 170, - 171, 170, 166, - 166, 167, 171, - 172, 171, 167, - 167, 168, 172, - 173, 112, 108, - 108, 169, 173, - 174, 173, 169, - 169, 170, 174, - 175, 174, 170, - 170, 171, 175, - 176, 175, 171, - 171, 172, 176, - 177, 116, 112, - 112, 173, 177, - 178, 177, 173, - 173, 174, 178, - 179, 178, 174, - 174, 175, 179, - 180, 179, 175, - 175, 176, 180, - 181, 120, 116, - 116, 177, 181, - 182, 181, 177, - 177, 178, 182, - 183, 182, 178, - 178, 179, 183, - 184, 183, 179, - 179, 180, 184, - 185, 124, 120, - 120, 181, 185, - 186, 185, 181, - 181, 182, 186, - 187, 186, 182, - 182, 183, 187, - 188, 187, 183, - 183, 184, 188, - 189, 128, 124, - 124, 185, 189, - 190, 189, 185, - 185, 186, 190, - 191, 190, 186, - 186, 187, 191, - 192, 191, 187, - 187, 188, 192, - 193, 132, 128, - 128, 189, 193, - 194, 193, 189, - 189, 190, 194, - 195, 194, 190, - 190, 191, 195, - 196, 195, 191, - 191, 192, 196, - 197, 136, 132, - 132, 193, 197, - 198, 197, 193, - 193, 194, 198, - 199, 198, 194, - 194, 195, 199, - 200, 199, 195, - 195, 196, 200, - 201, 140, 136, - 136, 197, 201, - 202, 201, 197, - 197, 198, 202, - 203, 202, 198, - 198, 199, 203, - 204, 203, 199, - 199, 200, 204, - 205, 144, 140, - 140, 201, 205, - 206, 205, 201, - 201, 202, 206, - 207, 206, 202, - 202, 203, 207, - 208, 207, 203, - 203, 204, 208, - 145, 84, 144, - 144, 205, 145, - 146, 145, 205, - 205, 206, 146, - 147, 146, 206, - 206, 207, 147, - 148, 147, 207, - 207, 208, 148, - 213, 152, 148, - 148, 209, 213, - 214, 213, 209, - 209, 210, 214, - 215, 214, 210, - 210, 211, 215, - 212, 215, 211, - 211, 212, 212, - 216, 156, 152, - 152, 213, 216, - 217, 216, 213, - 213, 214, 217, - 218, 217, 214, - 214, 215, 218, - 212, 218, 215, - 215, 212, 212, - 219, 160, 156, - 156, 216, 219, - 220, 219, 216, - 216, 217, 220, - 221, 220, 217, - 217, 218, 221, - 212, 221, 218, - 218, 212, 212, - 222, 164, 160, - 160, 219, 222, - 223, 222, 219, - 219, 220, 223, - 224, 223, 220, - 220, 221, 224, - 212, 224, 221, - 221, 212, 212, - 225, 168, 164, - 164, 222, 225, - 226, 225, 222, - 222, 223, 226, - 227, 226, 223, - 223, 224, 227, - 212, 227, 224, - 224, 212, 212, - 228, 172, 168, - 168, 225, 228, - 229, 228, 225, - 225, 226, 229, - 230, 229, 226, - 226, 227, 230, - 212, 230, 227, - 227, 212, 212, - 231, 176, 172, - 172, 228, 231, - 232, 231, 228, - 228, 229, 232, - 233, 232, 229, - 229, 230, 233, - 212, 233, 230, - 230, 212, 212, - 234, 180, 176, - 176, 231, 234, - 235, 234, 231, - 231, 232, 235, - 236, 235, 232, - 232, 233, 236, - 212, 236, 233, - 233, 212, 212, - 237, 184, 180, - 180, 234, 237, - 238, 237, 234, - 234, 235, 238, - 239, 238, 235, - 235, 236, 239, - 212, 239, 236, - 236, 212, 212, - 240, 188, 184, - 184, 237, 240, - 241, 240, 237, - 237, 238, 241, - 242, 241, 238, - 238, 239, 242, - 212, 242, 239, - 239, 212, 212, - 243, 192, 188, - 188, 240, 243, - 244, 243, 240, - 240, 241, 244, - 245, 244, 241, - 241, 242, 245, - 212, 245, 242, - 242, 212, 212, - 246, 196, 192, - 192, 243, 246, - 247, 246, 243, - 243, 244, 247, - 248, 247, 244, - 244, 245, 248, - 212, 248, 245, - 245, 212, 212, - 249, 200, 196, - 196, 246, 249, - 250, 249, 246, - 246, 247, 250, - 251, 250, 247, - 247, 248, 251, - 212, 251, 248, - 248, 212, 212, - 252, 204, 200, - 200, 249, 252, - 253, 252, 249, - 249, 250, 253, - 254, 253, 250, - 250, 251, 254, - 212, 254, 251, - 251, 212, 212, - 255, 208, 204, - 204, 252, 255, - 256, 255, 252, - 252, 253, 256, - 257, 256, 253, - 253, 254, 257, - 212, 257, 254, - 254, 212, 212, - 209, 148, 208, - 208, 255, 209, - 210, 209, 255, - 255, 256, 210, - 211, 210, 256, - 256, 257, 211, - 212, 211, 257, - 257, 212, 212, - 264, 263, 258, - 258, 259, 264, - 265, 264, 259, - 259, 260, 265, - 266, 265, 260, - 260, 261, 266, - 267, 266, 261, - 261, 262, 267, - 269, 268, 263, - 263, 264, 269, - 270, 269, 264, - 264, 265, 270, - 271, 270, 265, - 265, 266, 271, - 272, 271, 266, - 266, 267, 272, - 274, 273, 268, - 268, 269, 274, - 275, 274, 269, - 269, 270, 275, - 276, 275, 270, - 270, 271, 276, - 277, 276, 271, - 271, 272, 277, - 279, 278, 273, - 273, 274, 279, - 280, 279, 274, - 274, 275, 280, - 281, 280, 275, - 275, 276, 281, - 282, 281, 276, - 276, 277, 282, - 284, 283, 278, - 278, 279, 284, - 285, 284, 279, - 279, 280, 285, - 286, 285, 280, - 280, 281, 286, - 287, 286, 281, - 281, 282, 287, - 289, 288, 283, - 283, 284, 289, - 290, 289, 284, - 284, 285, 290, - 291, 290, 285, - 285, 286, 291, - 292, 291, 286, - 286, 287, 292, - 294, 293, 288, - 288, 289, 294, - 295, 294, 289, - 289, 290, 295, - 296, 295, 290, - 290, 291, 296, - 297, 296, 291, - 291, 292, 297, - 259, 258, 293, - 293, 294, 259, - 260, 259, 294, - 294, 295, 260, - 261, 260, 295, - 295, 296, 261, - 262, 261, 296, - 296, 297, 262, - 302, 267, 262, - 262, 298, 302, - 303, 302, 298, - 298, 299, 303, - 304, 303, 299, - 299, 300, 304, - 305, 304, 300, - 300, 301, 305, - 306, 272, 267, - 267, 302, 306, - 307, 306, 302, - 302, 303, 307, - 308, 307, 303, - 303, 304, 308, - 309, 308, 304, - 304, 305, 309, - 310, 277, 272, - 272, 306, 310, - 311, 310, 306, - 306, 307, 311, - 312, 311, 307, - 307, 308, 312, - 313, 312, 308, - 308, 309, 313, - 314, 282, 277, - 277, 310, 314, - 315, 314, 310, - 310, 311, 315, - 316, 315, 311, - 311, 312, 316, - 317, 316, 312, - 312, 313, 317, - 318, 287, 282, - 282, 314, 318, - 319, 318, 314, - 314, 315, 319, - 320, 319, 315, - 315, 316, 320, - 321, 320, 316, - 316, 317, 321, - 322, 292, 287, - 287, 318, 322, - 323, 322, 318, - 318, 319, 323, - 324, 323, 319, - 319, 320, 324, - 325, 324, 320, - 320, 321, 325, - 326, 297, 292, - 292, 322, 326, - 327, 326, 322, - 322, 323, 327, - 328, 327, 323, - 323, 324, 328, - 329, 328, 324, - 324, 325, 329, - 298, 262, 297, - 297, 326, 298, - 299, 298, 326, - 326, 327, 299, - 300, 299, 327, - 327, 328, 300, - 301, 300, 328, - 328, 329, 301, - 336, 335, 330, - 330, 331, 336, - 337, 336, 331, - 331, 332, 337, - 338, 337, 332, - 332, 333, 338, - 339, 338, 333, - 333, 334, 339, - 341, 340, 335, - 335, 336, 341, - 342, 341, 336, - 336, 337, 342, - 343, 342, 337, - 337, 338, 343, - 344, 343, 338, - 338, 339, 344, - 346, 345, 340, - 340, 341, 346, - 347, 346, 341, - 341, 342, 347, - 348, 347, 342, - 342, 343, 348, - 349, 348, 343, - 343, 344, 349, - 351, 350, 345, - 345, 346, 351, - 352, 351, 346, - 346, 347, 352, - 353, 352, 347, - 347, 348, 353, - 354, 353, 348, - 348, 349, 354, - 356, 355, 350, - 350, 351, 356, - 357, 356, 351, - 351, 352, 357, - 358, 357, 352, - 352, 353, 358, - 359, 358, 353, - 353, 354, 359, - 361, 360, 355, - 355, 356, 361, - 362, 361, 356, - 356, 357, 362, - 363, 362, 357, - 357, 358, 363, - 364, 363, 358, - 358, 359, 364, - 366, 365, 360, - 360, 361, 366, - 367, 366, 361, - 361, 362, 367, - 368, 367, 362, - 362, 363, 368, - 369, 368, 363, - 363, 364, 369, - 331, 330, 365, - 365, 366, 331, - 332, 331, 366, - 366, 367, 332, - 333, 332, 367, - 367, 368, 333, - 334, 333, 368, - 368, 369, 334, - 374, 339, 334, - 334, 370, 374, - 375, 374, 370, - 370, 371, 375, - 376, 375, 371, - 371, 372, 376, - 377, 376, 372, - 372, 373, 377, - 378, 344, 339, - 339, 374, 378, - 379, 378, 374, - 374, 375, 379, - 380, 379, 375, - 375, 376, 380, - 381, 380, 376, - 376, 377, 381, - 382, 349, 344, - 344, 378, 382, - 383, 382, 378, - 378, 379, 383, - 384, 383, 379, - 379, 380, 384, - 385, 384, 380, - 380, 381, 385, - 386, 354, 349, - 349, 382, 386, - 387, 386, 382, - 382, 383, 387, - 388, 387, 383, - 383, 384, 388, - 389, 388, 384, - 384, 385, 389, - 390, 359, 354, - 354, 386, 390, - 391, 390, 386, - 386, 387, 391, - 392, 391, 387, - 387, 388, 392, - 393, 392, 388, - 388, 389, 393, - 394, 364, 359, - 359, 390, 394, - 395, 394, 390, - 390, 391, 395, - 396, 395, 391, - 391, 392, 396, - 397, 396, 392, - 392, 393, 397, - 398, 369, 364, - 364, 394, 398, - 399, 398, 394, - 394, 395, 399, - 400, 399, 395, - 395, 396, 400, - 401, 400, 396, - 396, 397, 401, - 370, 334, 369, - 369, 398, 370, - 371, 370, 398, - 398, 399, 371, - 372, 371, 399, - 399, 400, 372, - 373, 372, 400, - 400, 401, 373, - 407, 402, 402, - 402, 403, 407, - 408, 407, 403, - 403, 404, 408, - 409, 408, 404, - 404, 405, 409, - 410, 409, 405, - 405, 406, 410, - 411, 402, 402, - 402, 407, 411, - 412, 411, 407, - 407, 408, 412, - 413, 412, 408, - 408, 409, 413, - 414, 413, 409, - 409, 410, 414, - 415, 402, 402, - 402, 411, 415, - 416, 415, 411, - 411, 412, 416, - 417, 416, 412, - 412, 413, 417, - 418, 417, 413, - 413, 414, 418, - 419, 402, 402, - 402, 415, 419, - 420, 419, 415, - 415, 416, 420, - 421, 420, 416, - 416, 417, 421, - 422, 421, 417, - 417, 418, 422, - 423, 402, 402, - 402, 419, 423, - 424, 423, 419, - 419, 420, 424, - 425, 424, 420, - 420, 421, 425, - 426, 425, 421, - 421, 422, 426, - 427, 402, 402, - 402, 423, 427, - 428, 427, 423, - 423, 424, 428, - 429, 428, 424, - 424, 425, 429, - 430, 429, 425, - 425, 426, 430, - 431, 402, 402, - 402, 427, 431, - 432, 431, 427, - 427, 428, 432, - 433, 432, 428, - 428, 429, 433, - 434, 433, 429, - 429, 430, 434, - 435, 402, 402, - 402, 431, 435, - 436, 435, 431, - 431, 432, 436, - 437, 436, 432, - 432, 433, 437, - 438, 437, 433, - 433, 434, 438, - 439, 402, 402, - 402, 435, 439, - 440, 439, 435, - 435, 436, 440, - 441, 440, 436, - 436, 437, 441, - 442, 441, 437, - 437, 438, 442, - 443, 402, 402, - 402, 439, 443, - 444, 443, 439, - 439, 440, 444, - 445, 444, 440, - 440, 441, 445, - 446, 445, 441, - 441, 442, 446, - 447, 402, 402, - 402, 443, 447, - 448, 447, 443, - 443, 444, 448, - 449, 448, 444, - 444, 445, 449, - 450, 449, 445, - 445, 446, 450, - 451, 402, 402, - 402, 447, 451, - 452, 451, 447, - 447, 448, 452, - 453, 452, 448, - 448, 449, 453, - 454, 453, 449, - 449, 450, 454, - 455, 402, 402, - 402, 451, 455, - 456, 455, 451, - 451, 452, 456, - 457, 456, 452, - 452, 453, 457, - 458, 457, 453, - 453, 454, 458, - 459, 402, 402, - 402, 455, 459, - 460, 459, 455, - 455, 456, 460, - 461, 460, 456, - 456, 457, 461, - 462, 461, 457, - 457, 458, 462, - 463, 402, 402, - 402, 459, 463, - 464, 463, 459, - 459, 460, 464, - 465, 464, 460, - 460, 461, 465, - 466, 465, 461, - 461, 462, 466, - 403, 402, 402, - 402, 463, 403, - 404, 403, 463, - 463, 464, 404, - 405, 404, 464, - 464, 465, 405, - 406, 405, 465, - 465, 466, 406, - 471, 410, 406, - 406, 467, 471, - 472, 471, 467, - 467, 468, 472, - 473, 472, 468, - 468, 469, 473, - 474, 473, 469, - 469, 470, 474, - 475, 414, 410, - 410, 471, 475, - 476, 475, 471, - 471, 472, 476, - 477, 476, 472, - 472, 473, 477, - 478, 477, 473, - 473, 474, 478, - 479, 418, 414, - 414, 475, 479, - 480, 479, 475, - 475, 476, 480, - 481, 480, 476, - 476, 477, 481, - 482, 481, 477, - 477, 478, 482, - 483, 422, 418, - 418, 479, 483, - 484, 483, 479, - 479, 480, 484, - 485, 484, 480, - 480, 481, 485, - 486, 485, 481, - 481, 482, 486, - 487, 426, 422, - 422, 483, 487, - 488, 487, 483, - 483, 484, 488, - 489, 488, 484, - 484, 485, 489, - 490, 489, 485, - 485, 486, 490, - 491, 430, 426, - 426, 487, 491, - 492, 491, 487, - 487, 488, 492, - 493, 492, 488, - 488, 489, 493, - 494, 493, 489, - 489, 490, 494, - 495, 434, 430, - 430, 491, 495, - 496, 495, 491, - 491, 492, 496, - 497, 496, 492, - 492, 493, 497, - 498, 497, 493, - 493, 494, 498, - 499, 438, 434, - 434, 495, 499, - 500, 499, 495, - 495, 496, 500, - 501, 500, 496, - 496, 497, 501, - 502, 501, 497, - 497, 498, 502, - 503, 442, 438, - 438, 499, 503, - 504, 503, 499, - 499, 500, 504, - 505, 504, 500, - 500, 501, 505, - 506, 505, 501, - 501, 502, 506, - 507, 446, 442, - 442, 503, 507, - 508, 507, 503, - 503, 504, 508, - 509, 508, 504, - 504, 505, 509, - 510, 509, 505, - 505, 506, 510, - 511, 450, 446, - 446, 507, 511, - 512, 511, 507, - 507, 508, 512, - 513, 512, 508, - 508, 509, 513, - 514, 513, 509, - 509, 510, 514, - 515, 454, 450, - 450, 511, 515, - 516, 515, 511, - 511, 512, 516, - 517, 516, 512, - 512, 513, 517, - 518, 517, 513, - 513, 514, 518, - 519, 458, 454, - 454, 515, 519, - 520, 519, 515, - 515, 516, 520, - 521, 520, 516, - 516, 517, 521, - 522, 521, 517, - 517, 518, 522, - 523, 462, 458, - 458, 519, 523, - 524, 523, 519, - 519, 520, 524, - 525, 524, 520, - 520, 521, 525, - 526, 525, 521, - 521, 522, 526, - 527, 466, 462, - 462, 523, 527, - 528, 527, 523, - 523, 524, 528, - 529, 528, 524, - 524, 525, 529, - 530, 529, 525, - 525, 526, 530, - 467, 406, 466, - 466, 527, 467, - 468, 467, 527, - 527, 528, 468, - 469, 468, 528, - 528, 529, 469, - 470, 469, 529, - 529, 530, 470u16, + 7, 6, 1, 1, 2, 7, 8, 7, 2, 2, 3, 8, 9, 8, 3, 3, 4, 9, 10, 9, 4, 4, 5, 10, 12, 11, 6, 6, 7, 12, + 13, 12, 7, 7, 8, 13, 14, 13, 8, 8, 9, 14, 15, 14, 9, 9, 10, 15, 17, 16, 11, 11, 12, 17, 18, 17, + 12, 12, 13, 18, 19, 18, 13, 13, 14, 19, 20, 19, 14, 14, 15, 20, 22, 21, 16, 16, 17, 22, 23, 22, + 17, 17, 18, 23, 24, 23, 18, 18, 19, 24, 25, 24, 19, 19, 20, 25, 27, 26, 21, 21, 22, 27, 28, 27, + 22, 22, 23, 28, 29, 28, 23, 23, 24, 29, 30, 29, 24, 24, 25, 30, 32, 31, 26, 26, 27, 32, 33, 32, + 27, 27, 28, 33, 34, 33, 28, 28, 29, 34, 35, 34, 29, 29, 30, 35, 37, 36, 31, 31, 32, 37, 38, 37, + 32, 32, 33, 38, 39, 38, 33, 33, 34, 39, 40, 39, 34, 34, 35, 40, 42, 41, 36, 36, 37, 42, 43, 42, + 37, 37, 38, 43, 44, 43, 38, 38, 39, 44, 45, 44, 39, 39, 40, 45, 47, 46, 41, 41, 42, 47, 48, 47, + 42, 42, 43, 48, 49, 48, 43, 43, 44, 49, 50, 49, 44, 44, 45, 50, 52, 51, 46, 46, 47, 52, 53, 52, + 47, 47, 48, 53, 54, 53, 48, 48, 49, 54, 55, 54, 49, 49, 50, 55, 57, 56, 51, 51, 52, 57, 58, 57, + 52, 52, 53, 58, 59, 58, 53, 53, 54, 59, 60, 59, 54, 54, 55, 60, 62, 61, 56, 56, 57, 62, 63, 62, + 57, 57, 58, 63, 64, 63, 58, 58, 59, 64, 65, 64, 59, 59, 60, 65, 67, 66, 61, 61, 62, 67, 68, 67, + 62, 62, 63, 68, 69, 68, 63, 63, 64, 69, 70, 69, 64, 64, 65, 70, 72, 71, 66, 66, 67, 72, 73, 72, + 67, 67, 68, 73, 74, 73, 68, 68, 69, 74, 75, 74, 69, 69, 70, 75, 77, 76, 71, 71, 72, 77, 78, 77, + 72, 72, 73, 78, 79, 78, 73, 73, 74, 79, 80, 79, 74, 74, 75, 80, 2, 1, 76, 76, 77, 2, 3, 2, 77, + 77, 78, 3, 4, 3, 78, 78, 79, 4, 5, 4, 79, 79, 80, 5, 85, 10, 5, 5, 81, 85, 86, 85, 81, 81, 82, + 86, 87, 86, 82, 82, 83, 87, 88, 87, 83, 83, 84, 88, 89, 15, 10, 10, 85, 89, 90, 89, 85, 85, 86, + 90, 91, 90, 86, 86, 87, 91, 92, 91, 87, 87, 88, 92, 93, 20, 15, 15, 89, 93, 94, 93, 89, 89, 90, + 94, 95, 94, 90, 90, 91, 95, 96, 95, 91, 91, 92, 96, 97, 25, 20, 20, 93, 97, 98, 97, 93, 93, 94, + 98, 99, 98, 94, 94, 95, 99, 100, 99, 95, 95, 96, 100, 101, 30, 25, 25, 97, 101, 102, 101, 97, + 97, 98, 102, 103, 102, 98, 98, 99, 103, 104, 103, 99, 99, 100, 104, 105, 35, 30, 30, 101, 105, + 106, 105, 101, 101, 102, 106, 107, 106, 102, 102, 103, 107, 108, 107, 103, 103, 104, 108, 109, + 40, 35, 35, 105, 109, 110, 109, 105, 105, 106, 110, 111, 110, 106, 106, 107, 111, 112, 111, + 107, 107, 108, 112, 113, 45, 40, 40, 109, 113, 114, 113, 109, 109, 110, 114, 115, 114, 110, + 110, 111, 115, 116, 115, 111, 111, 112, 116, 117, 50, 45, 45, 113, 117, 118, 117, 113, 113, + 114, 118, 119, 118, 114, 114, 115, 119, 120, 119, 115, 115, 116, 120, 121, 55, 50, 50, 117, + 121, 122, 121, 117, 117, 118, 122, 123, 122, 118, 118, 119, 123, 124, 123, 119, 119, 120, 124, + 125, 60, 55, 55, 121, 125, 126, 125, 121, 121, 122, 126, 127, 126, 122, 122, 123, 127, 128, + 127, 123, 123, 124, 128, 129, 65, 60, 60, 125, 129, 130, 129, 125, 125, 126, 130, 131, 130, + 126, 126, 127, 131, 132, 131, 127, 127, 128, 132, 133, 70, 65, 65, 129, 133, 134, 133, 129, + 129, 130, 134, 135, 134, 130, 130, 131, 135, 136, 135, 131, 131, 132, 136, 137, 75, 70, 70, + 133, 137, 138, 137, 133, 133, 134, 138, 139, 138, 134, 134, 135, 139, 140, 139, 135, 135, 136, + 140, 141, 80, 75, 75, 137, 141, 142, 141, 137, 137, 138, 142, 143, 142, 138, 138, 139, 143, + 144, 143, 139, 139, 140, 144, 81, 5, 80, 80, 141, 81, 82, 81, 141, 141, 142, 82, 83, 82, 142, + 142, 143, 83, 84, 83, 143, 143, 144, 84, 149, 88, 84, 84, 145, 149, 150, 149, 145, 145, 146, + 150, 151, 150, 146, 146, 147, 151, 152, 151, 147, 147, 148, 152, 153, 92, 88, 88, 149, 153, + 154, 153, 149, 149, 150, 154, 155, 154, 150, 150, 151, 155, 156, 155, 151, 151, 152, 156, 157, + 96, 92, 92, 153, 157, 158, 157, 153, 153, 154, 158, 159, 158, 154, 154, 155, 159, 160, 159, + 155, 155, 156, 160, 161, 100, 96, 96, 157, 161, 162, 161, 157, 157, 158, 162, 163, 162, 158, + 158, 159, 163, 164, 163, 159, 159, 160, 164, 165, 104, 100, 100, 161, 165, 166, 165, 161, 161, + 162, 166, 167, 166, 162, 162, 163, 167, 168, 167, 163, 163, 164, 168, 169, 108, 104, 104, 165, + 169, 170, 169, 165, 165, 166, 170, 171, 170, 166, 166, 167, 171, 172, 171, 167, 167, 168, 172, + 173, 112, 108, 108, 169, 173, 174, 173, 169, 169, 170, 174, 175, 174, 170, 170, 171, 175, 176, + 175, 171, 171, 172, 176, 177, 116, 112, 112, 173, 177, 178, 177, 173, 173, 174, 178, 179, 178, + 174, 174, 175, 179, 180, 179, 175, 175, 176, 180, 181, 120, 116, 116, 177, 181, 182, 181, 177, + 177, 178, 182, 183, 182, 178, 178, 179, 183, 184, 183, 179, 179, 180, 184, 185, 124, 120, 120, + 181, 185, 186, 185, 181, 181, 182, 186, 187, 186, 182, 182, 183, 187, 188, 187, 183, 183, 184, + 188, 189, 128, 124, 124, 185, 189, 190, 189, 185, 185, 186, 190, 191, 190, 186, 186, 187, 191, + 192, 191, 187, 187, 188, 192, 193, 132, 128, 128, 189, 193, 194, 193, 189, 189, 190, 194, 195, + 194, 190, 190, 191, 195, 196, 195, 191, 191, 192, 196, 197, 136, 132, 132, 193, 197, 198, 197, + 193, 193, 194, 198, 199, 198, 194, 194, 195, 199, 200, 199, 195, 195, 196, 200, 201, 140, 136, + 136, 197, 201, 202, 201, 197, 197, 198, 202, 203, 202, 198, 198, 199, 203, 204, 203, 199, 199, + 200, 204, 205, 144, 140, 140, 201, 205, 206, 205, 201, 201, 202, 206, 207, 206, 202, 202, 203, + 207, 208, 207, 203, 203, 204, 208, 145, 84, 144, 144, 205, 145, 146, 145, 205, 205, 206, 146, + 147, 146, 206, 206, 207, 147, 148, 147, 207, 207, 208, 148, 213, 152, 148, 148, 209, 213, 214, + 213, 209, 209, 210, 214, 215, 214, 210, 210, 211, 215, 212, 215, 211, 211, 212, 212, 216, 156, + 152, 152, 213, 216, 217, 216, 213, 213, 214, 217, 218, 217, 214, 214, 215, 218, 212, 218, 215, + 215, 212, 212, 219, 160, 156, 156, 216, 219, 220, 219, 216, 216, 217, 220, 221, 220, 217, 217, + 218, 221, 212, 221, 218, 218, 212, 212, 222, 164, 160, 160, 219, 222, 223, 222, 219, 219, 220, + 223, 224, 223, 220, 220, 221, 224, 212, 224, 221, 221, 212, 212, 225, 168, 164, 164, 222, 225, + 226, 225, 222, 222, 223, 226, 227, 226, 223, 223, 224, 227, 212, 227, 224, 224, 212, 212, 228, + 172, 168, 168, 225, 228, 229, 228, 225, 225, 226, 229, 230, 229, 226, 226, 227, 230, 212, 230, + 227, 227, 212, 212, 231, 176, 172, 172, 228, 231, 232, 231, 228, 228, 229, 232, 233, 232, 229, + 229, 230, 233, 212, 233, 230, 230, 212, 212, 234, 180, 176, 176, 231, 234, 235, 234, 231, 231, + 232, 235, 236, 235, 232, 232, 233, 236, 212, 236, 233, 233, 212, 212, 237, 184, 180, 180, 234, + 237, 238, 237, 234, 234, 235, 238, 239, 238, 235, 235, 236, 239, 212, 239, 236, 236, 212, 212, + 240, 188, 184, 184, 237, 240, 241, 240, 237, 237, 238, 241, 242, 241, 238, 238, 239, 242, 212, + 242, 239, 239, 212, 212, 243, 192, 188, 188, 240, 243, 244, 243, 240, 240, 241, 244, 245, 244, + 241, 241, 242, 245, 212, 245, 242, 242, 212, 212, 246, 196, 192, 192, 243, 246, 247, 246, 243, + 243, 244, 247, 248, 247, 244, 244, 245, 248, 212, 248, 245, 245, 212, 212, 249, 200, 196, 196, + 246, 249, 250, 249, 246, 246, 247, 250, 251, 250, 247, 247, 248, 251, 212, 251, 248, 248, 212, + 212, 252, 204, 200, 200, 249, 252, 253, 252, 249, 249, 250, 253, 254, 253, 250, 250, 251, 254, + 212, 254, 251, 251, 212, 212, 255, 208, 204, 204, 252, 255, 256, 255, 252, 252, 253, 256, 257, + 256, 253, 253, 254, 257, 212, 257, 254, 254, 212, 212, 209, 148, 208, 208, 255, 209, 210, 209, + 255, 255, 256, 210, 211, 210, 256, 256, 257, 211, 212, 211, 257, 257, 212, 212, 264, 263, 258, + 258, 259, 264, 265, 264, 259, 259, 260, 265, 266, 265, 260, 260, 261, 266, 267, 266, 261, 261, + 262, 267, 269, 268, 263, 263, 264, 269, 270, 269, 264, 264, 265, 270, 271, 270, 265, 265, 266, + 271, 272, 271, 266, 266, 267, 272, 274, 273, 268, 268, 269, 274, 275, 274, 269, 269, 270, 275, + 276, 275, 270, 270, 271, 276, 277, 276, 271, 271, 272, 277, 279, 278, 273, 273, 274, 279, 280, + 279, 274, 274, 275, 280, 281, 280, 275, 275, 276, 281, 282, 281, 276, 276, 277, 282, 284, 283, + 278, 278, 279, 284, 285, 284, 279, 279, 280, 285, 286, 285, 280, 280, 281, 286, 287, 286, 281, + 281, 282, 287, 289, 288, 283, 283, 284, 289, 290, 289, 284, 284, 285, 290, 291, 290, 285, 285, + 286, 291, 292, 291, 286, 286, 287, 292, 294, 293, 288, 288, 289, 294, 295, 294, 289, 289, 290, + 295, 296, 295, 290, 290, 291, 296, 297, 296, 291, 291, 292, 297, 259, 258, 293, 293, 294, 259, + 260, 259, 294, 294, 295, 260, 261, 260, 295, 295, 296, 261, 262, 261, 296, 296, 297, 262, 302, + 267, 262, 262, 298, 302, 303, 302, 298, 298, 299, 303, 304, 303, 299, 299, 300, 304, 305, 304, + 300, 300, 301, 305, 306, 272, 267, 267, 302, 306, 307, 306, 302, 302, 303, 307, 308, 307, 303, + 303, 304, 308, 309, 308, 304, 304, 305, 309, 310, 277, 272, 272, 306, 310, 311, 310, 306, 306, + 307, 311, 312, 311, 307, 307, 308, 312, 313, 312, 308, 308, 309, 313, 314, 282, 277, 277, 310, + 314, 315, 314, 310, 310, 311, 315, 316, 315, 311, 311, 312, 316, 317, 316, 312, 312, 313, 317, + 318, 287, 282, 282, 314, 318, 319, 318, 314, 314, 315, 319, 320, 319, 315, 315, 316, 320, 321, + 320, 316, 316, 317, 321, 322, 292, 287, 287, 318, 322, 323, 322, 318, 318, 319, 323, 324, 323, + 319, 319, 320, 324, 325, 324, 320, 320, 321, 325, 326, 297, 292, 292, 322, 326, 327, 326, 322, + 322, 323, 327, 328, 327, 323, 323, 324, 328, 329, 328, 324, 324, 325, 329, 298, 262, 297, 297, + 326, 298, 299, 298, 326, 326, 327, 299, 300, 299, 327, 327, 328, 300, 301, 300, 328, 328, 329, + 301, 336, 335, 330, 330, 331, 336, 337, 336, 331, 331, 332, 337, 338, 337, 332, 332, 333, 338, + 339, 338, 333, 333, 334, 339, 341, 340, 335, 335, 336, 341, 342, 341, 336, 336, 337, 342, 343, + 342, 337, 337, 338, 343, 344, 343, 338, 338, 339, 344, 346, 345, 340, 340, 341, 346, 347, 346, + 341, 341, 342, 347, 348, 347, 342, 342, 343, 348, 349, 348, 343, 343, 344, 349, 351, 350, 345, + 345, 346, 351, 352, 351, 346, 346, 347, 352, 353, 352, 347, 347, 348, 353, 354, 353, 348, 348, + 349, 354, 356, 355, 350, 350, 351, 356, 357, 356, 351, 351, 352, 357, 358, 357, 352, 352, 353, + 358, 359, 358, 353, 353, 354, 359, 361, 360, 355, 355, 356, 361, 362, 361, 356, 356, 357, 362, + 363, 362, 357, 357, 358, 363, 364, 363, 358, 358, 359, 364, 366, 365, 360, 360, 361, 366, 367, + 366, 361, 361, 362, 367, 368, 367, 362, 362, 363, 368, 369, 368, 363, 363, 364, 369, 331, 330, + 365, 365, 366, 331, 332, 331, 366, 366, 367, 332, 333, 332, 367, 367, 368, 333, 334, 333, 368, + 368, 369, 334, 374, 339, 334, 334, 370, 374, 375, 374, 370, 370, 371, 375, 376, 375, 371, 371, + 372, 376, 377, 376, 372, 372, 373, 377, 378, 344, 339, 339, 374, 378, 379, 378, 374, 374, 375, + 379, 380, 379, 375, 375, 376, 380, 381, 380, 376, 376, 377, 381, 382, 349, 344, 344, 378, 382, + 383, 382, 378, 378, 379, 383, 384, 383, 379, 379, 380, 384, 385, 384, 380, 380, 381, 385, 386, + 354, 349, 349, 382, 386, 387, 386, 382, 382, 383, 387, 388, 387, 383, 383, 384, 388, 389, 388, + 384, 384, 385, 389, 390, 359, 354, 354, 386, 390, 391, 390, 386, 386, 387, 391, 392, 391, 387, + 387, 388, 392, 393, 392, 388, 388, 389, 393, 394, 364, 359, 359, 390, 394, 395, 394, 390, 390, + 391, 395, 396, 395, 391, 391, 392, 396, 397, 396, 392, 392, 393, 397, 398, 369, 364, 364, 394, + 398, 399, 398, 394, 394, 395, 399, 400, 399, 395, 395, 396, 400, 401, 400, 396, 396, 397, 401, + 370, 334, 369, 369, 398, 370, 371, 370, 398, 398, 399, 371, 372, 371, 399, 399, 400, 372, 373, + 372, 400, 400, 401, 373, 407, 402, 402, 402, 403, 407, 408, 407, 403, 403, 404, 408, 409, 408, + 404, 404, 405, 409, 410, 409, 405, 405, 406, 410, 411, 402, 402, 402, 407, 411, 412, 411, 407, + 407, 408, 412, 413, 412, 408, 408, 409, 413, 414, 413, 409, 409, 410, 414, 415, 402, 402, 402, + 411, 415, 416, 415, 411, 411, 412, 416, 417, 416, 412, 412, 413, 417, 418, 417, 413, 413, 414, + 418, 419, 402, 402, 402, 415, 419, 420, 419, 415, 415, 416, 420, 421, 420, 416, 416, 417, 421, + 422, 421, 417, 417, 418, 422, 423, 402, 402, 402, 419, 423, 424, 423, 419, 419, 420, 424, 425, + 424, 420, 420, 421, 425, 426, 425, 421, 421, 422, 426, 427, 402, 402, 402, 423, 427, 428, 427, + 423, 423, 424, 428, 429, 428, 424, 424, 425, 429, 430, 429, 425, 425, 426, 430, 431, 402, 402, + 402, 427, 431, 432, 431, 427, 427, 428, 432, 433, 432, 428, 428, 429, 433, 434, 433, 429, 429, + 430, 434, 435, 402, 402, 402, 431, 435, 436, 435, 431, 431, 432, 436, 437, 436, 432, 432, 433, + 437, 438, 437, 433, 433, 434, 438, 439, 402, 402, 402, 435, 439, 440, 439, 435, 435, 436, 440, + 441, 440, 436, 436, 437, 441, 442, 441, 437, 437, 438, 442, 443, 402, 402, 402, 439, 443, 444, + 443, 439, 439, 440, 444, 445, 444, 440, 440, 441, 445, 446, 445, 441, 441, 442, 446, 447, 402, + 402, 402, 443, 447, 448, 447, 443, 443, 444, 448, 449, 448, 444, 444, 445, 449, 450, 449, 445, + 445, 446, 450, 451, 402, 402, 402, 447, 451, 452, 451, 447, 447, 448, 452, 453, 452, 448, 448, + 449, 453, 454, 453, 449, 449, 450, 454, 455, 402, 402, 402, 451, 455, 456, 455, 451, 451, 452, + 456, 457, 456, 452, 452, 453, 457, 458, 457, 453, 453, 454, 458, 459, 402, 402, 402, 455, 459, + 460, 459, 455, 455, 456, 460, 461, 460, 456, 456, 457, 461, 462, 461, 457, 457, 458, 462, 463, + 402, 402, 402, 459, 463, 464, 463, 459, 459, 460, 464, 465, 464, 460, 460, 461, 465, 466, 465, + 461, 461, 462, 466, 403, 402, 402, 402, 463, 403, 404, 403, 463, 463, 464, 404, 405, 404, 464, + 464, 465, 405, 406, 405, 465, 465, 466, 406, 471, 410, 406, 406, 467, 471, 472, 471, 467, 467, + 468, 472, 473, 472, 468, 468, 469, 473, 474, 473, 469, 469, 470, 474, 475, 414, 410, 410, 471, + 475, 476, 475, 471, 471, 472, 476, 477, 476, 472, 472, 473, 477, 478, 477, 473, 473, 474, 478, + 479, 418, 414, 414, 475, 479, 480, 479, 475, 475, 476, 480, 481, 480, 476, 476, 477, 481, 482, + 481, 477, 477, 478, 482, 483, 422, 418, 418, 479, 483, 484, 483, 479, 479, 480, 484, 485, 484, + 480, 480, 481, 485, 486, 485, 481, 481, 482, 486, 487, 426, 422, 422, 483, 487, 488, 487, 483, + 483, 484, 488, 489, 488, 484, 484, 485, 489, 490, 489, 485, 485, 486, 490, 491, 430, 426, 426, + 487, 491, 492, 491, 487, 487, 488, 492, 493, 492, 488, 488, 489, 493, 494, 493, 489, 489, 490, + 494, 495, 434, 430, 430, 491, 495, 496, 495, 491, 491, 492, 496, 497, 496, 492, 492, 493, 497, + 498, 497, 493, 493, 494, 498, 499, 438, 434, 434, 495, 499, 500, 499, 495, 495, 496, 500, 501, + 500, 496, 496, 497, 501, 502, 501, 497, 497, 498, 502, 503, 442, 438, 438, 499, 503, 504, 503, + 499, 499, 500, 504, 505, 504, 500, 500, 501, 505, 506, 505, 501, 501, 502, 506, 507, 446, 442, + 442, 503, 507, 508, 507, 503, 503, 504, 508, 509, 508, 504, 504, 505, 509, 510, 509, 505, 505, + 506, 510, 511, 450, 446, 446, 507, 511, 512, 511, 507, 507, 508, 512, 513, 512, 508, 508, 509, + 513, 514, 513, 509, 509, 510, 514, 515, 454, 450, 450, 511, 515, 516, 515, 511, 511, 512, 516, + 517, 516, 512, 512, 513, 517, 518, 517, 513, 513, 514, 518, 519, 458, 454, 454, 515, 519, 520, + 519, 515, 515, 516, 520, 521, 520, 516, 516, 517, 521, 522, 521, 517, 517, 518, 522, 523, 462, + 458, 458, 519, 523, 524, 523, 519, 519, 520, 524, 525, 524, 520, 520, 521, 525, 526, 525, 521, + 521, 522, 526, 527, 466, 462, 462, 523, 527, 528, 527, 523, 523, 524, 528, 529, 528, 524, 524, + 525, 529, 530, 529, 525, 525, 526, 530, 467, 406, 466, 466, 527, 467, 468, 467, 527, 527, 528, + 468, 469, 468, 528, 528, 529, 469, 470, 469, 529, 529, 530, 470u16, ]; diff --git a/examples/vulkan/vk_triangle.rs b/examples/vulkan/vk_triangle.rs index 9c958e5de..b7d10135e 100644 --- a/examples/vulkan/vk_triangle.rs +++ b/examples/vulkan/vk_triangle.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use std::cell::RefCell; use std::sync::Arc; @@ -124,8 +122,12 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { let dynamic_state = vk::DynamicState::default().viewports(vec![viewport]); // Update the view_fbo. - model.view_fbo.borrow_mut() - .update(&frame, model.render_pass.clone(), |builder, image| builder.add(image)) + model + .view_fbo + .borrow_mut() + .update(&frame, model.render_pass.clone(), |builder, image| { + builder.add(image) + }) .unwrap(); // Specify the color to clear the framebuffer with i.e. blue. @@ -136,7 +138,13 @@ fn view(_app: &App, model: &Model, frame: Frame) -> Frame { .add_commands() .begin_render_pass(model.view_fbo.borrow().expect_inner(), false, clear_values) .unwrap() - .draw(model.pipeline.clone(), &dynamic_state, vec![model.vertex_buffer.clone()], (), ()) + .draw( + model.pipeline.clone(), + &dynamic_state, + vec![model.vertex_buffer.clone()], + (), + (), + ) .unwrap() .end_render_pass() .expect("failed to add `end_render_pass` command"); diff --git a/examples/vulkan/vk_triangle_raw_frame.rs b/examples/vulkan/vk_triangle_raw_frame.rs index fa6c23f5b..5d5a0f8e5 100644 --- a/examples/vulkan/vk_triangle_raw_frame.rs +++ b/examples/vulkan/vk_triangle_raw_frame.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; use std::cell::RefCell; use std::sync::Arc; @@ -127,8 +125,12 @@ fn view(_app: &App, model: &Model, frame: RawFrame) -> RawFrame { let dynamic_state = vk::DynamicState::default().viewports(vec![viewport]); // Update framebuffers so that count matches swapchain image count and dimensions match. - model.framebuffers.borrow_mut() - .update(&frame, model.render_pass.clone(), |builder, image| builder.add(image)) + model + .framebuffers + .borrow_mut() + .update(&frame, model.render_pass.clone(), |builder, image| { + builder.add(image) + }) .unwrap(); // Specify the color to clear the framebuffer with i.e. blue diff --git a/nannou-new/src/main.rs b/nannou-new/src/main.rs index 92ad3907b..82b06bcd7 100644 --- a/nannou-new/src/main.rs +++ b/nannou-new/src/main.rs @@ -6,10 +6,6 @@ //! 4. Adds the latest nannou version as a dep to the `Cargo.toml`. //! 5. Builds the project with optimisations. Suggests getting a beverage. -extern crate cargo; -extern crate names; -extern crate rand; - use cargo::CargoResult; use std::env; use std::io::{self, BufRead, Write}; diff --git a/nannou-package/src/main.rs b/nannou-package/src/main.rs index a99c0719f..2e339dffe 100644 --- a/nannou-package/src/main.rs +++ b/nannou-package/src/main.rs @@ -1,10 +1,5 @@ //! A small rust script for packaging a nannou project. -extern crate chrono; -extern crate copy_dir; -extern crate walkdir; -extern crate zip; - use copy_dir::copy_dir; use std::env; use std::fs; diff --git a/src/app.rs b/src/app.rs index 93eb65852..3e422472a 100644 --- a/src/app.rs +++ b/src/app.rs @@ -12,14 +12,18 @@ //! `app.draw()`. //! - [**LoopMode**](./enum.LoopMode.html) - describes the behaviour of the application event loop. -use audio; -use audio::cpal; -use draw; -use event::{self, Event, LoopEvent, Key, Update}; +use crate::audio; +use crate::audio::cpal; +use crate::draw; +use crate::event::{self, Event, Key, LoopEvent, Update}; +use crate::frame::{Frame, RawFrame, RenderData}; +use crate::geom; +use crate::state; +use crate::time::DurationF64; +use crate::ui; +use crate::vk::{self, DeviceOwned, GpuFuture}; +use crate::window::{self, Window}; use find_folder; -use frame::{Frame, RawFrame, RenderData}; -use geom; -use state; use std; use std::cell::{RefCell, RefMut}; use std::collections::{HashMap, HashSet}; @@ -30,10 +34,6 @@ use std::sync::atomic::{self, AtomicBool}; use std::sync::{mpsc, Arc}; use std::thread; use std::time::{Duration, Instant}; -use time::DurationF64; -use ui; -use vk::{self, DeviceOwned, GpuFuture}; -use window::{self, Window}; use winit; #[cfg(all(target_os = "macos", not(test)))] @@ -465,7 +465,6 @@ where /// If unspecified, nannou will create one via the following: /// /// ```norun - /// # extern crate nannou; /// # use nannou::prelude::*; /// # fn main() { /// vk::InstanceBuilder::new() @@ -479,7 +478,6 @@ where /// will do the following: /// /// ```norun - /// # extern crate nannou; /// # use nannou::prelude::*; /// # fn main() { /// vk::InstanceBuilder::new() @@ -511,7 +509,7 @@ where } #[cfg(all(target_os = "macos", not(test)))] - /// Set custom settings for the moltenvk dependacy + /// Set custom settings for the moltenvk dependacy /// installer. /// /// Install silently @@ -520,7 +518,7 @@ where /// `Install::Message(message)` /// /// See moltenvk_deps::Message docs for more information. - pub fn macos_installer(mut self, settings: mvkd::Install) -> Self { + pub fn macos_installer(mut self, settings: mvkd::Install) -> Self { self.moltenvk_settings = Some(settings); self } @@ -547,42 +545,42 @@ where let vk_instance = self.vk_instance.take().unwrap_or_else(|| { if debug_callback_specified { let vk_builder = vk::InstanceBuilder::new(); - + #[cfg(all(target_os = "macos", not(test)))] let vk_builder = vk::check_moltenvk(vk_builder, moltenvk_settings); - + #[cfg(any(not(target_os = "macos"), test))] let vk_builder = vk_builder.extensions(vk::required_windowing_extensions()); - vk_builder.add_extensions(vk::InstanceExtensions{ - ext_debug_report: true, - ..vk::InstanceExtensions::none() - }) - .layers(vec!["VK_LAYER_LUNARG_standard_validation"]) + vk_builder + .add_extensions(vk::InstanceExtensions { + ext_debug_report: true, + ..vk::InstanceExtensions::none() + }) + .layers(vec!["VK_LAYER_LUNARG_standard_validation"]) .build() .expect("failed to create vulkan instance") } else { let vk_builder = vk::InstanceBuilder::new(); - + #[cfg(all(target_os = "macos", not(test)))] let vk_builder = vk::check_moltenvk(vk_builder, moltenvk_settings); - + #[cfg(any(not(target_os = "macos"), test))] let vk_builder = vk_builder.extensions(vk::required_windowing_extensions()); - - vk_builder.build() + + vk_builder + .build() .expect("failed to create vulkan instance") } }); // If a callback was specified, build it with the created instance. - let _vk_debug_callback = self.vk_debug_callback - .take() - .map(|builder| { - builder - .build(&vk_instance) - .expect("failed to build vulkan debug callback") - }); + let _vk_debug_callback = self.vk_debug_callback.take().map(|builder| { + builder + .build(&vk_instance) + .expect("failed to build vulkan debug callback") + }); // Initialise the app. let app = App::new(events_loop, vk_instance).expect("failed to construct `App`"); @@ -627,13 +625,21 @@ where &capabilities.present_modes, ); if window.swapchain.present_mode() != present_mode - || window.swapchain.num_images() != image_count { + || window.swapchain.num_images() != image_count + { change_loop_mode_for_window(window, &loop_mode); } } } - run_loop(app, model, self.event, self.update, self.default_view, self.exit); + run_loop( + app, + model, + self.event, + self.update, + self.default_view, + self.exit, + ); } } @@ -983,7 +989,8 @@ impl App { color_format, DEPTH_FORMAT, msaa_samples, - ).expect("failed to create `Draw` renderer for vulkano backend"); + ) + .expect("failed to create `Draw` renderer for vulkano backend"); *self.draw_state.renderer.borrow_mut() = Some(RefCell::new(renderer)); } let renderer = self.draw_state.renderer.borrow_mut(); @@ -1149,7 +1156,7 @@ impl<'a> Draw<'a> { self.window_id, frame.window_id(), "attempted to draw content intended for window {:?} in a frame \ - associated with window {:?}", + associated with window {:?}", self.window_id, frame.window_id(), ); @@ -1190,8 +1197,7 @@ fn run_loop( update_fn: Option>, default_view: Option>, exit_fn: Option>, -) -where +) where M: 'static, E: LoopEvent, { @@ -1213,16 +1219,17 @@ where // Begin running the application loop based on the current `LoopMode`. 'mode: loop { - let Break { model: new_model, reason } = match loop_mode { + let Break { + model: new_model, + reason, + } = match loop_mode { LoopMode::Rate { update_interval } => { - run_loop_mode_rate( - &mut app, - model, - &mut loop_ctxt, - update_interval, - ) + run_loop_mode_rate(&mut app, model, &mut loop_ctxt, update_interval) } - LoopMode::Wait { updates_following_event, update_interval, } => { + LoopMode::Wait { + updates_following_event, + update_interval, + } => { loop_ctxt.updates_remaining = updates_following_event; run_loop_mode_wait( &mut app, @@ -1232,15 +1239,16 @@ where update_interval, ) } - LoopMode::RefreshSync { minimum_update_interval, windows } => { - run_loop_mode_refresh_sync( - &mut app, - model, - &mut loop_ctxt, - minimum_update_interval, - windows, - ) - } + LoopMode::RefreshSync { + minimum_update_interval, + windows, + } => run_loop_mode_refresh_sync( + &mut app, + model, + &mut loop_ctxt, + minimum_update_interval, + windows, + ), }; model = new_model; @@ -1250,7 +1258,7 @@ where BreakReason::NewLoopMode(new_loop_mode) => { loop_mode = new_loop_mode; change_loop_mode(&app, &loop_mode); - }, + } // If the loop broke due to the application exiting, we're done! BreakReason::Exit => { if let Some(exit_fn) = exit_fn { @@ -1278,12 +1286,8 @@ where app.events_loop .poll_events(|event| loop_ctxt.winit_events.push(event)); for winit_event in loop_ctxt.winit_events.drain(..) { - let (new_model, exit) = process_and_emit_winit_event( - app, - model, - loop_ctxt.event_fn, - winit_event, - ); + let (new_model, exit) = + process_and_emit_winit_event(app, model, loop_ctxt.event_fn, winit_event); model = new_model; if exit { let reason = BreakReason::Exit; @@ -1347,7 +1351,8 @@ where { loop { // First collect any pending window events. - app.events_loop.poll_events(|event| loop_ctxt.winit_events.push(event)); + app.events_loop + .poll_events(|event| loop_ctxt.winit_events.push(event)); // If there are no events and the `Ui` does not need updating, // wait for the next event. @@ -1410,10 +1415,13 @@ where // See if the loop mode has changed. If so, break. match app.loop_mode() { - LoopMode::Wait { update_interval: ui, updates_following_event: ufe } => { + LoopMode::Wait { + update_interval: ui, + updates_following_event: ufe, + } => { update_interval = ui; updates_following_event = ufe; - }, + } loop_mode => { let reason = BreakReason::NewLoopMode(loop_mode); return Break { model, reason }; @@ -1451,8 +1459,8 @@ where Ok(()) => break, Err(vk::SwapchainCreationError::UnsupportedDimensions) => { set_window_swapchain_needs_recreation(app, window_id, true); - continue - }, + continue; + } Err(err) => panic!("{:?}", err), } } @@ -1462,17 +1470,14 @@ where // Acquire the next image from the swapchain. let timeout = None; let swapchain = app.windows.borrow()[&window_id].swapchain.clone(); - let next_img = vk::swapchain::acquire_next_image( - swapchain.swapchain.clone(), - timeout, - ); + let next_img = vk::swapchain::acquire_next_image(swapchain.swapchain.clone(), timeout); let (swapchain_image_index, swapchain_image_acquire_future) = match next_img { Ok(r) => r, Err(vk::swapchain::AcquireError::OutOfDate) => { set_window_swapchain_needs_recreation(app, window_id, true); continue; - }, - Err(err) => panic!("{:?}", err) + } + Err(err) => panic!("{:?}", err), }; // Process pending app events. @@ -1528,10 +1533,13 @@ where // See if the loop mode has changed. If so, break. match app.loop_mode() { - LoopMode::RefreshSync { minimum_update_interval: mli, windows: w } => { + LoopMode::RefreshSync { + minimum_update_interval: mli, + windows: w, + } => { minimum_update_interval = mli; windows = w; - }, + } loop_mode => { let reason = BreakReason::NewLoopMode(loop_mode); return Break { model, reason }; @@ -1598,7 +1606,10 @@ fn cleanup_unused_gpu_resources_for_window(app: &App, window_id: window::Id) { fn window_swapchain_needs_recreation(app: &App, window_id: window::Id) -> bool { let windows = app.windows.borrow(); let window = &windows[&window_id]; - window.swapchain.needs_recreation.load(atomic::Ordering::Relaxed) + window + .swapchain + .needs_recreation + .load(atomic::Ordering::Relaxed) } // Attempt to recreate a window's swapchain with the window's current dimensions. @@ -1633,7 +1644,10 @@ fn recreate_window_swapchain( fn set_window_swapchain_needs_recreation(app: &App, window_id: window::Id, b: bool) { let windows = app.windows.borrow_mut(); let window = windows.get(&window_id).expect("no window for id"); - window.swapchain.needs_recreation.store(b, atomic::Ordering::Relaxed); + window + .swapchain + .needs_recreation + .store(b, atomic::Ordering::Relaxed); } // Poll and process any pending application events. @@ -1653,15 +1667,12 @@ where E: LoopEvent, { let mut event_count = 0; - app.events_loop.poll_events(|event| loop_ctxt.winit_events.push(event)); + app.events_loop + .poll_events(|event| loop_ctxt.winit_events.push(event)); for winit_event in loop_ctxt.winit_events.drain(..) { event_count += 1; - let (new_model, exit) = process_and_emit_winit_event( - app, - model, - loop_ctxt.event_fn, - winit_event, - ); + let (new_model, exit) = + process_and_emit_winit_event(app, model, loop_ctxt.event_fn, winit_event); model = new_model; if exit { return (model, exit, event_count); @@ -1786,12 +1797,8 @@ where }; // Translate the coordinates from top-left-origin-with-y-down to centre-origin-with-y-up. - let tx = |x: geom::scalar::Default| { - x - win_w as geom::scalar::Default / 2.0 - }; - let ty = |y: geom::scalar::Default| { - -(y - win_h as geom::scalar::Default / 2.0) - }; + let tx = |x: geom::scalar::Default| x - win_w as geom::scalar::Default / 2.0; + let ty = |y: geom::scalar::Default| -(y - win_h as geom::scalar::Default / 2.0); // If the window ID has changed, ensure the dimensions are up to date. if *app.focused_window.borrow() != Some(window_id) { @@ -1802,9 +1809,7 @@ where // Check for events that would update either mouse, keyboard or window state. match *event { - winit::WindowEvent::CursorMoved { - position, .. - } => { + winit::WindowEvent::CursorMoved { position, .. } => { let (x, y): (f64, f64) = position.into(); let x = tx(x as _); let y = ty(y as _); @@ -1892,12 +1897,7 @@ where let windows = app.windows.borrow(); windows .get(&window_id) - .and_then(|w| { - w.surface - .window() - .get_inner_size() - .map(|size| size.into()) - }) + .and_then(|w| w.surface.window().get_inner_size().map(|size| size.into())) .unwrap_or((0f64, 0f64)) }; @@ -1951,60 +1951,34 @@ where // Check for more specific event functions. match simple { - event::WindowEvent::KeyPressed(key) => { - call_user_function!(key_pressed, key) - } - event::WindowEvent::KeyReleased(key) => { - call_user_function!(key_released, key) - } - event::WindowEvent::MouseMoved(pos) => { - call_user_function!(mouse_moved, pos) - } + event::WindowEvent::KeyPressed(key) => call_user_function!(key_pressed, key), + event::WindowEvent::KeyReleased(key) => call_user_function!(key_released, key), + event::WindowEvent::MouseMoved(pos) => call_user_function!(mouse_moved, pos), event::WindowEvent::MousePressed(button) => { call_user_function!(mouse_pressed, button) } event::WindowEvent::MouseReleased(button) => { call_user_function!(mouse_released, button) } - event::WindowEvent::MouseEntered => { - call_user_function!(mouse_entered) - } - event::WindowEvent::MouseExited => { - call_user_function!(mouse_exited) - } + event::WindowEvent::MouseEntered => call_user_function!(mouse_entered), + event::WindowEvent::MouseExited => call_user_function!(mouse_exited), event::WindowEvent::MouseWheel(amount, phase) => { call_user_function!(mouse_wheel, amount, phase) } - event::WindowEvent::Moved(pos) => { - call_user_function!(moved, pos) - } - event::WindowEvent::Resized(size) => { - call_user_function!(resized, size) - } - event::WindowEvent::Touch(touch) => { - call_user_function!(touch, touch) - } + event::WindowEvent::Moved(pos) => call_user_function!(moved, pos), + event::WindowEvent::Resized(size) => call_user_function!(resized, size), + event::WindowEvent::Touch(touch) => call_user_function!(touch, touch), event::WindowEvent::TouchPressure(pressure) => { call_user_function!(touchpad_pressure, pressure) } - event::WindowEvent::HoveredFile(path) => { - call_user_function!(hovered_file, path) - } + event::WindowEvent::HoveredFile(path) => call_user_function!(hovered_file, path), event::WindowEvent::HoveredFileCancelled => { call_user_function!(hovered_file_cancelled) } - event::WindowEvent::DroppedFile(path) => { - call_user_function!(dropped_file, path) - } - event::WindowEvent::Focused => { - call_user_function!(focused) - } - event::WindowEvent::Unfocused => { - call_user_function!(unfocused) - } - event::WindowEvent::Closed => { - call_user_function!(closed) - } + event::WindowEvent::DroppedFile(path) => call_user_function!(dropped_file, path), + event::WindowEvent::Focused => call_user_function!(focused), + event::WindowEvent::Unfocused => call_user_function!(unfocused), + event::WindowEvent::Closed => call_user_function!(closed), } } } @@ -2029,8 +2003,7 @@ fn view_frame( swapchain_image_index: usize, swapchain_image_acquire_future: window::SwapchainAcquireFuture, default_view: Option<&View>, -) -where +) where M: 'static, { // Retrieve the queue and swapchain associated with this window. @@ -2059,7 +2032,8 @@ where swapchain_image_index, swapchain_image, swapchain_frame_created, - ).expect("failed to create `Frame`"); + ) + .expect("failed to create `Frame`"); // If the user specified a view function specifically for this window, use it. // Otherwise, use the fallback, default view passed to the app if there was one. let window_view = { @@ -2089,62 +2063,80 @@ where Some(window::View::Sketch(view)) => { let render_data = take_window_frame_render_data(app, window_id) .expect("failed to take window's `frame_render_data`"); - let frame = Frame::new_empty(raw_frame, render_data) - .expect("failed to create `Frame`"); + let frame = Frame::new_empty(raw_frame, render_data).expect("failed to create `Frame`"); let frame = view(app, frame); - let (render_data, raw_frame) = frame.finish() + let (render_data, raw_frame) = frame + .finish() .expect("failed to resolve frame's intermediary_image to the swapchain_image"); set_window_frame_render_data(app, window_id, render_data); - raw_frame.finish().build().expect("failed to build command buffer") + raw_frame + .finish() + .build() + .expect("failed to build command buffer") } Some(window::View::WithModel(view)) => { let render_data = take_window_frame_render_data(app, window_id) .expect("failed to take window's `frame_render_data`"); - let frame = Frame::new_empty(raw_frame, render_data) - .expect("failed to create `Frame`"); + let frame = Frame::new_empty(raw_frame, render_data).expect("failed to create `Frame`"); let view = view .to_fn_ptr::() .expect("unexpected model argument given to window view function"); let frame = (*view)(app, model, frame); - let (render_data, raw_frame) = frame.finish() + let (render_data, raw_frame) = frame + .finish() .expect("failed to resolve frame's intermediary_image to the swapchain_image"); set_window_frame_render_data(app, window_id, render_data); - raw_frame.finish().build().expect("failed to build command buffer") + raw_frame + .finish() + .build() + .expect("failed to build command buffer") } Some(window::View::WithModelRaw(raw_view)) => { let raw_view = raw_view .to_fn_ptr::() .expect("unexpected model argument given to window raw_view function"); let raw_frame = (*raw_view)(app, model, raw_frame); - raw_frame.finish().build().expect("failed to build command buffer") + raw_frame + .finish() + .build() + .expect("failed to build command buffer") } None => match default_view { Some(View::Sketch(view)) => { let render_data = take_window_frame_render_data(app, window_id) .expect("failed to take window's `frame_render_data`"); - let frame = Frame::new_empty(raw_frame, render_data) - .expect("failed to create `Frame`"); + let frame = + Frame::new_empty(raw_frame, render_data).expect("failed to create `Frame`"); let frame = view(app, frame); - let (render_data, raw_frame) = frame.finish() + let (render_data, raw_frame) = frame + .finish() .expect("failed to resolve frame's intermediary_image to the swapchain_image"); set_window_frame_render_data(app, window_id, render_data); - raw_frame.finish().build().expect("failed to build command buffer") + raw_frame + .finish() + .build() + .expect("failed to build command buffer") } Some(View::WithModel(view)) => { let render_data = take_window_frame_render_data(app, window_id) .expect("failed to take window's `frame_render_data`"); - let frame = Frame::new_empty(raw_frame, render_data) - .expect("failed to create `Frame`"); + let frame = + Frame::new_empty(raw_frame, render_data).expect("failed to create `Frame`"); let frame = view(app, &model, frame); - let (render_data, raw_frame) = frame.finish() + let (render_data, raw_frame) = frame + .finish() .expect("failed to resolve frame's intermediary_image to the swapchain_image"); set_window_frame_render_data(app, window_id, render_data); - raw_frame.finish().build().expect("failed to build command buffer") - } - None => { - raw_frame.finish().build().expect("failed to build command buffer") + raw_frame + .finish() + .build() + .expect("failed to build command buffer") } - } + None => raw_frame + .finish() + .build() + .expect("failed to build command buffer"), + }, }; let mut windows = app.windows.borrow_mut(); @@ -2174,15 +2166,17 @@ where swapchain.swapchain.clone(), swapchain_image_index, ); - (Box::new(present_future) as Box) - .then_signal_fence_and_flush() + (Box::new(present_future) as Box).then_signal_fence_and_flush() }; // Handle the result of the future. let current_frame_end = match future_result { Ok(future) => Some(future), Err(vk::sync::FlushError::OutOfDate) => { - window.swapchain.needs_recreation.store(true, atomic::Ordering::Relaxed); + window + .swapchain + .needs_recreation + .store(true, atomic::Ordering::Relaxed); None } Err(e) => { @@ -2226,8 +2220,8 @@ where Ok(()) => break, Err(vk::SwapchainCreationError::UnsupportedDimensions) => { set_window_swapchain_needs_recreation(app, window_id, true); - continue - }, + continue; + } Err(err) => panic!("{:?}", err), } } @@ -2237,17 +2231,14 @@ where // Acquire the next image from the swapchain. let timeout = None; let swapchain = app.windows.borrow()[&window_id].swapchain.clone(); - let next_img = vk::swapchain::acquire_next_image( - swapchain.swapchain.clone(), - timeout, - ); + let next_img = vk::swapchain::acquire_next_image(swapchain.swapchain.clone(), timeout); let (swapchain_image_index, swapchain_image_acquire_future) = match next_img { Ok(r) => r, Err(vk::swapchain::AcquireError::OutOfDate) => { set_window_swapchain_needs_recreation(app, window_id, true); return false; - }, - Err(err) => panic!("{:?}", err) + } + Err(err) => panic!("{:?}", err), }; view_frame( diff --git a/src/audio/device.rs b/src/audio/device.rs index cf7c64038..913c0dda5 100644 --- a/src/audio/device.rs +++ b/src/audio/device.rs @@ -1,4 +1,4 @@ -use audio::cpal; +use crate::audio::cpal; use std::ops::Deref; /// A device that can be used to spawn an audio stream. diff --git a/src/audio/mod.rs b/src/audio/mod.rs index c96aee8f1..749f9bfb1 100644 --- a/src/audio/mod.rs +++ b/src/audio/mod.rs @@ -11,8 +11,8 @@ //! [**Requester**](./requester/struct.Requester.html) for buffering input and output streams that //! may deliver buffers of inconsistent sizes into a stream of consistently sized buffers. -pub extern crate cpal; -pub extern crate sample; +pub use cpal; +pub use sample; pub use self::buffer::Buffer; pub use self::device::{Device, Devices}; diff --git a/src/audio/receiver.rs b/src/audio/receiver.rs index bae44aaae..ba17f6fa6 100644 --- a/src/audio/receiver.rs +++ b/src/audio/receiver.rs @@ -1,5 +1,5 @@ -use audio; -use audio::sample::Sample; +use crate::audio; +use crate::audio::sample::Sample; use std; /// A `Receiver` for converting audio delivered by the backend at varying buffer sizes into buffers diff --git a/src/audio/requester.rs b/src/audio/requester.rs index 1bd299e6d..d249052ae 100644 --- a/src/audio/requester.rs +++ b/src/audio/requester.rs @@ -1,5 +1,5 @@ -use audio; -use audio::sample::Sample; +use crate::audio; +use crate::audio::sample::Sample; use std; /// A `sound::Requester` for converting backend audio requests into requests for buffers of a fixed diff --git a/src/audio/stream/input.rs b/src/audio/stream/input.rs index 7b2ab6ad5..61907b04a 100644 --- a/src/audio/stream/input.rs +++ b/src/audio/stream/input.rs @@ -1,7 +1,7 @@ -use audio::cpal; -use audio::sample::{FromSample, Sample, ToSample}; -use audio::stream; -use audio::{Buffer, Device, Receiver, Stream}; +use crate::audio::cpal; +use crate::audio::sample::{FromSample, Sample, ToSample}; +use crate::audio::stream; +use crate::audio::{Buffer, Device, Receiver, Stream}; use std::sync::atomic::AtomicBool; use std::sync::mpsc; use std::sync::{Arc, Mutex}; @@ -90,7 +90,8 @@ impl Builder { sample_rate, device.default_input_format().ok(), |device| device.supported_input_formats().map(|fs| fs.collect()), - )?.expect("no matching supported audio input formats for the target device"); + )? + .expect("no matching supported audio input formats for the target device"); let stream_id = event_loop.build_input_stream(&device, &format)?; let (update_tx, update_rx) = mpsc::channel(); let model = Arc::new(Mutex::new(Some(model))); diff --git a/src/audio/stream/mod.rs b/src/audio/stream/mod.rs index c452c165f..a97c50969 100644 --- a/src/audio/stream/mod.rs +++ b/src/audio/stream/mod.rs @@ -1,5 +1,5 @@ -use audio::sample::Sample; -use audio::{cpal, Device}; +use crate::audio::sample::Sample; +use crate::audio::{cpal, Device}; use std; use std::any::{Any, TypeId}; use std::collections::HashMap; diff --git a/src/audio/stream/output.rs b/src/audio/stream/output.rs index dd903fd83..f39a75792 100644 --- a/src/audio/stream/output.rs +++ b/src/audio/stream/output.rs @@ -1,7 +1,7 @@ -use audio::cpal; -use audio::sample::{Sample, ToSample}; -use audio::stream; -use audio::{Buffer, Device, Requester, Stream}; +use crate::audio::cpal; +use crate::audio::sample::{Sample, ToSample}; +use crate::audio::stream; +use crate::audio::{Buffer, Device, Requester, Stream}; use std::sync::atomic::AtomicBool; use std::sync::mpsc; use std::sync::{Arc, Mutex}; @@ -83,15 +83,15 @@ impl Builder { }; // Find the best matching format. - let format = - super::find_best_matching_format( - &device, - sample_format, - channels, - sample_rate, - device.default_output_format().ok(), - |device| device.supported_output_formats().map(|fs| fs.collect()), - )?.expect("no matching supported audio output formats for the target device"); + let format = super::find_best_matching_format( + &device, + sample_format, + channels, + sample_rate, + device.default_output_format().ok(), + |device| device.supported_output_formats().map(|fs| fs.collect()), + )? + .expect("no matching supported audio output formats for the target device"); let stream_id = event_loop.build_output_stream(&device, &format)?; let (update_tx, update_rx) = mpsc::channel(); let model = Arc::new(Mutex::new(Some(model))); @@ -138,7 +138,7 @@ impl Builder { // Retrieve the output buffer. let output = match data { - cpal::StreamData::Output { mut buffer } => buffer, + cpal::StreamData::Output { buffer } => buffer, _ => unreachable!(), }; diff --git a/src/color.rs b/src/color.rs index ba4bbdd54..0a2a02d95 100644 --- a/src/color.rs +++ b/src/color.rs @@ -2,12 +2,10 @@ //! palette crate. See [the palette docs](https://docs.rs/palette) for more details or see the //! [**named**](./named/index.html) module for a set of provided color constants. -extern crate palette; - pub use self::named::*; #[doc(inline)] -pub use self::palette::*; +pub use palette::*; // TODO: These named colors are actually SRGBA values but we treat them as linear RGBA. These // named color values should be adjusted for linear RGBA. diff --git a/src/draw/backend/vulkano.rs b/src/draw/backend/vulkano.rs index 0e4dd9d7f..f92c09c0f 100644 --- a/src/draw/backend/vulkano.rs +++ b/src/draw/backend/vulkano.rs @@ -1,12 +1,12 @@ //! The `vulkano` backend for rendering the contents of a **Draw**'s mesh. -use draw; -use frame::{Frame, ViewFbo}; -use math::{BaseFloat, NumCast}; +use crate::draw; +use crate::frame::{Frame, ViewFbo}; +use crate::math::{BaseFloat, NumCast}; +use crate::vk::{self, DeviceOwned, DynamicStateBuilder, GpuFuture, RenderPassDesc}; use std::error::Error as StdError; use std::fmt; use std::sync::Arc; -use vk::{self, DeviceOwned, DynamicStateBuilder, GpuFuture, RenderPassDesc}; /// A type used for rendering a **nannou::draw::Mesh** with a vulkan graphics pipeline. pub struct Renderer { @@ -85,11 +85,11 @@ pub enum DrawError { mod vertex_impl { use super::Vertex; - impl_vertex!(Vertex, position, color, tex_coords); + crate::vk::impl_vertex!(Vertex, position, color, tex_coords); } mod vs { - crate::vk::shaders::shader!{ + crate::vk::shaders::shader! { ty: "vertex", src: " #version 450 @@ -114,7 +114,7 @@ void main() { } mod fs { - crate::vk::shaders::shader!{ + crate::vk::shaders::shader! { ty: "fragment", src: " #version 450 @@ -194,9 +194,7 @@ impl RenderPassImages { msaa_samples, depth_format, )?; - Ok(RenderPassImages { - depth, - }) + Ok(RenderPassImages { depth }) } } @@ -211,9 +209,13 @@ impl Renderer { msaa_samples: u32, ) -> Result { let load_op = vk::LoadOp::Load; - let render_pass = Arc::new( - create_render_pass(device, color_format, depth_format, load_op, msaa_samples)? - ) as Arc; + let render_pass = Arc::new(create_render_pass( + device, + color_format, + depth_format, + load_op, + msaa_samples, + )?) as Arc; let graphics_pipeline = create_graphics_pipeline(render_pass.clone())? as Arc; let vertices = vec![]; @@ -257,7 +259,7 @@ impl Renderer { let clear_color = [color.red, color.green, color.blue, color.alpha].into(); let clear_depth = 1f32.into(); (vk::LoadOp::Clear, clear_color, clear_depth) - }, + } }; // Ensure that the render pass has the correct load op. If not, recreate it. @@ -284,10 +286,7 @@ impl Renderer { } // Prepare clear values. - let clear_values = vec![ - clear_color, - clear_depth, - ]; + let clear_values = vec![clear_color, clear_depth]; let image_dims = frame.image().dimensions(); let [img_w, img_h] = image_dims; @@ -322,14 +321,16 @@ impl Renderer { } // Safe to `unwrap` here as we have ensured that `render_pass_images` is `Some` above. - let render_pass_images = render_pass_images.as_mut().expect("render_pass_images is `None`"); + let render_pass_images = render_pass_images + .as_mut() + .expect("render_pass_images is `None`"); // Ensure framebuffers are up to date with the frame's swapchain image and render pass. - view_fbo.update(&frame, render_pass.clone(), |builder, image| { - builder - .add(image)? - .add(render_pass_images.depth.clone()) - }).unwrap(); + view_fbo + .update(&frame, render_pass.clone(), |builder, image| { + builder.add(image)?.add(render_pass_images.depth.clone()) + }) + .unwrap(); // Create the dynamic state. let dynamic_state = dynamic_state([img_w as _, img_h as _]); @@ -388,7 +389,7 @@ pub fn create_render_pass_clear( depth_format: vk::Format, msaa_samples: u32, ) -> Result, vk::RenderPassCreationError> { - let rp = single_pass_renderpass!( + let rp = vk::single_pass_renderpass!( device, attachments: { color: { @@ -420,7 +421,7 @@ pub fn create_render_pass_load( depth_format: vk::Format, msaa_samples: u32, ) -> Result, vk::RenderPassCreationError> { - let rp = single_pass_renderpass!( + let rp = vk::single_pass_renderpass!( device, attachments: { color: { @@ -592,7 +593,11 @@ impl fmt::Debug for Renderer { write!( f, "Renderer ( render_pass, graphics_pipeline, framebuffer: {} )", - if self.view_fbo.is_some() { "Some" } else { "None" }, + if self.view_fbo.is_some() { + "Some" + } else { + "None" + }, ) } } diff --git a/src/draw/background.rs b/src/draw/background.rs index 28659c18d..2e973559a 100644 --- a/src/draw/background.rs +++ b/src/draw/background.rs @@ -1,8 +1,8 @@ -use color::{self, Rgb, Rgba}; -use draw::properties::{ColorScalar, IntoRgba}; -use draw::Draw; -use geom; -use math::BaseFloat; +use crate::color::{self, Rgb, Rgba}; +use crate::draw::properties::{ColorScalar, IntoRgba}; +use crate::draw::Draw; +use crate::geom; +use crate::math::BaseFloat; /// A type used to update the background colour. pub struct Background<'a, S = geom::scalar::Default> diff --git a/src/draw/drawing.rs b/src/draw/drawing.rs index e768cd246..e50e37ee3 100644 --- a/src/draw/drawing.rs +++ b/src/draw/drawing.rs @@ -1,12 +1,12 @@ -use draw::properties::spatial::{dimension, orientation, position}; -use draw::properties::{ +use crate::draw::properties::spatial::{dimension, orientation, position}; +use crate::draw::properties::{ ColorScalar, IntoDrawn, IntoRgba, Primitive, SetColor, SetDimensions, SetOrientation, SetPosition, }; -use draw::{self, Draw}; -use geom::graph::node; -use geom::{self, Point2, Point3, Vector2, Vector3}; -use math::{Angle, BaseFloat, Euler, Quaternion, Rad}; +use crate::draw::{self, Draw}; +use crate::geom::graph::node; +use crate::geom::{self, Point2, Point3, Vector2, Vector3}; +use crate::math::{Angle, BaseFloat, Euler, Quaternion, Rad}; use std::marker::PhantomData; /// A **Drawing** in progress. @@ -134,8 +134,10 @@ where // vertices. fn map_primitive_with_vertices(mut self, map: F) -> Drawing<'a, T2, S> where - F: FnOnce(draw::properties::Primitive, &mut draw::IntermediaryMesh) - -> draw::properties::Primitive, + F: FnOnce( + draw::properties::Primitive, + &mut draw::IntermediaryMesh, + ) -> draw::properties::Primitive, T2: IntoDrawn + Into>, { if let Ok(mut state) = self.draw.state.try_borrow_mut() { diff --git a/src/draw/mesh/mod.rs b/src/draw/mesh/mod.rs index d76a9bc48..85693cd5d 100644 --- a/src/draw/mesh/mod.rs +++ b/src/draw/mesh/mod.rs @@ -1,8 +1,8 @@ //! Items related to the custom mesh type used by the `Draw` API. -use geom; -use math::{BaseFloat, BaseNum}; -use mesh::{self, MeshPoints, WithColors, WithIndices, WithTexCoords}; +use crate::geom; +use crate::math::{BaseFloat, BaseNum}; +use crate::mesh::{self, MeshPoints, WithColors, WithIndices, WithTexCoords}; use std::ops::{Deref, DerefMut}; pub mod vertex; diff --git a/src/draw/mesh/vertex.rs b/src/draw/mesh/vertex.rs index 13e9c121d..f1968881b 100644 --- a/src/draw/mesh/vertex.rs +++ b/src/draw/mesh/vertex.rs @@ -1,7 +1,7 @@ -use color; -use geom::{self, Point2, Point3, Vector3}; -use math::BaseFloat; -use mesh::vertex::{WithColor, WithTexCoords}; +use crate::color; +use crate::geom::{self, Point2, Point3, Vector3}; +use crate::math::BaseFloat; +use crate::mesh::vertex::{WithColor, WithTexCoords}; use std::marker::PhantomData; pub type Point = Point3; diff --git a/src/draw/mod.rs b/src/draw/mod.rs index dfd00d354..e4e79f126 100644 --- a/src/draw/mod.rs +++ b/src/draw/mod.rs @@ -1,9 +1,9 @@ //! A simple API for drawing 2D and 3D graphics. See the [**Draw** type](./struct.Draw.html) for //! more details. -use geom::graph::{edge, node}; -use geom::{self, Vector3}; -use math::BaseFloat; +use crate::geom::graph::{edge, node}; +use crate::geom::{self, Vector3}; +use crate::math::BaseFloat; use std::cell::{Ref, RefCell}; use std::collections::HashMap; use std::mem; @@ -160,7 +160,7 @@ const WOULD_CYCLE: &'static str = /// An iterator yielding the transformed, indexed vertices for a node. pub type NodeVertices<'a, S = geom::scalar::Default> = - node::TransformedVertices<::mesh::Vertices>>, S>; + node::TransformedVertices>>, S>; // /// An iterator yielding the transformed vertices for a node. // pub struct NodeVertices<'a, S> { @@ -168,7 +168,7 @@ pub type NodeVertices<'a, S = geom::scalar::Default> = /// An iterator yielding the transformed raw vertices for a node. pub type RawNodeVertices<'a, S = geom::scalar::Default> = - node::TransformedVertices<::mesh::RawVertices>>, S>; + node::TransformedVertices>>, S>; /// An iterator yielding the transformed triangles for a node. pub type NodeTriangles<'a, S = geom::scalar::Default> = @@ -657,7 +657,7 @@ where None => return None, Some(ranges) => ranges.indices.clone(), }; - let vertices = ::mesh::vertices(self.inner_mesh()).index_range(index_range); + let vertices = crate::mesh::vertices(self.inner_mesh()).index_range(index_range); self.state.borrow().geom_graph.node_vertices(n, vertices) } @@ -866,7 +866,8 @@ where None => continue, Some(ranges) => ranges.indices.clone(), }; - let vertices = ::mesh::vertices(draw.inner_mesh()).index_range(index_range); + let vertices = + crate::mesh::vertices(draw.inner_mesh()).index_range(index_range); let transformed_vertices = transform.vertices(vertices); *node_vertices = Some(transformed_vertices); } @@ -901,7 +902,7 @@ where None => continue, Some(ranges) => ranges.vertices.clone(), }; - let vertices = ::mesh::raw_vertices(draw.inner_mesh()).range(vertex_range); + let vertices = crate::mesh::raw_vertices(draw.inner_mesh()).range(vertex_range); let transformed_vertices = transform.vertices(vertices); *node_vertices = Some(transformed_vertices); } diff --git a/src/draw/properties/color.rs b/src/draw/properties/color.rs index 3dbd23104..a5c97ec40 100644 --- a/src/draw/properties/color.rs +++ b/src/draw/properties/color.rs @@ -1,5 +1,5 @@ -use color::{self, Alpha, IntoColor, Rgb, Rgba}; -use math::num_traits::{Float, One}; +use crate::color::{self, Alpha, IntoColor, Rgb, Rgba}; +use crate::math::num_traits::{Float, One}; /// The default scalar value for working with color channels, hues, etc. pub type DefaultScalar = f32; diff --git a/src/draw/properties/mod.rs b/src/draw/properties/mod.rs index 51c8de91c..0f401fe4b 100644 --- a/src/draw/properties/mod.rs +++ b/src/draw/properties/mod.rs @@ -6,10 +6,10 @@ //! Each **Drawing** instance is associated with a specific **Node** in the geometry graph and has //! a unique **node::Index** to simplify this. -use draw; -use geom; -use geom::graph::node; -use math::BaseFloat; +use crate::draw; +use crate::geom; +use crate::geom::graph::node; +use crate::math::BaseFloat; use std::cell::RefCell; use std::ops; @@ -178,7 +178,7 @@ where /// The iterator type yielding all vertex indices, describing edges of the drawing. type Indices: Indices; /// Consume `self` and return its **Drawn** form. - fn into_drawn(self, Draw) -> Drawn; + fn into_drawn(self, _: Draw) -> Drawn; } /// An iterator adaptor around a type implementing the **Vertices** trait and the diff --git a/src/draw/properties/primitive/ellipse.rs b/src/draw/properties/primitive/ellipse.rs index cba48668d..3415119c7 100644 --- a/src/draw/properties/primitive/ellipse.rs +++ b/src/draw/properties/primitive/ellipse.rs @@ -1,11 +1,11 @@ -use draw::properties::spatial::{dimension, orientation, position}; -use draw::properties::{ +use crate::draw::properties::spatial::{dimension, orientation, position}; +use crate::draw::properties::{ spatial, ColorScalar, Draw, Drawn, IntoDrawn, Primitive, Rgba, SetColor, SetDimensions, SetOrientation, SetPosition, }; -use draw::{self, Drawing}; -use geom::{self, Vector2}; -use math::BaseFloat; +use crate::draw::{self, Drawing}; +use crate::geom::{self, Vector2}; +use crate::math::BaseFloat; /// Properties related to drawing an **Ellipse**. #[derive(Clone, Debug)] diff --git a/src/draw/properties/primitive/line.rs b/src/draw/properties/primitive/line.rs index 4c55d6576..fe3e650ce 100644 --- a/src/draw/properties/primitive/line.rs +++ b/src/draw/properties/primitive/line.rs @@ -1,11 +1,11 @@ -use draw::properties::spatial::{orientation, position}; -use draw::properties::{ +use crate::draw::properties::spatial::{orientation, position}; +use crate::draw::properties::{ spatial, ColorScalar, Draw, Drawn, IntoDrawn, Primitive, Rgba, SetColor, SetOrientation, SetPosition, }; -use draw::{self, Drawing}; -use geom::{self, Point2}; -use math::BaseFloat; +use crate::draw::{self, Drawing}; +use crate::geom::{self, Point2}; +use crate::math::BaseFloat; /// Properties related to drawing a **Line**. #[derive(Clone, Debug)] diff --git a/src/draw/properties/primitive/mesh.rs b/src/draw/properties/primitive/mesh.rs index 22aa4e939..d53930da3 100644 --- a/src/draw/properties/primitive/mesh.rs +++ b/src/draw/properties/primitive/mesh.rs @@ -1,10 +1,10 @@ -use draw::mesh::vertex::IntoVertex; -use draw::properties::spatial::{self, orientation, position}; -use draw::properties::{Draw, Drawn, IntoDrawn, Primitive, SetOrientation, SetPosition}; -use draw::{self, Drawing}; -use geom; -use math::BaseFloat; -use mesh::vertex::{WithColor, WithTexCoords}; +use crate::draw::mesh::vertex::IntoVertex; +use crate::draw::properties::spatial::{self, orientation, position}; +use crate::draw::properties::{Draw, Drawn, IntoDrawn, Primitive, SetOrientation, SetPosition}; +use crate::draw::{self, Drawing}; +use crate::geom; +use crate::math::BaseFloat; +use crate::mesh::vertex::{WithColor, WithTexCoords}; use std::{iter, ops}; /// The mesh type prior to being initialised with vertices or indices. diff --git a/src/draw/properties/primitive/mod.rs b/src/draw/properties/primitive/mod.rs index 515c5758b..b2117e9ab 100644 --- a/src/draw/properties/primitive/mod.rs +++ b/src/draw/properties/primitive/mod.rs @@ -1,4 +1,4 @@ -use geom; +use crate::geom; pub mod ellipse; pub mod line; diff --git a/src/draw/properties/primitive/polygon.rs b/src/draw/properties/primitive/polygon.rs index 28a96a7bd..784d3b9ad 100644 --- a/src/draw/properties/primitive/polygon.rs +++ b/src/draw/properties/primitive/polygon.rs @@ -1,10 +1,10 @@ -use draw::properties::spatial::{self, orientation, position}; -use draw::properties::{ +use crate::draw::properties::spatial::{self, orientation, position}; +use crate::draw::properties::{ ColorScalar, Draw, Drawn, IntoDrawn, Primitive, Rgba, SetColor, SetOrientation, SetPosition, }; -use draw::{self, mesh, Drawing}; -use geom; -use math::BaseFloat; +use crate::draw::{self, mesh, Drawing}; +use crate::geom; +use crate::math::BaseFloat; use std::iter; /// A polygon prior to being initialised. @@ -59,7 +59,7 @@ impl Pointless { ) -> Polygon where P: IntoIterator, - P::Item: Into<::mesh::vertex::WithColor, mesh::vertex::Color>>, + P::Item: Into, mesh::vertex::Color>>, S: BaseFloat, { let mut ranges = draw::IntermediaryVertexDataRanges::default(); diff --git a/src/draw/properties/primitive/polyline.rs b/src/draw/properties/primitive/polyline.rs index d29c2f5d0..d618a87c4 100644 --- a/src/draw/properties/primitive/polyline.rs +++ b/src/draw/properties/primitive/polyline.rs @@ -1,11 +1,11 @@ -use draw::mesh::vertex::{IntoPoint, IntoVertex}; -use draw::properties::spatial::{self, orientation, position}; -use draw::properties::{Draw, Drawn, IntoDrawn, Primitive, SetOrientation, SetPosition}; -use draw::{self, Drawing}; -use geom::line::join::miter; -use geom::{self, pt2, Point2}; -use math::BaseFloat; -use mesh::vertex::{WithColor, WithTexCoords}; +use crate::draw::mesh::vertex::{IntoPoint, IntoVertex}; +use crate::draw::properties::spatial::{self, orientation, position}; +use crate::draw::properties::{Draw, Drawn, IntoDrawn, Primitive, SetOrientation, SetPosition}; +use crate::draw::{self, Drawing}; +use crate::geom::line::join::miter; +use crate::geom::{self, pt2, Point2}; +use crate::math::BaseFloat; +use crate::mesh::vertex::{WithColor, WithTexCoords}; use std::iter; /// A polyline prior to being initialised. diff --git a/src/draw/properties/primitive/quad.rs b/src/draw/properties/primitive/quad.rs index 1f3915f54..8773d8a62 100644 --- a/src/draw/properties/primitive/quad.rs +++ b/src/draw/properties/primitive/quad.rs @@ -1,12 +1,12 @@ -use draw::mesh::vertex::IntoPoint; -use draw::properties::spatial::{dimension, orientation, position}; -use draw::properties::{ +use crate::draw::mesh::vertex::IntoPoint; +use crate::draw::properties::spatial::{dimension, orientation, position}; +use crate::draw::properties::{ spatial, ColorScalar, Draw, Drawn, IntoDrawn, Primitive, Rgba, SetColor, SetDimensions, SetOrientation, SetPosition, }; -use draw::{self, Drawing}; -use geom::{self, Point3, Vector3}; -use math::{BaseFloat, ElementWise}; +use crate::draw::{self, Drawing}; +use crate::geom::{self, Point3, Vector3}; +use crate::math::{BaseFloat, ElementWise}; use std::{iter, slice}; /// Properties related to drawing a **Quad**. diff --git a/src/draw/properties/primitive/rect.rs b/src/draw/properties/primitive/rect.rs index 9dd473ab6..14e1a596f 100644 --- a/src/draw/properties/primitive/rect.rs +++ b/src/draw/properties/primitive/rect.rs @@ -1,11 +1,11 @@ -use draw; -use draw::properties::spatial::{dimension, orientation, position}; -use draw::properties::{ +use crate::draw; +use crate::draw::properties::spatial::{dimension, orientation, position}; +use crate::draw::properties::{ spatial, ColorScalar, Draw, Drawn, IntoDrawn, Primitive, Rgba, SetColor, SetDimensions, SetOrientation, SetPosition, }; -use geom::{self, Point2, Vector2}; -use math::BaseFloat; +use crate::geom::{self, Point2, Vector2}; +use crate::math::BaseFloat; use std::{iter, slice}; /// Properties related to drawing a **Rect**. diff --git a/src/draw/properties/primitive/tri.rs b/src/draw/properties/primitive/tri.rs index b9aa60e20..a891e8c48 100644 --- a/src/draw/properties/primitive/tri.rs +++ b/src/draw/properties/primitive/tri.rs @@ -1,12 +1,12 @@ -use draw::mesh::vertex::IntoPoint; -use draw::properties::spatial::{dimension, orientation, position}; -use draw::properties::{ +use crate::draw::mesh::vertex::IntoPoint; +use crate::draw::properties::spatial::{dimension, orientation, position}; +use crate::draw::properties::{ spatial, ColorScalar, Draw, Drawn, IntoDrawn, Primitive, Rgba, SetColor, SetDimensions, SetOrientation, SetPosition, }; -use draw::{self, Drawing}; -use geom::{self, Point3, Vector3}; -use math::{BaseFloat, ElementWise}; +use crate::draw::{self, Drawing}; +use crate::geom::{self, Point3, Vector3}; +use crate::math::{BaseFloat, ElementWise}; use std::ops; /// Properties related to drawing a **Tri**. diff --git a/src/draw/properties/spatial/dimension.rs b/src/draw/properties/spatial/dimension.rs index 05932c95a..e100440dc 100644 --- a/src/draw/properties/spatial/dimension.rs +++ b/src/draw/properties/spatial/dimension.rs @@ -1,6 +1,6 @@ -use geom::graph::node; -use geom::{self, Vector2, Vector3}; -use math::BaseFloat; +use crate::geom::graph::node; +use crate::geom::{self, Vector2, Vector3}; +use crate::math::BaseFloat; /// Dimension properties for **Drawing** a **Node**. #[derive(Copy, Clone, Debug, PartialEq)] diff --git a/src/draw/properties/spatial/mod.rs b/src/draw/properties/spatial/mod.rs index cc5914a01..d90b7ad23 100644 --- a/src/draw/properties/spatial/mod.rs +++ b/src/draw/properties/spatial/mod.rs @@ -1,4 +1,4 @@ -use geom; +use crate::geom; pub mod dimension; pub mod orientation; diff --git a/src/draw/properties/spatial/orientation.rs b/src/draw/properties/spatial/orientation.rs index 3d1cfa802..b6b2bacf1 100644 --- a/src/draw/properties/spatial/orientation.rs +++ b/src/draw/properties/spatial/orientation.rs @@ -1,6 +1,6 @@ -use geom::graph::node; -use geom::{self, Point3, Vector3}; -use math::{deg_to_rad, turns_to_rad, Angle, BaseFloat, Euler, Quaternion, Rad}; +use crate::geom::graph::node; +use crate::geom::{self, Point3, Vector3}; +use crate::math::{deg_to_rad, turns_to_rad, Angle, BaseFloat, Euler, Quaternion, Rad}; /// Orientation properties for **Drawing** a **Node**. #[derive(Copy, Clone, Debug, PartialEq)] diff --git a/src/draw/properties/spatial/position.rs b/src/draw/properties/spatial/position.rs index a8fc7d2e0..74c081781 100644 --- a/src/draw/properties/spatial/position.rs +++ b/src/draw/properties/spatial/position.rs @@ -1,7 +1,7 @@ //! Items related to describing positioning along each axis as -use geom::graph::node; -use geom::{self, Point2, Point3}; +use crate::geom::graph::node; +use crate::geom::{self, Point2, Point3}; /// Position properties for **Drawing** a **Node**. #[derive(Copy, Clone, Debug, PartialEq)] diff --git a/src/draw/theme.rs b/src/draw/theme.rs index ff5aa7ac2..6cb77d6e3 100644 --- a/src/draw/theme.rs +++ b/src/draw/theme.rs @@ -1,4 +1,4 @@ -use color::{Alpha, Rgb, Rgba}; +use crate::color::{Alpha, Rgb, Rgba}; use std::collections::HashMap; /// A set of styling defaults used for coloring texturing geometric primitives that have no entry diff --git a/src/ease.rs b/src/ease.rs index 35e65f774..58c6903ba 100644 --- a/src/ease.rs +++ b/src/ease.rs @@ -1,5 +1,4 @@ //! A suite of common interpolation functions often referred to as "easing" and "tweening" //! functions. This API is provided by the [**pennereq** crate](https://docs.rs/pennereq). -extern crate pennereq; -pub use self::pennereq::*; +pub use pennereq::*; diff --git a/src/event.rs b/src/event.rs index b8cd61b0c..349e7fc93 100644 --- a/src/event.rs +++ b/src/event.rs @@ -5,11 +5,11 @@ //! - [**WindowEvent**](./struct.WindowEvent.html) - a stripped-back, simplified, //! newcomer-friendly version of the **raw**, low-level winit event. -use geom::{self, Point2, Vector2}; +use crate::geom::{self, Point2, Vector2}; +use crate::window; +use crate::App; use std::path::PathBuf; -use window; use winit; -use App; pub use winit::{ ElementState, KeyboardInput, ModifiersState, MouseButton, MouseScrollDelta, TouchPhase, @@ -19,7 +19,7 @@ pub use winit::{ /// Event types that are compatible with the nannou app loop. pub trait LoopEvent: From { /// Produce a loop event from the given winit event. - fn from_winit_event(winit::Event, &App) -> Option; + fn from_winit_event(_: winit::Event, _: &App) -> Option; } /// Update event, emitted on each pass of an application loop. @@ -214,8 +214,7 @@ impl WindowEvent { } // TODO: Should separate the behaviour of close requested and destroyed. - winit::WindowEvent::CloseRequested | - winit::WindowEvent::Destroyed => Closed, + winit::WindowEvent::CloseRequested | winit::WindowEvent::Destroyed => Closed, winit::WindowEvent::DroppedFile(path) => DroppedFile(path), @@ -223,11 +222,15 @@ impl WindowEvent { winit::WindowEvent::HoveredFileCancelled => HoveredFileCancelled, - winit::WindowEvent::Focused(b) => if b { Focused } else { Unfocused }, + winit::WindowEvent::Focused(b) => { + if b { + Focused + } else { + Unfocused + } + } - winit::WindowEvent::CursorMoved { - position, .. - } => { + winit::WindowEvent::CursorMoved { position, .. } => { let (x, y) = position.into(); let x = tx(x); let y = ty(y); @@ -264,8 +267,14 @@ impl WindowEvent { } winit::WindowEvent::TouchpadPressure { - device_id, pressure, stage, - } => TouchPressure(TouchpadPressure { device_id, pressure, stage }), + device_id, + pressure, + stage, + } => TouchPressure(TouchpadPressure { + device_id, + pressure, + stage, + }), winit::WindowEvent::KeyboardInput { input, .. } => match input.virtual_keycode { Some(key) => match input.state { @@ -295,12 +304,10 @@ impl LoopEvent for Event { let windows = app.windows.borrow(); let (win_w, win_h) = match windows.get(&window_id) { None => (0.0, 0.0), // The window was likely closed, these will be ignored. - Some(window) => { - match window.surface.window().get_inner_size() { - None => (0.0, 0.0), - Some(size) => size.into(), - } - } + Some(window) => match window.surface.window().get_inner_size() { + None => (0.0, 0.0), + Some(size) => size.into(), + }, }; let raw = event.clone(); let simple = WindowEvent::from_winit_window_event(event, win_w, win_h); diff --git a/src/frame/mod.rs b/src/frame/mod.rs index 11ac29624..123a03b22 100644 --- a/src/frame/mod.rs +++ b/src/frame/mod.rs @@ -1,11 +1,11 @@ //! Items related to the **Frame** type, describing a single frame of graphics for a single window. -use draw::properties::color::IntoRgba; +use crate::draw::properties::color::IntoRgba; +use crate::vk::{self, DeviceOwned}; +use crate::window::SwapchainFramebuffers; use std::error::Error as StdError; -use std::{fmt, ops}; use std::sync::Arc; -use vk::{self, DeviceOwned}; -use window::SwapchainFramebuffers; +use std::{fmt, ops}; pub mod raw; @@ -121,7 +121,10 @@ impl Frame { /// `RenderData` and `RawFrame` so that the `RenderData` may be stored back within the `Window` /// and the `RawFrame` may be `finish`ed. pub(crate) fn finish(self) -> Result<(RenderData, RawFrame), FrameFinishError> { - let Frame { mut data, raw_frame } = self; + let Frame { + mut data, + raw_frame, + } = self; // The framebuffer for the current swapchain image. let framebuffer = data.swapchain_framebuffers[raw_frame.swapchain_image_index()].clone(); @@ -193,14 +196,17 @@ impl ViewFramebufferObject { ) -> Result<(), vk::FramebufferCreationError> where R: 'static + vk::RenderPassAbstract + Send + Sync, - F: FnOnce(vk::FramebufferBuilder, Arc) - -> vk::FramebufferBuilderResult, + F: FnOnce( + vk::FramebufferBuilder, + Arc, + ) -> vk::FramebufferBuilderResult, A: 'static + vk::AttachmentsList + Send + Sync, { let image = frame.image().clone(); let [w, h] = image.dimensions(); let dimensions = [w, h, 1]; - self.fbo.update(render_pass, dimensions, |b| builder(b, image)) + self.fbo + .update(render_pass, dimensions, |b| builder(b, image)) } } @@ -218,7 +224,8 @@ impl RenderData { format: vk::Format, ) -> Result { let render_pass = create_render_pass(device.clone(), format, msaa_samples)?; - let intermediary_image = create_intermediary_image(device, dimensions, msaa_samples, format)?; + let intermediary_image = + create_intermediary_image(device, dimensions, msaa_samples, format)?; let swapchain_framebuffers = Default::default(); let intermediary_image_is_new = true; Ok(RenderData { @@ -363,15 +370,13 @@ fn create_intermediary_image( }; match msaa_samples { 0 | 1 => vk::AttachmentImage::with_usage(device, dimensions, format, usage), - _ => { - vk::AttachmentImage::multisampled_with_usage( - device, - dimensions, - msaa_samples, - format, - usage, - ) - }, + _ => vk::AttachmentImage::multisampled_with_usage( + device, + dimensions, + msaa_samples, + format, + usage, + ), } } @@ -384,7 +389,7 @@ fn create_render_pass( match msaa_samples { // Render pass without multisampling. 0 | 1 => { - let rp = single_pass_renderpass!( + let rp = vk::single_pass_renderpass!( device, attachments: { intermediary_color: { @@ -410,7 +415,7 @@ fn create_render_pass( // Renderpass with multisampling. _ => { - let rp = single_pass_renderpass!( + let rp = vk::single_pass_renderpass!( device, attachments: { intermediary_color: { diff --git a/src/frame/raw.rs b/src/frame/raw.rs index aa4380081..2e81082f1 100644 --- a/src/frame/raw.rs +++ b/src/frame/raw.rs @@ -1,16 +1,16 @@ //! The lower-level "raw" frame type allowing to draw directly to the window's swapchain image. -use std::sync::{Arc, Mutex}; -use vk; -use vk::command_buffer::{ +use crate::vk; +use crate::vk::command_buffer::pool::standard::StandardCommandPoolBuilder; +use crate::vk::command_buffer::{ AutoCommandBufferBuilderContextError, BeginRenderPassError, BlitImageError, ClearColorImageError, CopyBufferError, CopyBufferImageError, DrawError, DrawIndexedError, DynamicState, FillBufferError, UpdateBufferError, }; -use vk::command_buffer::pool::standard::StandardCommandPoolBuilder; -use vk::pipeline::input_assembly::Index; -use window; -use window::SwapchainImage; +use crate::vk::pipeline::input_assembly::Index; +use crate::window; +use crate::window::SwapchainImage; +use std::sync::{Arc, Mutex}; /// Allows the user to draw a single **RawFrame** to the surface of a window. /// @@ -135,8 +135,7 @@ pub struct AddCommands<'a> { } // The `AutoCommandBufferBuilder` type used for building the frame's command buffer. -type AutoCommandBufferBuilder = - vk::AutoCommandBufferBuilder; +type AutoCommandBufferBuilder = vk::AutoCommandBufferBuilder; impl RawFrame { // Initialise a new empty frame ready for "drawing". @@ -229,10 +228,12 @@ impl<'a> AddCommands<'a> { // Maps a call onto the command buffer builder. fn map_cb(self, map: F) -> Result where - F: FnOnce(AutoCommandBufferBuilder) -> Result + F: FnOnce(AutoCommandBufferBuilder) -> Result, { { - let mut guard = self.frame.command_buffer_builder + let mut guard = self + .frame + .command_buffer_builder .lock() .expect("failed to lock `RawFrame`'s inner command buffer builder"); let mut builder = guard @@ -259,10 +260,15 @@ impl<'a> AddCommands<'a> { self, framebuffer: F, secondary: bool, - clear_values: C + clear_values: C, ) -> Result where - F: vk::FramebufferAbstract + vk::RenderPassDescClearValues + Clone + Send + Sync + 'static, + F: vk::FramebufferAbstract + + vk::RenderPassDescClearValues + + Clone + + Send + + Sync + + 'static, { self.map_cb(move |cb| cb.begin_render_pass(framebuffer, secondary, clear_values)) } @@ -270,7 +276,7 @@ impl<'a> AddCommands<'a> { /// Adds a command that jumps to the next subpass of the current render pass. pub fn next_subpass( self, - secondary: bool + secondary: bool, ) -> Result { self.map_cb(move |cb| cb.next_subpass(secondary)) } @@ -387,26 +393,27 @@ impl<'a> AddCommands<'a> { destination_mip_level: u32, extent: [u32; 3], layer_count: u32, - ) -> Result // TODO: Expose error: https://github.com/vulkano-rs/vulkano/pull/1112 + ) -> Result + // TODO: Expose error: https://github.com/vulkano-rs/vulkano/pull/1112 where S: vk::ImageAccess + Send + Sync + 'static, D: vk::ImageAccess + Send + Sync + 'static, { self.map_cb(move |cb| { - cb.copy_image( - source, - source_offset, - source_base_array_layer, - source_mip_level, - destination, - destination_offset, - destination_base_array_layer, - destination_mip_level, - extent, - layer_count, - ) - }) - .map_err(|err| panic!("{}", err)) + cb.copy_image( + source, + source_offset, + source_base_array_layer, + source_mip_level, + destination, + destination_offset, + destination_base_array_layer, + destination_mip_level, + extent, + layer_count, + ) + }) + .map_err(|err| panic!("{}", err)) } /// Adds a command that clears all the layers and mipmap levels of a color image with a @@ -440,7 +447,7 @@ impl<'a> AddCommands<'a> { num_layers: u32, first_mipmap: u32, num_mipmaps: u32, - color: vk::ClearValue + color: vk::ClearValue, ) -> Result where I: vk::ImageAccess + Send + Sync + 'static, @@ -461,11 +468,7 @@ impl<'a> AddCommands<'a> { /// /// This command will copy from the source to the destination. If their size is not equal, then /// the amount of data copied is equal to the smallest of the two. - pub fn copy_buffer( - self, - source: S, - destination: D - ) -> Result + pub fn copy_buffer(self, source: S, destination: D) -> Result where S: vk::TypedBufferAccess + Send + Sync + 'static, D: vk::TypedBufferAccess + Send + Sync + 'static, @@ -478,7 +481,7 @@ impl<'a> AddCommands<'a> { pub fn copy_buffer_to_image( self, source: S, - destination: D + destination: D, ) -> Result where S: vk::TypedBufferAccess + Send + Sync + 'static, @@ -497,7 +500,7 @@ impl<'a> AddCommands<'a> { size: [u32; 3], first_layer: u32, num_layers: u32, - mipmap: u32 + mipmap: u32, ) -> Result where S: vk::TypedBufferAccess + Send + Sync + 'static, @@ -521,7 +524,7 @@ impl<'a> AddCommands<'a> { pub fn copy_image_to_buffer( self, source: S, - destination: D + destination: D, ) -> Result where S: vk::ImageAccess + Send + Sync + 'static, @@ -540,7 +543,7 @@ impl<'a> AddCommands<'a> { size: [u32; 3], first_layer: u32, num_layers: u32, - mipmap: u32 + mipmap: u32, ) -> Result where S: vk::ImageAccess + Send + Sync + 'static, @@ -569,24 +572,15 @@ impl<'a> AddCommands<'a> { dynamic: &DynamicState, vertex_buffer: V, sets: S, - constants: Pc + constants: Pc, ) -> Result where Gp: vk::GraphicsPipelineAbstract + vk::VertexSource + Send + Sync + 'static + Clone, S: vk::DescriptorSetsCollection, { - self.map_cb(move |cb| { - cb.draw( - pipeline, - dynamic, - vertex_buffer, - sets, - constants, - ) - }) + self.map_cb(move |cb| cb.draw(pipeline, dynamic, vertex_buffer, sets, constants)) } - /// Draw once, using the vertex_buffer and the index_buffer. /// /// To use only some data in a buffer, wrap it in a `vk::BufferSlice`. @@ -597,7 +591,7 @@ impl<'a> AddCommands<'a> { vertex_buffer: V, index_buffer: Ib, sets: S, - constants: Pc + constants: Pc, ) -> Result where Gp: vk::GraphicsPipelineAbstract + vk::VertexSource + Send + Sync + 'static + Clone, @@ -633,16 +627,11 @@ impl<'a> AddCommands<'a> { self.map_cb(move |cb| cb.fill_buffer(buffer, data)) } - /// Adds a command that writes data to a buffer. /// /// If data is larger than the buffer, only the part of data that fits is written. If the /// buffer is larger than data, only the start of the buffer is written. - pub fn update_buffer( - self, - buffer: B, - data: D - ) -> Result + pub fn update_buffer(self, buffer: B, data: D) -> Result where B: vk::TypedBufferAccess + Send + Sync + 'static, D: Send + Sync + 'static, diff --git a/src/geom/cuboid.rs b/src/geom/cuboid.rs index 7ae063a20..d27d448a2 100644 --- a/src/geom/cuboid.rs +++ b/src/geom/cuboid.rs @@ -2,9 +2,9 @@ //! //! The main type is the `Cuboid` type. -use geom::{quad, scalar, Point3, Quad, Range, Tri, Vector3}; -use math::num_traits::Float; -use math::BaseNum; +use crate::geom::{quad, scalar, Point3, Quad, Range, Tri, Vector3}; +use crate::math::num_traits::Float; +use crate::math::BaseNum; use std::ops::Neg; /// The number of faces on a Cuboid. diff --git a/src/geom/ellipse.rs b/src/geom/ellipse.rs index a115f1b8c..50861ff0e 100644 --- a/src/geom/ellipse.rs +++ b/src/geom/ellipse.rs @@ -1,6 +1,6 @@ -use geom::{self, scalar, Point2, Rect, Tri}; -use math::num_traits::NumCast; -use math::{self, BaseFloat, BaseNum}; +use crate::geom::{self, scalar, Point2, Rect, Tri}; +use crate::math::num_traits::NumCast; +use crate::math::{self, BaseFloat, BaseNum}; use std; use std::ops::Neg; diff --git a/src/geom/graph/edge.rs b/src/geom/graph/edge.rs index f24c37dca..ae897a4d0 100644 --- a/src/geom/graph/edge.rs +++ b/src/geom/graph/edge.rs @@ -1,7 +1,7 @@ //! Items related to the edges of a geometry graph. +use crate::geom::{self, Vector3}; +use crate::math::{BaseFloat, Euler, Rad}; use daggy; -use geom::{self, Vector3}; -use math::{BaseFloat, Euler, Rad}; /// Unique index for an **Edge** within a **Graph**. pub type Index = daggy::EdgeIndex; diff --git a/src/geom/graph/mod.rs b/src/geom/graph/mod.rs index 9906e5931..f3c7192d1 100644 --- a/src/geom/graph/mod.rs +++ b/src/geom/graph/mod.rs @@ -1,7 +1,7 @@ +use crate::geom::{self, Point3, Vector3}; +use crate::math::BaseFloat; use daggy::petgraph::visit::{GraphBase, IntoNeighbors, Visitable}; use daggy::{self, Walker}; -use geom::{self, Point3, Vector3}; -use math::BaseFloat; use std::iter; use std::ops; use std::option; diff --git a/src/geom/graph/node.rs b/src/geom/graph/node.rs index 87488a4a3..ebbd6a8f8 100644 --- a/src/geom/graph/node.rs +++ b/src/geom/graph/node.rs @@ -1,11 +1,11 @@ //! Items related to the nodes of a geometry graph. +use crate::geom; +use crate::geom::graph::Edge; +use crate::geom::{scalar, Graph, Point3, Vector3}; +use crate::math::{self, BaseFloat, Basis3, Euler, Rad, Rotation}; use daggy::petgraph::visit::{self, Visitable}; use daggy::{self, Walker}; -use geom; -use geom::graph::Edge; -use geom::{scalar, Graph, Point3, Vector3}; -use math::{self, BaseFloat, Basis3, Euler, Rad, Rotation}; use std::collections::HashMap; use std::marker::PhantomData; use std::ops; @@ -259,7 +259,7 @@ where { /// Apply the given parent `Edge` to this transform. pub fn apply_edge(&mut self, parent: &Self, edge: &Edge) { - use geom::graph::edge::{Axis, Relative}; + use crate::geom::graph::edge::{Axis, Relative}; match (edge.kind.relative, edge.kind.axis) { (Relative::Position, Axis::X) => self.disp.x += parent.disp.x + edge.weight, (Relative::Position, Axis::Y) => self.disp.y += parent.disp.y + edge.weight, diff --git a/src/geom/line/cap/mod.rs b/src/geom/line/cap/mod.rs index 859cf7836..58764b008 100644 --- a/src/geom/line/cap/mod.rs +++ b/src/geom/line/cap/mod.rs @@ -36,8 +36,8 @@ pub mod butt; pub mod round; pub mod square; -use geom::{ellipse, quad, Point2}; -use math::BaseFloat; +use crate::geom::{ellipse, quad, Point2}; +use crate::math::BaseFloat; /// An iterator yielding the vertices of a line cap. #[derive(Clone, Debug)] diff --git a/src/geom/line/cap/round.rs b/src/geom/line/cap/round.rs index 3601aa94e..6e60c927f 100644 --- a/src/geom/line/cap/round.rs +++ b/src/geom/line/cap/round.rs @@ -1,5 +1,5 @@ -use geom::{ellipse, vec2, Ellipse, Point2, Rect}; -use math::{BaseFloat, EuclideanSpace, InnerSpace}; +use crate::geom::{ellipse, vec2, Ellipse, Point2, Rect}; +use crate::math::{BaseFloat, EuclideanSpace, InnerSpace}; use std::f64::consts::PI; /// A line cap with a rounded edge around a line's start or end. diff --git a/src/geom/line/cap/square.rs b/src/geom/line/cap/square.rs index dc00d0329..055b06b87 100644 --- a/src/geom/line/cap/square.rs +++ b/src/geom/line/cap/square.rs @@ -1,5 +1,5 @@ -use geom::{vec2, Point2, Quad}; -use math::{BaseFloat, InnerSpace}; +use crate::geom::{vec2, Point2, Quad}; +use crate::math::{BaseFloat, InnerSpace}; /// A line cap with a square edge that extends past the end of the start or end by half the line's /// thickness. diff --git a/src/geom/line/join/miter.rs b/src/geom/line/join/miter.rs index f67e1a2a0..eafce699c 100644 --- a/src/geom/line/join/miter.rs +++ b/src/geom/line/join/miter.rs @@ -1,5 +1,5 @@ -use geom::{line, Line, Point2, Quad}; -use math::BaseFloat; +use crate::geom::{line, Line, Point2, Quad}; +use crate::math::BaseFloat; /// An iterator yielding the normal vertices of a miter polyline. /// @@ -39,7 +39,8 @@ use math::BaseFloat; /// ## Example /// /// ``` -/// extern crate nannou; +/// + /// /// use nannou::prelude::*; /// use nannou::geom::line; @@ -227,12 +228,12 @@ where }; let Quad([ar, al, bl_ab, br_ab]) = ab.quad_corners(); let Quad([br_bc, bl_bc, cl, cr]) = bc.quad_corners(); - let mut il = match line::join::intersect((al, bl_ab), (cl, bl_bc)) { + let il = match line::join::intersect((al, bl_ab), (cl, bl_bc)) { Some(il) => il, // If the lines are parallel, produce the join vertices. None => bl_ab, }; - let mut ir = match line::join::intersect((ar, br_ab), (cr, br_bc)) { + let ir = match line::join::intersect((ar, br_ab), (cr, br_bc)) { Some(ir) => ir, None => br_ab, }; @@ -253,11 +254,13 @@ where let a = self.point_a.is_some(); let b = self.point_b.is_some(); match (a, b) { - (false, true) => if remaining_points <= 1 { - 0 - } else { - remaining_points - }, + (false, true) => { + if remaining_points <= 1 { + 0 + } else { + remaining_points + } + } (true, true) => remaining_points + 1, _ => 0, } diff --git a/src/geom/line/join/mod.rs b/src/geom/line/join/mod.rs index 3c03bb2c6..1d293c686 100644 --- a/src/geom/line/join/mod.rs +++ b/src/geom/line/join/mod.rs @@ -33,8 +33,8 @@ //! - [**bevel**](./bevel/index.html): Cuts the outside edge off where a circle the diameter of the //! thickness intersects -use geom::{Line, Point2}; -use math::BaseFloat; +use crate::geom::{Line, Point2}; +use crate::math::BaseFloat; pub mod bevel; pub mod miter; @@ -64,7 +64,8 @@ pub mod round; /// ## Example /// /// ``` -/// extern crate nannou; +/// + /// /// use nannou::prelude::*; /// use nannou::geom::line; @@ -151,7 +152,8 @@ where /// ## Example /// /// ``` -/// extern crate nannou; +/// + /// /// use nannou::prelude::*; /// use nannou::geom::line; diff --git a/src/geom/line/mod.rs b/src/geom/line/mod.rs index 2fd67b721..a953c5340 100644 --- a/src/geom/line/mod.rs +++ b/src/geom/line/mod.rs @@ -1,5 +1,5 @@ -use geom::{self, ellipse, quad, scalar, tri, vec2, Point2, Rect}; -use math::{two, BaseFloat, EuclideanSpace, InnerSpace}; +use crate::geom::{self, ellipse, quad, scalar, tri, vec2, Point2, Rect}; +use crate::math::{two, BaseFloat, EuclideanSpace, InnerSpace}; pub mod cap; pub mod join; @@ -239,7 +239,8 @@ where /// ## Examples /// /// ``` -/// extern crate nannou; +/// + /// /// use nannou::prelude::*; /// use nannou::geom::line; diff --git a/src/geom/mod.rs b/src/geom/mod.rs index db96f3336..cfa60b5a9 100644 --- a/src/geom/mod.rs +++ b/src/geom/mod.rs @@ -9,8 +9,8 @@ //! - Functions for determining the bounding rectangle or cuboid. //! - A function for finding the centroid. -use math::num_traits::cast; -use math::{BaseFloat, EuclideanSpace}; +use crate::math::num_traits::cast; +use crate::math::{BaseFloat, EuclideanSpace}; use std::ops; pub mod cuboid; diff --git a/src/geom/point.rs b/src/geom/point.rs index c680d7e9b..5df4c0c77 100644 --- a/src/geom/point.rs +++ b/src/geom/point.rs @@ -6,7 +6,7 @@ //! distinct types. For now, we are attempting to monitor usage and feedback to determine whether //! or not this change is worth it. -use geom::{scalar, Vector2, Vector3, Vector4}; +use crate::geom::{scalar, Vector2, Vector3, Vector4}; /// A 2-dimensional point type. pub type Point2 = Vector2; diff --git a/src/geom/polygon.rs b/src/geom/polygon.rs index 1ebec3234..5f0b79527 100644 --- a/src/geom/polygon.rs +++ b/src/geom/polygon.rs @@ -1,5 +1,5 @@ -use geom::tri::{self, Tri}; -use geom::{Cuboid, Rect, Vertex, Vertex2d, Vertex3d}; +use crate::geom::tri::{self, Tri}; +use crate::geom::{Cuboid, Rect, Vertex, Vertex2d, Vertex3d}; /// A simple type wrapper around a list of points that describe a polygon. #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/src/geom/quad.rs b/src/geom/quad.rs index 3271ed94a..6fbd898b0 100644 --- a/src/geom/quad.rs +++ b/src/geom/quad.rs @@ -1,5 +1,5 @@ -use geom::{tri, vertex, Cuboid, Range, Rect, Tri, Vertex, Vertex2d, Vertex3d}; -use math::EuclideanSpace; +use crate::geom::{tri, vertex, Cuboid, Range, Rect, Tri, Vertex, Vertex2d, Vertex3d}; +use crate::math::EuclideanSpace; use std::ops::{Deref, Index}; /// The number of vertices in a quad. @@ -86,8 +86,6 @@ where /// Here's a basic code example: /// /// ``` - /// extern crate nannou; - /// /// use nannou::geom::{self, pt2, Quad, Tri}; /// /// fn main() { @@ -202,8 +200,6 @@ where /// Here's a basic code example: /// /// ``` -/// extern crate nannou; -/// /// use nannou::geom::{self, pt2, Quad, Tri}; /// /// fn main() { diff --git a/src/geom/range.rs b/src/geom/range.rs index 4ac0c50af..7f2d76058 100644 --- a/src/geom/range.rs +++ b/src/geom/range.rs @@ -1,8 +1,8 @@ //! A type for working with one-dimensional ranges. -use geom::scalar; -use math::num_traits::{Float, One, Zero}; -use math::{self, two, BaseNum}; +use crate::geom::scalar; +use crate::math::num_traits::{Float, One, Zero}; +use crate::math::{self, two, BaseNum}; use std::ops::Neg; /// Some start and end position along a single axis. diff --git a/src/geom/rect.rs b/src/geom/rect.rs index 610dc367a..9130c380f 100644 --- a/src/geom/rect.rs +++ b/src/geom/rect.rs @@ -1,6 +1,6 @@ -use geom::{quad, scalar, Align, Edge, Point2, Quad, Range, Tri, Vector2}; -use math::num_traits::Float; -use math::{self, BaseNum}; +use crate::geom::{quad, scalar, Align, Edge, Point2, Quad, Range, Tri, Vector2}; +use crate::math::num_traits::Float; +use crate::math::{self, BaseNum}; use std::ops::Neg; /// Defines a Rectangle's bounds across the x and y axes. @@ -462,10 +462,10 @@ where /// The four corners of the `Rect`. pub fn corners(&self) -> Quad> { Quad::from([ - corner_from_index!(self, 0), - corner_from_index!(self, 1), - corner_from_index!(self, 2), - corner_from_index!(self, 3), + corner_from_index!(self, 0), + corner_from_index!(self, 1), + corner_from_index!(self, 2), + corner_from_index!(self, 3), ]) } diff --git a/src/geom/tri.rs b/src/geom/tri.rs index 48a1c5fff..fe3e8a422 100644 --- a/src/geom/tri.rs +++ b/src/geom/tri.rs @@ -1,5 +1,5 @@ -use geom::{vertex, Cuboid, Point2, Range, Rect, Vertex, Vertex2d, Vertex3d}; -use math::{BaseNum, EuclideanSpace, Zero}; +use crate::geom::{vertex, Cuboid, Point2, Range, Rect, Vertex, Vertex2d, Vertex3d}; +use crate::math::{BaseNum, EuclideanSpace, Zero}; use std::ops::Deref; /// The number of vertices in a triangle. @@ -96,7 +96,6 @@ where /// # Example /// /// ``` - /// # extern crate nannou; /// # use nannou::prelude::*; /// # use nannou::geom::Tri; /// # fn main() { diff --git a/src/geom/vector.rs b/src/geom/vector.rs index 8c9ba11d7..361d0fd76 100644 --- a/src/geom/vector.rs +++ b/src/geom/vector.rs @@ -4,10 +4,11 @@ //! crate. Originally we used the `cgmath` types directly, however we decided to switch to our own //! implementations in order to gain some flexibility. -use geom::scalar; -use math::{self, BaseFloat, Bounded, InnerSpace, NumCast, One, Zero}; -use rand::distributions::{Distribution, Standard}; -use rand::Rng; +use crate::geom::scalar; +use crate::math::{self, BaseFloat, Bounded, InnerSpace, NumCast, One, Zero}; +use crate::rand::distributions::{Distribution, Standard}; +use crate::rand::Rng; +use crate::serde_derive::{Deserialize, Serialize}; use std::{iter, ops}; /// A 2-dimensional vector. @@ -597,8 +598,8 @@ mod cgmath_impl { } use super::{Vector2, Vector3, Vector4}; - use math::approx::ApproxEq; - use math::cgmath::{ + use crate::math::approx::ApproxEq; + use crate::math::cgmath::{ self, Angle, Array, BaseFloat, BaseNum, ElementWise, EuclideanSpace, InnerSpace, MetricSpace, Rad, VectorSpace, }; @@ -1090,10 +1091,9 @@ impl Vector2 { /// /// # Examples /// ``` - /// # extern crate nannou; - /// # use nannou::prelude::*; + /// # use nannou::prelude::*; /// # use nannou::Draw; - /// # fn main() { + /// # fn main() { /// let vector = Vector2::new(-0.5, 0.5); /// let theta = vector.angle() * -1.0; /// # let draw = Draw::new(); diff --git a/src/geom/vertex.rs b/src/geom/vertex.rs index 9afea8228..6254e3d5f 100644 --- a/src/geom/vertex.rs +++ b/src/geom/vertex.rs @@ -1,6 +1,6 @@ -use color; -use geom::{scalar, Point2, Point3}; -use math::BaseNum; +use crate::color; +use crate::geom::{scalar, Point2, Point3}; +use crate::math::BaseNum; use std::ops::{Deref, DerefMut}; /// Types used as vertices that can be used to describe geometric points in space. diff --git a/src/image.rs b/src/image.rs index 34cb010e3..1c0f87f00 100644 --- a/src/image.rs +++ b/src/image.rs @@ -2,5 +2,4 @@ //! [image crate](https://docs.rs/image) which supports reading and writing PNG, JPEG, GIF, WEBP, //! BMP and more. -extern crate image; -pub use self::image::*; +pub use image::*; diff --git a/src/lib.rs b/src/lib.rs index 417871f15..a5112ca8c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,6 @@ -#![doc(html_logo_url = "https://raw.githubusercontent.com/nannou-org/nannou/master/assets/images/logo.png")] +#![doc( + html_logo_url = "https://raw.githubusercontent.com/nannou-org/nannou/master/assets/images/logo.png" +)] //! An open-source creative-coding toolkit for Rust. //! @@ -11,31 +13,22 @@ //! examples](https://github.com/nannou-org/nannou/tree/master/examples) to get an idea of how //! nannou applications are structured and how the API works. -pub extern crate conrod_core; -pub extern crate conrod_vulkano; -#[macro_use] -pub extern crate conrod_winit; -pub extern crate daggy; -pub extern crate find_folder; -extern crate serde; -#[macro_use] -extern crate serde_derive; -extern crate serde_json; -extern crate toml; -#[macro_use] -pub extern crate vulkano; -pub extern crate vulkano_shaders; -pub extern crate vulkano_win; -pub extern crate winit; - -#[cfg(target_os = "macos")] -extern crate moltenvk_deps; +pub use conrod_core; +pub use conrod_vulkano; +pub use conrod_winit; +pub use daggy; +pub use find_folder; +use serde_derive; +pub use vulkano; +pub use vulkano_shaders; +pub use vulkano_win; +pub use winit; pub use self::event::Event; pub use self::frame::Frame; pub use self::ui::Ui; -pub use app::{App, LoopMode}; -pub use draw::Draw; +pub use crate::app::{App, LoopMode}; +pub use crate::draw::Draw; pub mod app; pub mod audio; diff --git a/src/math.rs b/src/math.rs index 5036528b2..1a54b6275 100644 --- a/src/math.rs +++ b/src/math.rs @@ -1,8 +1,8 @@ //! A mathematical foundation for nannou including point and vector types and a range of //! helper/utility functions. -pub extern crate approx; -pub extern crate cgmath; +pub use approx; +pub use cgmath; pub use self::cgmath::num_traits::{self, Bounded, Float, NumCast, One, Zero}; // cgmath modules diff --git a/src/mesh/mod.rs b/src/mesh/mod.rs index 33b4fe46d..9edfabde7 100644 --- a/src/mesh/mod.rs +++ b/src/mesh/mod.rs @@ -2,8 +2,8 @@ //! including position, color, texture-coordinate and normals. Note that this is quite a low-level //! representation. For a higher-level, graphics-related mesh API, see the `draw` module. -use geom::{self, Point2}; -use math::{BaseFloat, BaseNum, EuclideanSpace}; +use crate::geom::{self, Point2}; +use crate::math::{BaseFloat, BaseNum, EuclideanSpace}; use std::cell::{Ref, RefMut}; use std::cmp; use std::marker::PhantomData; diff --git a/src/mesh/vertex.rs b/src/mesh/vertex.rs index 874d6950b..84e531d99 100644 --- a/src/mesh/vertex.rs +++ b/src/mesh/vertex.rs @@ -1,8 +1,8 @@ //! Vertex types yielded by the mesh adaptors and their implementations. -use geom::graph::node::{self, ApplyTransform}; -use geom::{self, Point2, Point3}; -use math::BaseFloat; +use crate::geom::graph::node::{self, ApplyTransform}; +use crate::geom::{self, Point2, Point3}; +use crate::math::BaseFloat; use std::ops::{Deref, DerefMut}; /// A vertex with a specified color. @@ -230,7 +230,7 @@ where #[test] fn test_tuple_conv() { - use color::named::GREEN; + use crate::color::named::GREEN; let _: Point2<_> = [0.0, 0.0].into(); let _: WithColor, _> = ([0.0, 0.0], GREEN).into(); } diff --git a/src/noise.rs b/src/noise.rs index 64335bfb7..0d521527d 100644 --- a/src/noise.rs +++ b/src/noise.rs @@ -1,5 +1,4 @@ //! Items related to [noise generation](https://docs.rs/noise/0.5.1/noise/), API offered via the //! [noise-rs crate](https://docs.rs/noise). -extern crate noise; -pub use self::noise::*; +pub use noise::*; diff --git a/src/osc/mod.rs b/src/osc/mod.rs index 7f663761e..1dc77b537 100644 --- a/src/osc/mod.rs +++ b/src/osc/mod.rs @@ -1,7 +1,7 @@ //! Tools for working with OSC. [**sender()**](./fn.sender.html) creates an OSC sender, //! [**receiver(port)**](./fn.receiver.html) creates an OSC receiver. -pub extern crate rosc; +pub use rosc; // Re-export rosc items. // @@ -82,9 +82,11 @@ impl Packet { pub fn unfold(self, msgs: &mut Vec) { match self { Packet::Message(msg) => msgs.push(msg), - Packet::Bundle(bundle) => for packet in bundle.content { - Packet::unfold(packet.into(), msgs); - }, + Packet::Bundle(bundle) => { + for packet in bundle.content { + Packet::unfold(packet.into(), msgs); + } + } } } diff --git a/src/osc/recv.rs b/src/osc/recv.rs index fb36cfaa4..b1fc720d3 100644 --- a/src/osc/recv.rs +++ b/src/osc/recv.rs @@ -83,8 +83,6 @@ impl Receiver { /// Create a `Receiver` that listen for OSC packets on the given address. /// /// ```no_run - /// extern crate nannou; - /// /// use nannou::osc::Receiver; /// /// fn main() { @@ -107,8 +105,6 @@ impl Receiver { /// By default this is `DEFAULT_MTU`. /// /// ```no_run - /// extern crate nannou; - /// /// use nannou::osc::Receiver; /// /// fn main() { @@ -138,8 +134,6 @@ impl Receiver { /// The resulting socket address will be `0.0.0.0:`. /// /// ```no_run - /// extern crate nannou; - /// /// use nannou::osc::Receiver; /// /// fn main() { @@ -155,8 +149,6 @@ impl Receiver { /// The resulting socket address will be `0.0.0.0:`. /// /// ```no_run - /// extern crate nannou; - /// /// use nannou::osc::Receiver; /// /// fn main() { @@ -176,8 +168,6 @@ impl Receiver { /// **Panic!**s if the given `addr` cannot resolve to a valid `SocketAddr`. /// /// ```no_run - /// extern crate nannou; - /// /// use nannou::osc::Receiver; /// /// fn main() { diff --git a/src/osc/send.rs b/src/osc/send.rs index e425e4034..588f46c6e 100644 --- a/src/osc/send.rs +++ b/src/osc/send.rs @@ -37,7 +37,6 @@ impl Sender { /// bound to the default address. /// /// ```no_run - /// extern crate nannou; /// /// use nannou::osc::Sender; /// @@ -74,7 +73,6 @@ impl Sender { /// **Panic!**s if the given `addr` cannot resolve to a valid `SocketAddr`. /// /// ```no_run - /// extern crate nannou; /// /// use nannou::osc::Sender; /// diff --git a/src/prelude.rs b/src/prelude.rs index bc81e3c1e..9fa8705d1 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -1,29 +1,31 @@ //! A collection of commonly used items that we recommend importing for ease of use. -pub use app::{self, App, LoopMode}; -pub use audio; -pub use color::named::*; -pub use color::{Hsl, Hsla, Hsv, Hsva, Rgb, Rgba}; -pub use event::WindowEvent::*; -pub use event::{AxisMotion, Event, Key, MouseButton, MouseScrollDelta, TouchEvent, TouchPhase, - TouchpadPressure, Update, WindowEvent}; -pub use frame::{Frame, RawFrame, ViewFbo, ViewFramebufferObject}; -pub use geom::{ +pub use crate::app::{self, App, LoopMode}; +pub use crate::audio; +pub use crate::color::named::*; +pub use crate::color::{Hsl, Hsla, Hsv, Hsva, Rgb, Rgba}; +pub use crate::event::WindowEvent::*; +pub use crate::event::{ + AxisMotion, Event, Key, MouseButton, MouseScrollDelta, TouchEvent, TouchPhase, + TouchpadPressure, Update, WindowEvent, +}; +pub use crate::frame::{Frame, RawFrame, ViewFbo, ViewFramebufferObject}; +pub use crate::geom::{ self, pt2, pt3, vec2, vec3, vec4, Cuboid, Point2, Point3, Rect, Vector2, Vector3, Vector4, }; -pub use io::{load_from_json, load_from_toml, safe_file_save, save_to_json, save_to_toml}; -pub use math::num_traits::*; -pub use math::prelude::*; -pub use math::{ +pub use crate::io::{load_from_json, load_from_toml, safe_file_save, save_to_json, save_to_toml}; +pub use crate::math::num_traits::*; +pub use crate::math::prelude::*; +pub use crate::math::{ clamp, deg_to_rad, fmod, map_range, partial_max, partial_min, rad_to_deg, rad_to_turns, turns_to_rad, }; -pub use osc; -pub use rand::{random, random_f32, random_f64, random_range}; -pub use time::DurationF64; -pub use ui; -pub use vk::{self, DeviceOwned as VulkanDeviceOwned, DynamicStateBuilder, GpuFuture}; -pub use window::{self, Id as WindowId}; +pub use crate::osc; +pub use crate::rand::{random, random_f32, random_f64, random_range}; +pub use crate::time::DurationF64; +pub use crate::ui; +pub use crate::vk::{self, DeviceOwned as VulkanDeviceOwned, DynamicStateBuilder, GpuFuture}; +pub use crate::window::{self, Id as WindowId}; // The following constants have "regular" names for the `DefaultScalar` type and type suffixes for // other types. If the `DefaultScalar` changes, these should probably change too. diff --git a/src/rand.rs b/src/rand.rs index 5e4176e1e..3a7dd370d 100644 --- a/src/rand.rs +++ b/src/rand.rs @@ -2,7 +2,7 @@ //! functions including [**random_f32()**](./fn.random_f32.html), [**random_f64()**](./fn.random_f64.html) //! and [**random_range(min, max)**](./fn.random_f32.html). -pub extern crate rand; +pub use rand; pub use self::rand::*; diff --git a/src/state.rs b/src/state.rs index 9c395b35a..1d28c4d6b 100644 --- a/src/state.rs +++ b/src/state.rs @@ -9,8 +9,8 @@ pub use self::window::Window; /// Tracked state related to the focused window. pub mod window { - use geom; - use window; + use crate::geom; + use crate::window; /// The default scalar value used for window positioning and sizing. pub type DefaultScalar = geom::scalar::Default; @@ -37,7 +37,7 @@ pub mod window { /// Tracked state related to the keyboard. pub mod keys { - use event::{Key, ModifiersState}; + use crate::event::{Key, ModifiersState}; use std::collections::HashSet; use std::ops::Deref; @@ -66,16 +66,16 @@ pub mod keys { /// Tracked state related to the mouse. pub mod mouse { - use geom::{self, Point2}; - use math::BaseFloat; + use crate::geom::{self, Point2}; + use crate::math::BaseFloat; + use crate::window; use std; - use window; /// The default scalar value used for positions. pub type DefaultScalar = geom::scalar::Default; #[doc(inline)] - pub use event::MouseButton as Button; + pub use crate::event::MouseButton as Button; /// The max total number of buttons on a mouse. pub const NUM_BUTTONS: usize = 9; diff --git a/src/ui.rs b/src/ui.rs index 3f5b88503..eef8d792d 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -1,14 +1,16 @@ //! The User Interface API. Instantiate a [**Ui**](struct.Ui.html) via `app.new_ui()`. +pub use self::conrod_core::event::Input; +pub use self::conrod_core::{ + color, cursor, event, graph, image, input, position, scroll, text, theme, utils, widget, +}; +pub use self::conrod_core::{ + Borderable, Bordering, Color, Colorable, Dimensions, FontSize, Labelable, Point, Positionable, + Range, Rect, Scalar, Sizeable, Theme, UiCell, Widget, +}; pub use crate::conrod_core; pub use crate::conrod_vulkano; pub use crate::conrod_winit; -pub use self::conrod_core::event::Input; -pub use self::conrod_core::{color, cursor, event, graph, image, input, position, scroll, text, - theme, utils, widget}; -pub use self::conrod_core::{Borderable, Bordering, Color, Colorable, Dimensions, FontSize, - Labelable, Point, Positionable, Range, Rect, Scalar, Sizeable, Theme, - UiCell, Widget}; /// Simplify inclusion of common traits with a `nannou::ui::prelude` module. pub mod prelude { @@ -22,9 +24,12 @@ pub mod prelude { pub use super::{color, image, position, text, widget}; } -use frame::{Frame, ViewFbo}; use self::conrod_core::text::rt::gpu_cache::CacheWriteErr; use self::conrod_vulkano::RendererCreationError; +use crate::frame::{Frame, ViewFbo}; +use crate::vk; +use crate::window::{self, Window}; +use crate::App; use std::cell::RefCell; use std::collections::HashMap; use std::error::Error as StdError; @@ -32,10 +37,7 @@ use std::fmt; use std::ops::Deref; use std::path::PathBuf; use std::sync::{mpsc, Arc, Mutex}; -use vk; -use window::{self, Window}; use winit; -use App; /// Owned by the `App`, the `Arrangement` handles the mapping between `Ui`s and their associated /// windows. @@ -369,7 +371,9 @@ impl<'a> Builder<'a> { // If the default font is in the assets/fonts directory, load it into the UI font map. let default_font_path = default_font_path.or_else(|| { - app.assets_path().ok().map(|p| p.join(Ui::DEFAULT_FONT_PATH)) + app.assets_path() + .ok() + .map(|p| p.join(Ui::DEFAULT_FONT_PATH)) }); // If there is some font path to use for the default font, attempt to load it. @@ -391,7 +395,7 @@ pub fn create_render_pass( depth_format: vk::Format, msaa_samples: u32, ) -> Result, vk::RenderPassCreationError> { - let render_pass = single_pass_renderpass!( + let render_pass = vk::single_pass_renderpass!( device, attachments: { color: { @@ -428,9 +432,7 @@ impl RenderPassImages { msaa_samples, DEPTH_FORMAT_TY, )?; - Ok(RenderPassImages { - depth, - }) + Ok(RenderPassImages { depth }) } } @@ -443,11 +445,14 @@ impl RenderTarget { let render_pass = create_render_pass(device, color_format, DEPTH_FORMAT, msaa_samples)?; let images = RenderPassImages::new(window)?; let view_fbo = ViewFbo::default(); - Ok(RenderTarget { render_pass, images, view_fbo }) + Ok(RenderTarget { + render_pass, + images, + view_fbo, + }) } } - impl Deref for Ui { type Target = conrod_core::Ui; fn deref(&self) -> &Self::Target { @@ -554,11 +559,7 @@ impl Ui { /// method offers more flexibility. /// /// This has no effect if the window originally associated with the `Ui` no longer exists. - pub fn draw_to_frame( - &self, - app: &App, - frame: &Frame, - ) -> Result<(), DrawToFrameError> { + pub fn draw_to_frame(&self, app: &App, frame: &Frame) -> Result<(), DrawToFrameError> { let primitives = self.ui.draw(); draw_primitives(self, app, frame, primitives) } @@ -604,11 +605,15 @@ pub fn draw_primitives( let window = match app.window(window_id) { Some(window) => window, - None=> return Err(DrawToFrameError::InvalidWindow), + None => return Err(DrawToFrameError::InvalidWindow), }; - let mut renderer = renderer.lock().map_err(|_| DrawToFrameError::RendererPoisoned)?; - let mut render_mode = render_mode.lock().map_err(|_| DrawToFrameError::RenderModePoisoned)?; + let mut renderer = renderer + .lock() + .map_err(|_| DrawToFrameError::RendererPoisoned)?; + let mut render_mode = render_mode + .lock() + .map_err(|_| DrawToFrameError::RenderModePoisoned)?; let render_target = match *render_mode { RenderMode::Subpass => return Err(DrawToFrameError::InvalidRenderMode), @@ -629,9 +634,7 @@ pub fn draw_primitives( // Ensure image framebuffer are up to date. view_fbo.update(&frame, render_pass.clone(), |builder, image| { - builder - .add(image.clone())? - .add(images.depth.clone()) + builder.add(image.clone())?.add(images.depth.clone()) })?; // Fill renderer with the primitives and cache glyphs. @@ -639,7 +642,8 @@ pub fn draw_primitives( let dpi_factor = window.hidpi_factor() as f64; let viewport = [0.0, 0.0, win_w as f32, win_h as f32]; if let Some(cmd) = renderer.fill(image_map, viewport, dpi_factor, primitives)? { - let buffer = cmd.glyph_cpu_buffer_pool + let buffer = cmd + .glyph_cpu_buffer_pool .chunk(cmd.glyph_cache_pixel_buffer.iter().cloned())?; frame .add_commands() @@ -664,26 +668,22 @@ pub fn draw_primitives( vertex_buffer, descriptor_set, } = cmd; - frame - .add_commands() - .draw( - graphics_pipeline, - &dynamic_state, - vec![vertex_buffer], - descriptor_set, - (), - )?; + frame.add_commands().draw( + graphics_pipeline, + &dynamic_state, + vec![vertex_buffer], + descriptor_set, + (), + )?; } - frame - .add_commands() - .end_render_pass() - .unwrap(); + frame.add_commands().end_render_pass().unwrap(); } Ok(()) } mod conrod_winit_conv { + use crate::conrod_winit::*; conrod_winit::conversion_fns!(); } @@ -797,12 +797,14 @@ impl StdError for RenderTargetCreationError { impl StdError for DrawToFrameError { fn description(&self) -> &str { match *self { - DrawToFrameError::InvalidWindow => - "no open window associated with the given `window_id`", + DrawToFrameError::InvalidWindow => { + "no open window associated with the given `window_id`" + } DrawToFrameError::RendererPoisoned => "`Mutex` containing `Renderer` was poisoned", DrawToFrameError::RenderModePoisoned => "`Mutex` containing `RenderMode` was poisoned", - DrawToFrameError::InvalidRenderMode => - "`draw_to_frame` was called while `Ui` was in `Subpass` render mode", + DrawToFrameError::InvalidRenderMode => { + "`draw_to_frame` was called while `Ui` was in `Subpass` render mode" + } DrawToFrameError::ImageCreation(ref err) => err.description(), DrawToFrameError::FramebufferCreation(ref err) => err.description(), DrawToFrameError::RendererFill(ref err) => err.description(), diff --git a/src/vk.rs b/src/vk.rs index dc9419f39..b9c48ae95 100644 --- a/src/vk.rs +++ b/src/vk.rs @@ -20,122 +20,108 @@ pub use vulkano::*; // Re-export type and trait names whose meaning are still obvious outside of their module. pub use vulkano::{ + buffer::cpu_pool::{CpuBufferPoolChunk, CpuBufferPoolSubbuffer}, buffer::{ - BufferAccess, BufferInner, BufferSlice, BufferUsage, TypedBufferAccess, - CpuAccessibleBuffer, CpuBufferPool, DeviceLocalBuffer, ImmutableBuffer, - BufferCreationError, BufferView, BufferViewRef - }, - buffer::cpu_pool::{ - CpuBufferPoolChunk, CpuBufferPoolSubbuffer, + BufferAccess, BufferCreationError, BufferInner, BufferSlice, BufferUsage, BufferView, + BufferViewRef, CpuAccessibleBuffer, CpuBufferPool, DeviceLocalBuffer, ImmutableBuffer, + TypedBufferAccess, }, command_buffer::{ - AutoCommandBuffer, AutoCommandBufferBuilder, CommandBufferExecFuture, - DispatchIndirectCommand, DrawIndirectCommand, DynamicState, - AutoCommandBufferBuilderContextError, ExecuteCommandsError, StateCacherOutcome, - UpdateBufferError, CommandBuffer, - }, - descriptor::{ - DescriptorSet, PipelineLayoutAbstract, + AutoCommandBuffer, AutoCommandBufferBuilder, AutoCommandBufferBuilderContextError, + CommandBuffer, CommandBufferExecFuture, DispatchIndirectCommand, DrawIndirectCommand, + DynamicState, ExecuteCommandsError, StateCacherOutcome, UpdateBufferError, }, descriptor::descriptor::{ - DescriptorBufferDesc, DescriptorDesc, DescriptorImageDesc, ShaderStages, - DescriptorDescSupersetError, DescriptorDescTy, DescriptorImageDescArray, - DescriptorImageDescDimensions, DescriptorType, ShaderStagesSupersetError, + DescriptorBufferDesc, DescriptorDesc, DescriptorDescSupersetError, DescriptorDescTy, + DescriptorImageDesc, DescriptorImageDescArray, DescriptorImageDescDimensions, + DescriptorType, ShaderStages, ShaderStagesSupersetError, }, descriptor::descriptor_set::{ + DescriptorPool, DescriptorPoolAlloc, DescriptorPoolAllocError, DescriptorSetDesc, DescriptorSetsCollection, DescriptorWrite, DescriptorsCount, FixedSizeDescriptorSet, FixedSizeDescriptorSetBuilder, FixedSizeDescriptorSetBuilderArray, FixedSizeDescriptorSetsPool, PersistentDescriptorSet, PersistentDescriptorSetBuf, - PersistentDescriptorSetBufView, PersistentDescriptorSetBuilder, - PersistentDescriptorSetBuilderArray, PersistentDescriptorSetImg, - PersistentDescriptorSetSampler, StdDescriptorPool, StdDescriptorPoolAlloc, - UnsafeDescriptorPool, UnsafeDescriptorPoolAllocIter, UnsafeDescriptorSet, - UnsafeDescriptorSetLayout, DescriptorPoolAllocError, PersistentDescriptorSetBuildError, - PersistentDescriptorSetError, DescriptorPool, DescriptorPoolAlloc, DescriptorSetDesc, + PersistentDescriptorSetBufView, PersistentDescriptorSetBuildError, + PersistentDescriptorSetBuilder, PersistentDescriptorSetBuilderArray, + PersistentDescriptorSetError, PersistentDescriptorSetImg, PersistentDescriptorSetSampler, + StdDescriptorPool, StdDescriptorPoolAlloc, UnsafeDescriptorPool, + UnsafeDescriptorPoolAllocIter, UnsafeDescriptorSet, UnsafeDescriptorSetLayout, }, descriptor::pipeline_layout::{ - EmptyPipelineDesc, PipelineLayout, PipelineLayoutDescPcRange, PipelineLayoutDescUnion, - PipelineLayoutSys, RuntimePipelineDesc, PipelineLayoutCreationError, - PipelineLayoutLimitsError, PipelineLayoutNotSupersetError, RuntimePipelineDescError, - PipelineLayoutDesc, PipelineLayoutPushConstantsCompatible, PipelineLayoutSetsCompatible, - PipelineLayoutSuperset, + EmptyPipelineDesc, PipelineLayout, PipelineLayoutCreationError, PipelineLayoutDesc, + PipelineLayoutDescPcRange, PipelineLayoutDescUnion, PipelineLayoutLimitsError, + PipelineLayoutNotSupersetError, PipelineLayoutPushConstantsCompatible, + PipelineLayoutSetsCompatible, PipelineLayoutSuperset, PipelineLayoutSys, + RuntimePipelineDesc, RuntimePipelineDescError, }, + descriptor::{DescriptorSet, PipelineLayoutAbstract}, device::{ - Device, DeviceExtensions, DeviceOwned, DeviceCreationError, RawDeviceExtensions, Queue, - QueuesIter, + Device, DeviceCreationError, DeviceExtensions, DeviceOwned, Queue, QueuesIter, + RawDeviceExtensions, }, format::{ - ClearValue, Format, FormatTy, AcceptsPixels, ClearValuesTuple, FormatDesc, + AcceptsPixels, ClearValue, ClearValuesTuple, Format, FormatDesc, FormatTy, PossibleCompressedFormatDesc, PossibleDepthFormatDesc, PossibleDepthStencilFormatDesc, PossibleFloatFormatDesc, PossibleFloatOrCompressedFormatDesc, PossibleSintFormatDesc, PossibleStencilFormatDesc, PossibleUintFormatDesc, StrongStorage, }, framebuffer::{ - AttachmentDescription, Framebuffer, FramebufferBuilder, FramebufferSys, - PassDependencyDescription, PassDescription, RenderPass, RenderPassDescAttachments, - RenderPassDescDependencies, RenderPassDescSubpasses, RenderPassSys, Subpass, - FramebufferCreationError, IncompatibleRenderPassAttachmentError, LoadOp, - RenderPassCreationError, StoreOp, SubpassContents, AttachmentsList, FramebufferAbstract, - RenderPassAbstract, RenderPassCompatible, RenderPassDesc, RenderPassDescClearValues, - RenderPassSubpassInterface, - }, - image::{ - AttachmentImage, ImmutableImage, SwapchainImage, - ImageCreationError, ImageAccess, ImageInner, ImageViewAccess, ImageUsage, StorageImage, - ImageDimensions, ImageLayout, MipmapsCount, - }, - image::immutable::{ - ImmutableImageInitialization, + AttachmentDescription, AttachmentsList, Framebuffer, FramebufferAbstract, + FramebufferBuilder, FramebufferCreationError, FramebufferSys, + IncompatibleRenderPassAttachmentError, LoadOp, PassDependencyDescription, PassDescription, + RenderPass, RenderPassAbstract, RenderPassCompatible, RenderPassCreationError, + RenderPassDesc, RenderPassDescAttachments, RenderPassDescClearValues, + RenderPassDescDependencies, RenderPassDescSubpasses, RenderPassSubpassInterface, + RenderPassSys, StoreOp, Subpass, SubpassContents, }, + image::immutable::ImmutableImageInitialization, image::traits::{ - ImageAccessFromUndefinedLayout, AttachmentImageView, ImageClearValue, ImageContent, - }, - instance::{ - ApplicationInfo, Instance, InstanceExtensions, Limits, PhysicalDevice, PhysicalDevicesIter, - QueueFamiliesIter, QueueFamily, RawInstanceExtensions, Version, InstanceCreationError, - PhysicalDeviceType, - }, - pipeline::{ - ComputePipeline, ComputePipelineSys, GraphicsPipeline, GraphicsPipelineBuilder, - GraphicsPipelineSys, ComputePipelineCreationError, GraphicsPipelineCreationError, - ComputePipelineAbstract, GraphicsPipelineAbstract, + AttachmentImageView, ImageAccessFromUndefinedLayout, ImageClearValue, ImageContent, }, - pipeline::blend::{ - AttachmentBlend, Blend, AttachmentsBlend, BlendFactor, BlendOp, LogicOp, + image::{ + AttachmentImage, ImageAccess, ImageCreationError, ImageDimensions, ImageInner, ImageLayout, + ImageUsage, ImageViewAccess, ImmutableImage, MipmapsCount, StorageImage, SwapchainImage, }, - pipeline::depth_stencil::{ - DepthStencil, Stencil, DepthBounds, StencilOp, + instance::{ + ApplicationInfo, Instance, InstanceCreationError, InstanceExtensions, Limits, + PhysicalDevice, PhysicalDeviceType, PhysicalDevicesIter, QueueFamiliesIter, QueueFamily, + RawInstanceExtensions, Version, }, + pipeline::blend::{AttachmentBlend, AttachmentsBlend, Blend, BlendFactor, BlendOp, LogicOp}, + pipeline::depth_stencil::{DepthBounds, DepthStencil, Stencil, StencilOp}, pipeline::vertex::{ - AttributeInfo, BufferlessDefinition, BufferlessVertices, OneVertexOneInstanceDefinition, - SingleBufferDefinition, SingleInstanceBufferDefinition, TwoBuffersDefinition, - VertexMemberInfo, IncompatibleVertexDefinitionError, VertexMemberTy, Vertex, - VertexDefinition, VertexMember, VertexSource, + AttributeInfo, BufferlessDefinition, BufferlessVertices, IncompatibleVertexDefinitionError, + OneVertexOneInstanceDefinition, SingleBufferDefinition, SingleInstanceBufferDefinition, + TwoBuffersDefinition, Vertex, VertexDefinition, VertexMember, VertexMemberInfo, + VertexMemberTy, VertexSource, }, - pipeline::viewport::{ - Scissor, Viewport, ViewportsState, + pipeline::viewport::{Scissor, Viewport, ViewportsState}, + pipeline::{ + ComputePipeline, ComputePipelineAbstract, ComputePipelineCreationError, ComputePipelineSys, + GraphicsPipeline, GraphicsPipelineAbstract, GraphicsPipelineBuilder, + GraphicsPipelineCreationError, GraphicsPipelineSys, }, query::{ - OcclusionQueriesPool, QueryPipelineStatisticFlags, UnsafeQueriesRange, UnsafeQuery, - UnsafeQueryPool, QueryPoolCreationError, QueryType, + OcclusionQueriesPool, QueryPipelineStatisticFlags, QueryPoolCreationError, QueryType, + UnsafeQueriesRange, UnsafeQuery, UnsafeQueryPool, }, sampler::{ Compare as DepthStencilCompare, Sampler, SamplerAddressMode, SamplerCreationError, UnnormalizedSamplerAddressMode, }, - swapchain::{ - Surface, Swapchain, SwapchainAcquireFuture, SwapchainCreationError, - }, + swapchain::{Surface, Swapchain, SwapchainAcquireFuture, SwapchainCreationError}, sync::{ - Fence, FenceSignalFuture, JoinFuture, NowFuture, Semaphore, SemaphoreSignalFuture, - GpuFuture, + Fence, FenceSignalFuture, GpuFuture, JoinFuture, NowFuture, Semaphore, + SemaphoreSignalFuture, }, }; pub use vulkano_shaders as shaders; pub use vulkano_win as win; use crate::vk; -use crate::vk::instance::debug::{DebugCallback, DebugCallbackCreationError, Message, MessageTypes}; +use crate::vk::instance::debug::{ + DebugCallback, DebugCallbackCreationError, Message, MessageTypes, +}; use crate::vk::instance::loader::{FunctionPointers, Loader}; use std::borrow::Cow; use std::ops::{self, Range}; @@ -332,7 +318,9 @@ impl InstanceBuilder { /// /// Unlike the `extensions` method, this does not disable pre-existing extensions. pub fn add_extensions(mut self, ext: InstanceExtensions) -> Self { - self.extensions = self.extensions.take() + self.extensions = self + .extensions + .take() .map(|mut e| { // TODO: Remove this when `InstanceExtensions::union` gets merged. e.khr_surface |= ext.khr_surface; @@ -376,10 +364,7 @@ impl InstanceBuilder { } /// Add custom vulkan loader - pub fn add_loader( - mut self, - loader: FunctionPointers>, - ) -> Self { + pub fn add_loader(mut self, loader: FunctionPointers>) -> Self { self.loader = Some(loader); self } @@ -647,37 +632,37 @@ pub fn required_windowing_extensions() -> InstanceExtensions { /// Whether or not the format is sRGB. pub fn format_is_srgb(format: Format) -> bool { - use vk::format::Format::*; + use crate::vk::format::Format::*; match format { - R8Srgb | - R8G8Srgb | - R8G8B8Srgb | - B8G8R8Srgb | - R8G8B8A8Srgb | - B8G8R8A8Srgb | - A8B8G8R8SrgbPack32 | - BC1_RGBSrgbBlock | - BC1_RGBASrgbBlock | - BC2SrgbBlock | - BC3SrgbBlock | - BC7SrgbBlock | - ETC2_R8G8B8SrgbBlock | - ETC2_R8G8B8A1SrgbBlock | - ETC2_R8G8B8A8SrgbBlock | - ASTC_4x4SrgbBlock | - ASTC_5x4SrgbBlock | - ASTC_5x5SrgbBlock | - ASTC_6x5SrgbBlock | - ASTC_6x6SrgbBlock | - ASTC_8x5SrgbBlock | - ASTC_8x6SrgbBlock | - ASTC_8x8SrgbBlock | - ASTC_10x5SrgbBlock | - ASTC_10x6SrgbBlock | - ASTC_10x8SrgbBlock | - ASTC_10x10SrgbBlock | - ASTC_12x10SrgbBlock | - ASTC_12x12SrgbBlock => true, + R8Srgb + | R8G8Srgb + | R8G8B8Srgb + | B8G8R8Srgb + | R8G8B8A8Srgb + | B8G8R8A8Srgb + | A8B8G8R8SrgbPack32 + | BC1_RGBSrgbBlock + | BC1_RGBASrgbBlock + | BC2SrgbBlock + | BC3SrgbBlock + | BC7SrgbBlock + | ETC2_R8G8B8SrgbBlock + | ETC2_R8G8B8A1SrgbBlock + | ETC2_R8G8B8A8SrgbBlock + | ASTC_4x4SrgbBlock + | ASTC_5x4SrgbBlock + | ASTC_5x5SrgbBlock + | ASTC_6x5SrgbBlock + | ASTC_6x6SrgbBlock + | ASTC_8x5SrgbBlock + | ASTC_8x6SrgbBlock + | ASTC_8x8SrgbBlock + | ASTC_10x5SrgbBlock + | ASTC_10x6SrgbBlock + | ASTC_10x8SrgbBlock + | ASTC_10x10SrgbBlock + | ASTC_12x10SrgbBlock + | ASTC_12x12SrgbBlock => true, _ => false, } } @@ -708,26 +693,29 @@ pub fn check_moltenvk( let path = match moltenvk_deps::check_or_install(settings) { Err(moltenvk_deps::Error::ResetEnvVars(p)) => Some(p), Err(moltenvk_deps::Error::NonDefaultDir) => None, - Err(moltenvk_deps::Error::ChoseNotToInstall) => panic!("Moltenvk is required for Nannou on MacOS"), + Err(moltenvk_deps::Error::ChoseNotToInstall) => { + panic!("Moltenvk is required for Nannou on MacOS") + } Err(e) => panic!("Moltenvk installation failed {:?}", e), Ok(p) => Some(p), }; - let loader = path.map(|p| { - unsafe { DynamicLibraryLoader::new(p) } - }); + let loader = path.map(|p| unsafe { DynamicLibraryLoader::new(p) }); match loader { Some(Ok(l)) => { - let loader: FunctionPointers> = FunctionPointers::new(Box::new(l)); + let loader: FunctionPointers> = + FunctionPointers::new(Box::new(l)); let required_extensions = required_extensions_with_loader(&loader); - vulkan_builder.extensions(required_extensions).add_loader(loader) - }, + vulkan_builder + .extensions(required_extensions) + .add_loader(loader) + } _ => vulkan_builder.extensions(required_windowing_extensions()), } } -pub fn required_extensions_with_loader(ptrs: &FunctionPointers) - -> InstanceExtensions - where L: Loader +pub fn required_extensions_with_loader(ptrs: &FunctionPointers) -> InstanceExtensions +where + L: Loader, { let ideal = InstanceExtensions { khr_surface: true, diff --git a/src/window.rs b/src/window.rs index 147ea5f36..849f31c8c 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1,26 +1,31 @@ //! The nannou [**Window**](./struct.Window.html) API. Create a new window via `.app.new_window()`. //! This produces a [**Builder**](./struct.Builder.html) which can be used to build a window. -use app::LoopMode; -use event::{Key, MouseButton, MouseScrollDelta, TouchEvent, TouchPhase, TouchpadPressure, WindowEvent}; -use frame::{self, Frame, RawFrame}; -use geom; -use geom::{Point2, Vector2}; +use crate::app::LoopMode; +use crate::event::{ + Key, MouseButton, MouseScrollDelta, TouchEvent, TouchPhase, TouchpadPressure, WindowEvent, +}; +use crate::frame::{self, Frame, RawFrame}; +use crate::geom; +use crate::geom::{Point2, Vector2}; +use crate::vk::{self, win::VkSurfaceBuild, VulkanObject}; +use crate::App; use std::any::Any; -use std::{cmp, env, fmt, ops}; use std::error::Error as StdError; use std::path::PathBuf; -use std::sync::{Arc, Mutex}; use std::sync::atomic::AtomicBool; -use vk::{self, VulkanObject, win::VkSurfaceBuild}; -use winit::{self, MonitorId, MouseCursor}; +use std::sync::{Arc, Mutex}; +use std::{cmp, env, fmt, ops}; use winit::dpi::LogicalSize; -use App; +use winit::{self, MonitorId, MouseCursor}; pub use winit::WindowId as Id; /// The default dimensions used for a window in the case that none are specified. -pub const DEFAULT_DIMENSIONS: LogicalSize = LogicalSize { width: 1024.0, height: 768.0 }; +pub const DEFAULT_DIMENSIONS: LogicalSize = LogicalSize { + width: 1024.0, + height: 768.0, +}; /// For building an OpenGL window. /// @@ -154,7 +159,7 @@ macro_rules! fn_any { // A handle to a function that can be stored without requiring a type param. #[derive(Clone)] pub(crate) struct $TFnAny { - fn_ptr: Arc + fn_ptr: Arc, } impl $TFnAny { @@ -166,7 +171,7 @@ macro_rules! fn_any { let fn_ptr = Arc::new(fn_ptr) as Arc; $TFnAny { fn_ptr } } - + // Retrieve the view function pointer from the `$TFnAny`. pub fn to_fn_ptr(&self) -> Option<&$TFn> where @@ -323,8 +328,9 @@ impl SwapchainFramebuffers { } // If the dimensions for the current framebuffer do not match, recreate it. - let old_rp = vk::RenderPassAbstract::inner(&self.framebuffers[frame.swapchain_image_index()]) - .internal_object(); + let old_rp = + vk::RenderPassAbstract::inner(&self.framebuffers[frame.swapchain_image_index()]) + .internal_object(); let new_rp = render_pass.inner().internal_object(); if !just_created && (frame.swapchain_image_is_new() || old_rp != new_rp) { let fb = &mut self.framebuffers[frame.swapchain_image_index()]; @@ -488,13 +494,17 @@ impl SwapchainBuilder { where S: Into, { - let capabilities = surface.capabilities(device.physical_device()) + let capabilities = surface + .capabilities(device.physical_device()) .expect("failed to retrieve surface capabilities"); let dimensions = capabilities .current_extent .or(fallback_dimensions) - .unwrap_or([DEFAULT_DIMENSIONS.width as _, DEFAULT_DIMENSIONS.height as _]); + .unwrap_or([ + DEFAULT_DIMENSIONS.width as _, + DEFAULT_DIMENSIONS.height as _, + ]); // Retrieve the format. let format = match self.format { @@ -537,12 +547,14 @@ impl SwapchainBuilder { None => match capabilities.supported_composite_alpha.opaque { true => Self::DEFAULT_COMPOSITE_ALPHA, false => return Err(vk::SwapchainCreationError::UnsupportedCompositeAlpha), - } + }, }; let layers = self.layers.unwrap_or(Self::DEFAULT_LAYERS); let clipped = self.clipped.unwrap_or(Self::DEFAULT_CLIPPED); - let surface_transform = self.surface_transform.unwrap_or(Self::DEFAULT_SURFACE_TRANSFORM); + let surface_transform = self + .surface_transform + .unwrap_or(Self::DEFAULT_SURFACE_TRANSFORM); Swapchain::new( device, @@ -576,23 +588,19 @@ pub fn preferred_present_mode_and_image_count( (Some(pm), Some(ic)) => (pm, ic), (None, _) => match *loop_mode { LoopMode::RefreshSync { .. } => { - let image_count = image_count.unwrap_or_else(|| { - cmp::max(min_image_count, 2) - }); + let image_count = image_count.unwrap_or_else(|| cmp::max(min_image_count, 2)); (vk::swapchain::PresentMode::Fifo, image_count) } LoopMode::Wait { .. } | LoopMode::Rate { .. } => { if supported_present_modes.mailbox { - let image_count = image_count - .unwrap_or_else(|| cmp::max(min_image_count, 3)); + let image_count = image_count.unwrap_or_else(|| cmp::max(min_image_count, 3)); (vk::swapchain::PresentMode::Mailbox, image_count) } else { - let image_count = image_count - .unwrap_or_else(|| cmp::max(min_image_count, 2)); + let image_count = image_count.unwrap_or_else(|| cmp::max(min_image_count, 2)); (vk::swapchain::PresentMode::Fifo, image_count) } } - } + }, (Some(present_mode), None) => { let image_count = match present_mode { vk::swapchain::PresentMode::Immediate => min_image_count, @@ -959,11 +967,15 @@ impl<'app> Builder<'app> { // Retrieve dimensions to use as a fallback in case vulkano swapchain capabilities // `current_extent` is `None`. This happens when the window size is determined by the size // of the swapchain. - let initial_swapchain_dimensions = window.window.dimensions + let initial_swapchain_dimensions = window + .window + .dimensions .or_else(|| { - window.window.fullscreen.as_ref().map(|monitor| { - monitor.get_dimensions().to_logical(1.0) - }) + window + .window + .fullscreen + .as_ref() + .map(|monitor| monitor.get_dimensions().to_logical(1.0)) }) .unwrap_or_else(|| { let mut dim = DEFAULT_DIMENSIONS; @@ -998,7 +1010,8 @@ impl<'app> Builder<'app> { .unwrap_or_else(|| unimplemented!()); // Select the queue family to use. Default to the first graphics-supporting queue. - let queue_family = physical_device.queue_families() + let queue_family = physical_device + .queue_families() .find(|&q| q.supports_graphics() && surface.is_supported(q).unwrap_or(false)) .unwrap_or_else(|| unimplemented!("couldn't find a graphical queue family")); @@ -1006,8 +1019,8 @@ impl<'app> Builder<'app> { let queue_priority = 0.5; // The required device extensions. - let mut device_ext = vk_device_extensions - .unwrap_or_else(vk::DeviceExtensions::none); + let mut device_ext = + vk_device_extensions.unwrap_or_else(vk::DeviceExtensions::none); device_ext.khr_swapchain = true; // Enable all supported device features. @@ -1035,8 +1048,10 @@ impl<'app> Builder<'app> { // Build the swapchain used for displaying the window contents. let (swapchain, images) = { // Set the dimensions of the swapchain to that of the surface. - let fallback_dimensions = - [initial_swapchain_dimensions.width as _, initial_swapchain_dimensions.height as _]; + let fallback_dimensions = [ + initial_swapchain_dimensions.width as _, + initial_swapchain_dimensions.height as _, + ]; swapchain_builder.build( queue.device().clone(), @@ -1265,7 +1280,8 @@ impl Window { /// /// This is the same as dividing the result of `inner_size_pixels()` by `hidpi_factor()`. pub fn inner_size_points(&self) -> (geom::scalar::Default, geom::scalar::Default) { - let size = self.surface + let size = self + .surface .window() .get_inner_size() .expect(Self::NO_LONGER_EXISTS); @@ -1296,7 +1312,8 @@ impl Window { /// /// This is the same as dividing the result of `outer_size_pixels()` by `hidpi_factor()`. pub fn outer_size_points(&self) -> (f32, f32) { - let size = self.surface + let size = self + .surface .window() .get_outer_size() .expect(Self::NO_LONGER_EXISTS); @@ -1525,8 +1542,9 @@ impl StdError for BuildError { BuildError::SwapchainCreation(ref err) => err.description(), BuildError::SwapchainCapabilities(ref err) => err.description(), BuildError::RenderDataCreation(ref err) => err.description(), - BuildError::SurfaceDoesNotSupportCompositeAlphaOpaque => - "`CompositeAlpha::Opaque` not supported by window surface", + BuildError::SurfaceDoesNotSupportCompositeAlphaOpaque => { + "`CompositeAlpha::Opaque` not supported by window surface" + } } } } diff --git a/tests/geom_tests.rs b/tests/geom_tests.rs index 3e72123ea..623cebbcd 100644 --- a/tests/geom_tests.rs +++ b/tests/geom_tests.rs @@ -1,5 +1,3 @@ -extern crate nannou; - use nannou::prelude::*; #[test] diff --git a/tests/run_all_examples.rs b/tests/run_all_examples.rs index 0462e70a9..edbba8d5d 100644 --- a/tests/run_all_examples.rs +++ b/tests/run_all_examples.rs @@ -6,14 +6,20 @@ fn test_run_all_examples() { // Read the nannou cargo manifest to a `toml::Value`. let manifest_dir = env!("CARGO_MANIFEST_DIR"); - let manifest_path = std::path::Path::new(manifest_dir).join("Cargo").with_extension("toml"); + let manifest_path = std::path::Path::new(manifest_dir) + .join("Cargo") + .with_extension("toml"); let bytes = std::fs::read(&manifest_path).unwrap(); let toml: toml::Value = toml::from_slice(&bytes).unwrap(); // Find the `examples` table within the `toml::Value` to find all example names. - let examples = toml["example"].as_array().expect("failed to retrieve example array"); + let examples = toml["example"] + .as_array() + .expect("failed to retrieve example array"); for example in examples { - let name = example["name"].as_str().expect("failed to retrieve example name"); + let name = example["name"] + .as_str() + .expect("failed to retrieve example name"); // For each example, invoke a cargo sub-process to run the example. let mut child = std::process::Command::new("cargo") @@ -28,7 +34,9 @@ fn test_run_all_examples() { // Kill the example and retrieve any output. child.kill().ok(); - let output = child.wait_with_output().expect("failed to wait for child process"); + let output = child + .wait_with_output() + .expect("failed to wait for child process"); // If the example wrote to `stderr` it must have failed. if !output.stderr.is_empty() {