Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

if (arguments.length == 0 || !graph.getContext) return;

// Получить объект "контекста" для элемента <canvas>,

// который определяет набор методов рисования

var g = graph.getContext("2d"); // Рисование выполняется с помощью этого объекта

var width = graph.width, height = graph.height; // Получить размер холста

//
Следующие функции преобразуют количество месячных платежей

// и денежные суммы в пикселы

function paymentToX(n) { return n * width/payments; }

function amountToY(a) { return height-(a*height/(monthly*payments*1.05));}

// Платежи - прямая линия из точки (0,0) в точку (payments,monthly*payments)

g.moveTo(paymentToX(0), amountToY(0)); // Из нижнего левого угла

g.lineTo(paymentToX(payments), // В правый верхний

amountToY(monthly*payments));

g.lineTo(paymentToX(payments), amountToY(0)); // В правый нижний

g.closePath; // И обратно в начало

g.fillStyle = "#f88"; // Светло-красный

g.fill; // Залить треугольник

g.font = "bold 12px sans-serif"; // Определить шрифт

g.fillText("Total Interest Payments", 20,20); // Вывести текст в легенде

// Кривая накопленной суммы погашения кредита не является линейной

// и вывод ее реализуется немного сложнее

var equity = 0;

g.beginPath; // Новая фигура

g.moveTo(paymentToX(0), amountToY(O)); // из левого нижнего угла

for(var р = 1; р <= payments; р++) {

// Для каждого платежа выяснить долю выплат по процентам

var thisMonthsInterest = (principal-equity)*interest;

equity += (monthly - thisMonthsInterest); // Остаток - погашение кред.

g.lineTo(paymentToX(p),amountToY(equity)); // Линию до этой точки

}

g.lineTo(paymentToX(payments), amountToY(O)); //
Линию до оси X

g.closePath; // И опять в нач. точку

g.fillStyle = "green"; // Зеленый цвет

g.fill; // Залить обл. под кривой

g.fillText("Total Equity", 20,35); // Надпись зеленым цветом

// Повторить цикл, как выше, но нарисовать график остатка по кредиту

var bal = principal;

g.beginPath;

g.moveTo(paymentToX(O),amountToY(bal));

for(var p = 1; p <= payments; p++) {

var thisMonthsInterest = bal*interest;

bal -= (monthly - thisMonthsInterest) //Остаток от погаш. по кредиту

g.lineTo(paymentToX(p),amountToY(bal)); // Линию до этой точки

}

g.LineWidth = 3; //Жирная линия

g.stroke; //Нарисовать кривую графика

g.fillStle="black"; //Черный цвет для текста

g.fillText("Loan Balabce", 20, 50); //Элемент легенды

//Нарисовать отметки лет на оси Х

g.textAling="center"; //Текст меток по центру

var y = amounToY(0); //Координата Y на оси X

for (var year=1;year*12 <= payments; year++) { //Для каждого года

var x=paymentToX(year*12); //Вычислить позицию метки

g.fillRect(x-0.5, y-3, 1, 3); //Нарисовать метку

if (year == 1) g.fillText("Year", x, y-5); // Подписать ось

if (year % 5 == 0 && year*12 !== payments) // Числа через каждые 5 лет

g.fillText(String(year), x, y-5);

}

//Суммы платежей у правой границы

g.textAling="right"; //Текст по правому краю

g.textBaseLine="middle"; //Центрировать по вертикали

Поделиться:
Популярные книги

Третий. Том 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 4

Эпоха Опустошителя. Том X

Павлов Вел
10. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том X

Черный Маг Императора 15

Герда Александр
15. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 15

Древесный маг Орловского княжества 5

Павлов Игорь Васильевич
5. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 5

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

Рассвет русского царства

Грехов Тимофей
1. Новая Русь
Документальная литература:
историческая литература
5.00
рейтинг книги
Рассвет русского царства

Группа крови на рукаве

Вязовский Алексей
1. ГК
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.40
рейтинг книги
Группа крови на рукаве

Неудержимый. Книга XXXVII

Боярский Андрей
37. Неудержимый
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXXVII

Неучтенный элемент. Том 11

NikL
11. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 11

Вторая жизнь майора. Цикл

Сухинин Владимир Александрович
Вторая жизнь майора
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Вторая жизнь майора. Цикл

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Вернувшийся: Первые шаги. Том II

Vector
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Первые шаги. Том II

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Отморозок 5

Поповский Андрей Владимирович
5. Отморозок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Отморозок 5