Язык программирования джава скрипт

Простые формы

Язык моделирования виртуальной реальности vrml - формат файлов для описания интерактивных трехмерных обьектов. Используется в интернете Интранет сетях и локальных приложениях. Это универсальный формат интеграции трехмерной графики и мультимедиа. VRML это развитый декларативный язык позволяющий описать объекты и отношения создаваемой 3д сцены между ними.

Структура вр файла

Файл начинается со строки заголовка #vrml v2.0 utf8

Эта строка сообщает браузеру врмл cartona3d, что это врмл файл. Версия два и используемая кодировка. # - строка комментария начинается с Шарпа.

3д сцена описывается при помощи иерархического графа сцены состоящего из узлов(nodes). Узлы бывают разных типов: геометрические примитивы, внешний вид объектов, узлы звука и свойств, группируются узлы. Внутри узлов находятся поля определяющие свойства создаваемого объекта

Group {children [] }

Group- группирующий узел.

В фигурных скобках записываются поля.

В врмл различаются строчные и прописные буквы, название узлов начинается с большой буквы, название полей с маленькой.

Пример геометрический узел

Shape{

appername Appername{

material Material { }

}

geometry Sphere{}

}

У поля геометрия есть: box, cone, cylinder.

Вариант 13.

 

 

11.02

Базовые узлы

Преобразование в языке врмл.

Система координат

Все расстояния в врмл измеряются в метрах. Если мы создаём 3д сцену, связанную с другими сценами, необходимо придерживаться одинакового масштаба

(Рис.1 ось координат)

Вращение осуществляется по правилу правой руки. Если смотреть с положительного конца оси вращения, то вращение в плоскости перпендикулярной оси выполняется против часовой стрелки, углы измеряются в радианах.

Преобразование:

В языке врмл существует три типа преобразований(transforms):

  1. Перемещение(translations)
  2. Вращение (rotations)
  3. Масштабирование(scale)

Узел transform может содержать все преобразования или только некоторые.

Преобразование, описываемое конкретным узлом transform относится к геометрическим узлам потомкам данного узла. Это являетесь называется вложенностью(nesting). Внутри одного узла трансформ преобразование выполняется в заданном порядке:

  1. Scale
  2. Rotation
  3. Translation

Перемещение и масштабирование:

Оба преобразования имеют три аргумента(х,у,z)

Перемещение сдвигает центр объекта на х по ОХ, на у по ОУ, z по OZ.

Масштабирование умножает размер объекта на заданные значения по соответствующим осям.

Перемещение на 0 в любом направлении не перемещает объект по этой оси.

Масштабирование с коэффициентом 1 не изменяет объект. Все коэффициенты масштабирования должны быть больше 0.

Пример 1.

Получить эллипсоид вращения с большей полуосью в два раза большей, чем малая полуось. Для этого необходимо растянуть сферу в два раза по оси ОХ.

Масштабирование выполняется относительно начала координат.

 

#vrml v2.0 utf8

Transform{

Scale 2 1 1

Children [

Shape {

appearance Appearance {

material Material{}

}

geometry Sphere{}

}

]

}

 

Вращение

Это преобразование получает 4 аргумента..

Первые 3 это координаты оси вращения (задаётся через вектор), 4 параметр это угол в радианах.

Пример 2.

Повернуть геометрический объект на 45 градусов, вокруг ОХ.

Длина вектора, определяющего ось вращения, должна быть не нулевой.

 

#vrml v2.0 utf8

Transform{

rotate 1 0 0 0.78

children [

USE Fbox. //это как переменная//

]

}

 

Узел цилиндр (cylinder)

Размеры стандартного цилиндра -1..+1 по всем осям. Высота - 2, радиус -1. Ось цилиндра параллельна вертикальной оси. Для этого узла имеются поля:

Side- бок

Top- верх

Bottom- низ

Их значение тру/фолз. Если поле фолз, то соответствующая поверхность не отображается.

Пример 3.

Получаем трубу длиной 5 и радиусом 0.5.

#vrml v2.0 utf8

Transform{

translation 0 0 0

rotate 0 0 1 -1.57

scale 1 1 1

children [

Shape{

appearance Appearance {

material Material {}

}

geometry Cylinder {

radius 0.5

height 5

top false

Bottom false

}

}

]

}

 

Узел конус(cone)

Конус похож на цилиндр, но вместо поля радиус имеет поле bottomRadius, отсутствует поле top. Стандартный размер высота - 2, радиус основания 1.

Пример 4.

Создать конус высотой 10, радиус основания - 2

 

#vrml v2.0 utf8

Shape{

appearance Appearance {

material Material {}

}

geometry Cone {

bottomRadius 2

height 10

bottom false

}

}

 

 

Пример из методы:

Космическая станция.

 

Потом назначаем размер

 

25.02

 

События:

Все узлы имеют поля, также большинство узлов содержат события. События бывают двух типов:

  1. EventIn - входящее собитие. Принимают и обрабатывают информацию.
  2. EventOut - исходящее. Отсылают информацию.

Каждое событие имеет ассоциированный с ним тип данных. Некоторые узлы содержат поля, которые описывается как exposed(открытое).

Это означает, что для этого поля имеется два события:

1. Set_fieldname - устанавливает значение поля.

2. fieldname_changed - сообщает об изменении поля

Srt_ и _change можно опустить

Если поле не определено как exposed, то его значение не может быть изменено с помощью событий.

 

