Перейти к содержимому

Уроки · 12

Доля от 0 до 1

В уроке “Проценты” мы каждый раз делили процент на 100: x_percent / 100.0. Но процент и так означает “часть от 100” — 60% и есть 60 из 100, то есть 0.6. Это одно и то же число, просто записанное по-другому.

// Было — процент от 0 до 100, с делением на 100:
let x_percent = 60.0;
let x = screen_width() * x_percent / 100.0;
// Так же, но сразу в виде доли от 0 до 1 — без деления:
let x_fraction = 0.6;
let x = screen_width() * x_fraction;

Результат в обоих случаях один и тот же. Просто во втором случае число уже готово к использованию, и не нужно каждый раз писать / 100.0. Именно так — числом от 0 до 1 — в коде обычно и записывают доли, а проценты (от 0 до 100) чаще встречаются только в тексте, для людей.

Меняй значения x и y ниже — от 0 до 1 — и смотри, как кружок занимает то же самое место, что и в прошлом уроке с процентами, только без промежуточного деления в коде:

src/main.rs
use macroquad::prelude::*;
#[macroquad::main("Доля от 0 до 1")]
async fn main() {
loop {
clear_background(BLACK);
// Доля от ширины экрана.
let x = screen_width() * 0.5;
// Доля от высоты экрана.
let y = screen_height() * 0.5;
draw_circle(x, y, 80.0, YELLOW);
next_frame().await;
}
}
  • x и y тут — уже готовая доля от 0 до 1, а не процент. 0.5 соответствует 50%, 0.25 — 25%, и так далее.
  • screen_width() * x сразу даёт координату в пикселях — умножение без лишнего деления на 100.
  • Доля особенно удобна, когда нужно задать позицию внутри чего-то, чей размер заранее неизвестен или может поменяться, — например, круга или окна. Подробнее об этом — в дополнительном уроке «Относительные координаты».