Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2017-09-30 | 820 |
5.00
из
|
Заказать работу |
|
|
Рассмотрим задачу организации движения видимого элемента по произвольной кривой, заданной выражением с одной переменной. Функция движения в качестве параметров будет иметь два выражения, которые описывают изменения вертикальной и горизонтальной координат элемента. Эти выражения будут содержать одну переменную, которую мы обозначим через х – строчной латинской буквой. Переменную х можно интерпретировать как независимый параметр движения (например, время). С помощью встроенной функции eval() можно вычислить значения этих выражений при конкретном значении переменной х и присвоить их параметрам left и top таблицы стилей перемещаемого элемента. Функция (пусть это будет move()), которая все это выполняет, передается в качестве первого параметра методу setInterval(), который периодически вызывает ее через заданный интервал времени.
Функция инициализации движения curvemove() принимает три строковых параметра (ID перемещаемого элемента, выражение для вертикальной координаты и выражение для горизонтальной координаты) и один числовой параметр (период времени, через который координаты элемента пересчитываются). Ниже приводятся определения функций curvemove() и move():
function curvemove(xid, уехрr, xexpr, ztime) {
/* Движение по произвольной кривой.*/
if (!xid) return null
if (!yexpr) yexpr = "x"
if (!xexpr) xexpr = "x"
if (!ztime) ztime = 100 // интервал времени, мс
x = 0 /* глобальная переменная, входящая в выражения уехрr и хехрr */
setInterval("move('"+xid+" ', + уехрг + " "+ xexpr +"' ztime)
}
function move(xid, yexpr, xexpr) {
x++
document.all[xid].style.top = eval(yexpr)
document.all[xid].style.left = eval(xexpr)
}
Параметры:
- хid – id движущегося объекта, строка;
- уехрr – выражение для вертикальной координаты;
- хехрr – выражение для горизонтальной координаты;
|
- ztime – интервал времени между вызовами функции move(), мс.
Чтобы сделать переменную х глобальной, не надо использовать ключевое слово var перед первым ее появлением в коде.
Ниже приведен пример HTML документа с движущимся изображением:
<НТМL>
<IMG ID = "myimg" SRC = "pict1.gif" STYLE = "position:absolute">
<SCRIPT>
function curvemove(xid, yexpr, xexpr, ztime) {
// код определения функции
}
function move(xid, yexpr, xexpr) {
// код определения функции
}
Curvemove()'myimg', "100 + 50*Math.sin(0.03*x)", "50 + х", 100)
</SCRIPT>
</HTML>
В этом примере изображение будет перемещаться по синусоиде с 50 пикселов и горизонтальной скоростью 10 пикселов в секунду. Начальные ординаты графического объекта равны 100 и 50 пикселов по вертикали и горизонтали соответственно.
Рисование линий
В JavaScript нет специальных встроенных средств для рисования произвольных линий. Для решения этой задачи ужно вывести на экран изображение размером 1x1 пиксел, залитое цветом, отличающимся от цвета фона. Это изображение следует разместить несколько раз в соответствии с координатами, которые задаются параметрами позиционирования top и left атрибута STYLE тега <IMG>. С помощью сценария можно сформировать строку, содержащую теги <IMG> с необходимыми атрибутами, а затем записать ее в документ методом write().
Рисование прямой линии
Для отображения точки в HTML можно использовать следующий тег:
<IMG SRC = "point.bmp" STYLE = "position:absolute; top:y; left:x">
Здесь point.bmp – имя графического файла, содержащего один пиксел; у, х – числа, указывающие положение графического файла в пикселах. Изображение точки размером 1x1 пиксел можно создать в любом графическом редакторе. Из соображений экономии его лучше всего сохранить в файле формата BMP, а не JPEG или GIF (при малых размерах изображения алгоритмы сжатия неэффективны).
Чтобы задать размеры отображения точки на экране, следует использовать атрибуты WIDTH и HEIGHT (ширина и высота):
<IMG SRC = "point.bmp" STYLE = "position: absolute; top:y; left:x" WIDTH=n HEIGHT=n>
|
Одинаковые значения атрибутов WIDTH и HEIGHT задают представление точки в виде квадрата размером n×n пикселов. При этом точка с исходными размерами 1x1 пиксел просто растягивается. Таким образом, имеется возможность задать отображаемые размеры (масштаб) одной точки, а, следовательно, и определить толщину линии.
Далее следует пример определения функции, которая рисует прямую линию с заданными координатами xl, yl, х2, у2 и толщиной линии n.
Function line(xl, yl, х2, у2, n){
/*xl, yl – начало линии, х2, у2 – конец, n – толщина */
var clinewidth = " WIDTH=" + n + "HEIGHT=" + n /* строка для учета толщины */
var xstr = "" // строка тегов для записи в HTML-документ
var xstr0 = ' <IMG SRC="point.bmp"' + clinewidth + ' STYLE = "positlon:absolute; '
var k = (y2 – yl)/(x2 – xl) // коэффициент наклона линии
var x = xl // начальное значение координаты х
/* Формирование строки, содержащей теги <IMG... >: */
while (x <= х2) {
xstr += xstr9 + 'top:' + (yl + k* (x – xl)) + ': left:1 + x + '
x+ +
// запись в документ
Рисование кривой линии
Функция curve() для рисования кривой принимаtn следующие параметры: имя графического файла с изображением точки (может быть любое изображение), выражение, задающее кривую, координаты начала линии, количество точек линии, толщина линии и длина штриха (если потребуется штриховая линия). Далее следует код функции curve() для рисования кривых.
function curve(pict_file,yexpr, x0, y0, t, n. s){
/* pict_file - имя графического файла
yexpr - выражение с переменной х
х0, у0 - координаты начала кривой
t - количество точек кривой (значений переменной х)
n - толщина линии
s - длина штриха и паузы */
if (!yexpr) return null
if (!pict_file) pict_file = "point.bmp"
if (!s) s = 0
if (!t) t = 0
var clinewidth = ''
if (!n)
clinewidth = 'WIDTH=' + n + 'HEIGHT=' + n
var x
xstrG = '<IMGSRO "' + pict_file + '"'' + clinewidth + STYLE = "position:absolute;top: '
xstr = ""
var i = 0, draw = true
for(x = 0; x < t; x++) {
if (draw)
xstr += xstr0 + (y0 + eval(yexpr)) + '; left:' + (x0 + x)
if (i > s&&s > 0) {
draw =!draw
i = 0
}
i ++
}
document.write (xstr) // запись в документ
Задания к лабораторной работе № 9
Задание 1. Создать программу на JS, позволяющую перетащить мышью область текста и картинку.
Задание 2. Создать программу на JS, организующую движение картинки по прямой линии.
Задание 3. Создать программу на JS, организующую движение картинки по кривой линии и возврат ее в исходное состояние.
Задание 4. Нарисовать график функции, выбрав функцию с помощью радио кнопки (y=x2, y=x3, y=sin(x), y=cos(x)).
Задание 5*. Реализовать выбор цвета графика функции с помощью списка.
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!