Маршруты:

Для получения пользы от событий их необходимо связывать между собой. Для этого используют маршрутизацию(route).

Пример:

Для связывания исходящего события TouchTime одного узла и входящего события StartTime другого узла, например для запуска сигнала при щелчке мыши необходимо создать маршрут

 

ROUTE MySensor.TouchTime TO MySound.StartTime

Когда по датчику щелкает мышкой, раздается сигнал.

При этом каждому из узлов нужно дать индивидуальное имя с помощью конструкции DEF

 

DEF MySensor TouchSensor {}

DEF MySound Sound {}

 

Сферический датчик

Относится к датчикам буксировки.

Это означает, что их можно перетаскивать мышью в разных положениях.

 

SphereSensor {

exposeField SFBool autoOffset TRUE

exposeField SFBool enable TRUE

exposeField SFRotation offset 0 1 0 0

eventOut SFBool is active

eventOut SFRotation rotation_changed

eventOut SFVec3t trackPoint_chamged

}

 

Позволяет вращать объект вокруг центральной точки сенсора. Он улавливает щелчки мыши по геометрическому узлу, который является потомком родительского узла. Затем пользователь может вращать этот тгеометрический узел путем перетаскивания сенсора. Сенсор можно использовать в двух видах, это зависит от значения поля autoOffset. Если это поле true - вращение происходит между точками входа и выхода курсора из геометрии сенсора, т.е. исходной позицией нового вращения, будет последняя позиция предыдущего. Если false - для каждого нового вращения будет восстановлено вращение =0. Поле truckPoint_changed отражает позицию буксировки на поверхности виртуальной сферы вращения, те текущий угол поворота.

rotation_changed - определяет факт изменения поворота.

Пример 2.

#vrml v2.0 utf8

Group {

 children [

DEF SENSOR 1 SphereSensor{

exposeField SFBool autoOffset False}

DEF TRAN1 Transform{

Children[

Shape{

appearance Appearance {

texture ImageTexture {

URL "earth.gif"

}

material Material {

diffuse Colorado 1.0 1.0 1.0

}

}

geometry Sphere{

radius 1.5

} } ] } ] }

Route SENSOR1. rotation_changed TO TRAN1.rotation

 

Плоский датчик

Это сенсор, может перемещаться мышью параллельно некоторой плоскости. ОХУ z=0.

Синтаксис:

PlaneSensor {

exposeField SFBool autoOffset TRUE

exposeField SFBool enable TRUE

eventOut SFBool is active

exposeField SFVec2t maxPosition -1 -1

exposeField SFVec2t minPosition 0 0

exposeField SFVec2t offset 0 0 0

eventOut SFVec3f track_Point_changed

eventOut SFVec3f translation_changed

}

 

Min и max Position ограничивают движение сенсора по заданному направдению х у. Хранится линейный вектор vec2f./*какой-то текст*/ Сенсор не перемещается вдоль данной оси. если минимум больше максимума, тогда сенсор не ограничен по данной оси.

 

Пример 3

 

Задача:

Есть куб и конус, сделать два датчика вращения и и вращать их отдельно.

Задача 2

Перемещение форм мышью. На польском и есть кубики, и нужно двигаться по плоскости.

 

 

Язык программирования джава скрипт

Ргр. - построение графика функции средствами джава скрипт и врмл(элементы графика).

Язык джава скрипт в отличие от джава апплетов, загружаемых отдельно от хтмл документов. Программы на джава скрипт располагаются непосредственно в хтмл документах. При этом используется следующий синтаксис.

<Script language='javascript'>

Скрипт на джава скрипт

</Script>

<Head> эта секция загружается первая. Это гарантирует, что функция вызываемая пользователем через хтмл интерфейс из секции body.

Пример:

 

 

Этот Язык программирования предназначенный для расширения функциональности хтмл документов.

Он поддерживает переменные, функции, операторы передачи управления, обладает некоторыми свойствами ООП.

К встроенным в браузер обьектам, управлять их атрибутами, вызывать методы этих объектов, управлять джава апплетами.

 

Функции:

 

Под функцией подразумевают поименованный фрагмент кода.

Function someFunction() {}

Функция имеет право уникальное имя и ее код записывается в фигурных скобках.

Функциям дают имена, подчёркивающие характер выполняемых действий

 

Переменные

Означают некоторую величину, которую может получить значение.

Var X= 1;. X= 'str';

 

\R -. Возврат каретки

\N - новая строка

\T - табуляция

Имена переменных и функций должны начинаться с букв A, B, Z…. a, b … z или нижнего подчёркивания. Далее идут буквы или цифры.

 

Пример 2. Вывод на экран.

 

Существует некоторый объект документ, представляющий всю хтмл страницу. Метод write имеет один аргумент - информацию, которую нужно вывести.

 

 

Результат:

 

 

Л р 1. Простые формы. Сложение.

Программа сложение производит сложение двух чисел и интерфейс пользователя имеет след. Вид.

В виде хтмл страницы:

 

Программный код:

 

 

Задача:

  1. Файл lab12.html - от сдачи сьроительно монтажных работ по объекту. Прибыль вычисляется по формуле: p=s+k-c, p - прибыль, s- сметная стоимость, к- компенсация заказчика, с - себестоимсоть

Интерфейс содержит текстовые поля для всех переменных. Кнопку, и окно результата.

Решение:

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: