Screen won’t rotate in tablet mode

Translation Transform

Given a vector V and a point P. A vector can be specified by its direction and length. Translation (often a parallel translation) P’ of P by V is the point such that PP’ equals the vector V. In other words, P’ is located at the distance from P equal to the length of V and in the same direction.

P’ exists for any P. Let’s write TV(P) = P’. If P’ = TV(P), then P is the translation of P’ by -V: P = T-V(P’), where -V is the vector of the same length as V, but pointing in the opposite direction. Formally,

  TVT-V = I,

where I is the identity transform. If V is a non-zero vector the for no point TV(P) = P, i.e., a nontrivial translation has no fixed points.

The translation transform TV applies to arbitrary shapes point-by-point. Each point of a given shape S is translated by V, and the collection of these translations is the translated image of S: S’ = TV(S). To determine TV(S) when S is a polygon, suffice it to translate its vertices. This is exactly what has been done in the applet below.

On the other hand, if S’ is known to be a translated image of S, then for any points P and Q in S, PP’ = QQ’. Therefore, the translation that maps S on S’ is uniquely determined by any pair of points P/P’.

In the applet, you can create polygons with a desired number of vertices, drag the vertices one at a time, or drag the polygon as a whole. Vectors of translations can also be dragged. They rotate if dragged near their endpoints, or translate if dragged nearer their midpoint.

What if applet does not run?

The following observations are noteworthy:

  1. Translation preserves the orientation. For example, if a polygon is traversed clockwise, its translated image is likewise traversed clockwise.

  2. Translation is isometry: a translation preserves distances.

  3. Translation preserves angles.

  4. Translation maps parallel lines onto parallel lines and, moreover, a line and its image are also parallel.

  5. Except for the trivial translation by a zero vector, translation have no fixed points. All lines parallel to the vector of a translation are fixed by the translation.

  6. Successive translations result in a translation. Moreover,

      TVTU = TV+U.
  7. The order of translations does not matter: any two translations commute. In fact, for two vectors U and V,

      TUTV = TVTU.

Here is a list of several problems that are solved with the help of translation:

  1. A Property of Rhombi
  2. A Property of the Line IO
  3. Bottles in a Wine Rack
  4. Building a Bridge
  5. Building Bridges
  6. Circles with Equal Collinear Chords
  7. Find a Common Chord of Given Length
  8. Join Circles by Given Segment
  9. Translated Triangles

Geometric Transformations

  • Plane Isometries

  • Plane Isometries As Complex Functions

    • Reflection in Point

    • Reflection in Line

      Geometric Problems by Reflection

    • Translation Transform
    • Product of Rotations

      Rotation Transform

    • Glide Reflection

  • Affine Transformations ()

    • Homothety — an Affine Transform

      Geometric Problems by Homothety

    • What Is Shear Transform?

    • Spiral Similarity

      • Construction of the center of spiral similarility

      • Spiral Similarity and Collinearity

  • Inversion

    • Stereographic Projection and Inversion

  • Projective transformation ()

|Activities|
|Contact|
|Front page|
|Contents|
|Geometry|

Copyright 1996-2018 Alexander Bogomolny

CSS Reference

CSS ReferenceCSS Browser SupportCSS SelectorsCSS FunctionsCSS Reference AuralCSS Web Safe FontsCSS AnimatableCSS UnitsCSS PX-EM ConverterCSS ColorsCSS Color ValuesCSS Default ValuesCSS Entities

CSS Properties

align-content
align-items
align-self
all
animation
animation-delay
animation-direction
animation-duration
animation-fill-mode
animation-iteration-count
animation-name
animation-play-state
animation-timing-function

backface-visibility
background
background-attachment
background-blend-mode
background-clip
background-color
background-image
background-origin
background-position
background-repeat
background-size
border
border-bottom
border-bottom-color
border-bottom-left-radius
border-bottom-right-radius
border-bottom-style
border-bottom-width
border-collapse
border-color
border-image
border-image-outset
border-image-repeat
border-image-slice
border-image-source
border-image-width
border-left
border-left-color
border-left-style
border-left-width
border-radius
border-right
border-right-color
border-right-style
border-right-width
border-spacing
border-style
border-top
border-top-color
border-top-left-radius
border-top-right-radius
border-top-style
border-top-width
border-width
bottom
box-decoration-break
box-shadow
box-sizing
break-after
break-before
break-inside

caption-side
caret-color
@charset
clear
clip
clip-path
color
column-count
column-fill
column-gap
column-rule
column-rule-color
column-rule-style
column-rule-width
column-span
column-width
columns
content
counter-increment
counter-reset
cursor

direction
display
empty-cells
filter
flex
flex-basis
flex-direction
flex-flow
flex-grow
flex-shrink
flex-wrap
float
font
@font-face
font-family
font-feature-settings
font-kerning
font-size
font-size-adjust
font-stretch
font-style
font-variant
font-variant-caps
font-weight

grid
grid-area
grid-auto-columns
grid-auto-flow
grid-auto-rows
grid-column
grid-column-end
grid-column-gap
grid-column-start
grid-gap
grid-row
grid-row-end
grid-row-gap
grid-row-start
grid-template
grid-template-areas
grid-template-columns
grid-template-rows

hanging-punctuation
height
hyphens
@import
isolation
justify-content
@keyframes
left
letter-spacing

line-height
list-style
list-style-image
list-style-position
list-style-type

margin
margin-bottom
margin-left
margin-right
margin-top
max-height
max-width
@media
min-height
min-width
mix-blend-mode

object-fit
object-position
opacity
order
outline
outline-color
outline-offset
outline-style
outline-width
overflow
overflow-x
overflow-y

padding
padding-bottom
padding-left
padding-right
padding-top
page-break-after
page-break-before
page-break-inside
perspective
perspective-origin
pointer-events
position
quotes

resize
right

scroll-behavior

tab-size
table-layout
text-align
text-align-last
text-decoration
text-decoration-color
text-decoration-line
text-decoration-style
text-indent
text-justify
text-overflow
text-shadow
text-transform
top

transform
transform-origin
transform-style
transition
transition-delay
transition-duration
transition-property
transition-timing-function

unicode-bidi
user-select

vertical-align
visibility

white-space
width
word-break
word-spacing
word-wrap
writing-mode

z-index

Комбинация трансформаций

Типично использовать несколько преобразований за раз, к примеру, поворот и масштабирование размера элемента одновременно. В этом случае несколько преобразований могут быть скомбинированы вместе. Для их объединения значения идут списком в свойстве transform один за другим без использования запятых.

Применение нескольких деклараций transform не будет работать, так как каждая декларация перезапишет всё над ним. Поведение в этом случае такое же, как если бы вы установили height для элемента несколько раз.

Демонстрация комбинации транформаций

За каждой трансформацией также стоит матрица, явно определяющая поведение transform. Использование значений rotate, scale, transition и skew обеспечивает простой путь задать эту матрицу. Тем не менее, если вы расположены к математике и предпочитаете глубже погрузиться в преобразования, попробуйте свои силы в использовании значения matrix.

Transform

Из названия свойства понятно, что он отвечает за трансформацию блоков. Имеет большое количество функций и еще большее количество их сочетаний. Эксперементируя, можно даже придумать 3D эффекты с Transform, но эта статья лишь о 2D. в CSS прописывается как transform: property, где property может содержать одно из нижеперечисленных значений:

translateX(10px) – сдвиг по горизонтали
translateY(10px) – сдвиг по вертикали
translate(25px, 30%) – сдвиг по диагонали
scaleX(2) – масштабирование по горизонтали. При этом 1 равен 100%
scaleY(2) – масштабирование по вертикали
scale(.5, 2) – масштабирование как по вертикали, так и по горизонтали
rotate(10deg) – поворот в заданную сторону (значение в градусах). При этом отрицательные значения отвечают за поворот влево, а положительные – вправо
skewX(20deg) – наклон по горизонтали. Значение так же в градусах
skewY(20deg) – наклон по вертикали
skew(5deg, -20deg) – наклон по вертикали и горизонтали
matrix(w, sky, skx, h, mx, my) – задает все вышеописанные свойства в одном, кроме rotate() и skew(). Значения matrix():
w – ширина объекта. 1 равен 100%
h – высота объекта. 1 равен 100%
sky – наклон по вертикали. 0 – без наклона
skx – наклон по горизонтали. 0 – без наклона
mx – сдвиг по горизонтали. 0 – без сдвига
my – сдвиг по вертикали. 0 – без сдвига

Пример в конце статьи.

transform:rotate(x) — вращение объекта

Чтобы вращать элемент существует команда rotate(x). Она позволяет повернуть объект на x градусов по часовой или против часовой стрелке. Значение х нужно указывать в градусах deg

Пример #1. Вращение объекта в html через трансформацию

На странице преобразуется в следующее

Примечание

Свойства:

Нужны для корректной работы в старых версиях браузеров. В следующих примерах мы также будем их писать.

Пример #2. Вращение объекта в html при наведении курсора

Создадим класс kvadrat2 и пропишем для него псевдокласс :hover, в котором и будет прописано вращение и смена цвета на более светлый (с #444 на #888).

На странице преобразуется в следующее

Но это вращение происходит резко и не смотрится «эффектно». Это можно легко исправить сделав сглаживание. В следующем примере будет реализована анимация.

Пример #3. Плавное вращение при наведении курсора (анимация) в html

Для плавного вращения (или другими словами сглаживания) необходимо прописать еще одно свойство transition. Это свойство отвечает за время и эффект сглаживания. В данном примере рассматривается самый простой случай с переходом за 1 секунду с линейной скоростью linear

На странице преобразуется в следующее

Стало гораздо симпатичнее и такая анимация дает множество возможностей для создания эффектов на сайте только за счет CSS.

Декомпозиция матрицы 4×4 на составляющие

В GLM есть расширение, позволяющее провести разделение матрицы на базовые аффинные и неаффинные преобразования. Подробнее об этом рассказано:

  • в вопросе “glm — Decompose mat4 into translation and rotation?” на stackoverflow
  • в документации GLM (glm.g-truc.net)

Расширение подключается заголовком . Использовать его можно следующим образом:

В некоторых версиях GLM в выходной параметр rotation записывается сопряжённый кватернион ориентации тела вместо ожидаемого значения. Исправить эту проблему можно получением кватерниона, сопряжённого сопряжённому, что даст нам исходный кватернион.

Углы Эйлера и кватернионы

В трёхмерном пространстве любую трансформацию поворота можно представить в виде трёх углов Эйлера. Это возможно благодаря теореме Эйлера, согласно которой любой поворот вокруг произвольной оси можно представить как комбинацию трёх углов, последовательно поворачивающих тело вокруг базовых осей Ox, Oy, Oz.

Тройка углов Эйлера и кватернион являются двумя эквивалентными представлениями некоторой трансформации поворота. Этот факт отражён в GLM:

  • конструктор quat, принимающий vec3, формирует кватернион
  • функция проводит обратную операцию — получение углов Эйлера из заданного кватерниона

Другие значения transform

Мы рассмотрели самые основные значения transform. Рассмотрим остальные возможности.

  • none — отсутствие преобразований (по умолчанию включено оно);
  • matrix(x,x,x,x,x,x) — преобразование 2D с помощью матрицы из 6 значений;
  • matrix3d(x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x) — преобразование 3D с помощью матрицы из 16 значений;
  • translate3d(x,y,z) — перемещение 3d (по сравнению с обычным перемещением, здесь добавлена еще третья координата);
  • scale3d(x,y,z) — масштабирование в 3d (по сравнению с обычным масштабированием, здесь добавлена еще третья координата);
  • rotate3d(x,y,z) — вращение в 3d (по сравнению с обычным вращением, здесь добавлена еще третья координата);
  • rotateX(x) — 3d вращение по оси X;
  • rotateY(x) — 3d вращение по оси Y;
  • rotateZ(x) — 3d вращение по оси Z;
  • perspective(n) — перспектива для преобразования 3D элемента;

В JavaScript свойство CSS transform доступно по следующим свойствам:

Возможно, вы зададите вопрос «а зачем вообще использовать transform, когда можно просто изменять данные объекта как нам нужно. Например, изменив размеры объекта?» Разница в том, что свойств transform при трансформации никак не сдвигает другие элементы на странице. В случае же простого изменения размеров объекта это неминуемо приводит к сдвигу соседних объектов вокруг, что, как правило, некрасиво.

Algorithms

Quaternion frame rotation re-references a point specified in R3 by rotating the original frame
of reference according to a specified quaternion:

Lq(u)=q*uq

where q is the quaternion, * represents
conjugation, and u is the point to rotate, specified as a quaternion.

For convenience, the function takes a point in R3 and returns a point in R3. Given a function call with
some arbitrary quaternion, q = a + bi +
cj + dk, and arbitrary coordinate, ,

point = ;
rereferencedPoint = rotateframe(q,point)
  1. Converts point to a quaternion:

    uq=+xi+yj+zk

  2. Normalizes the quaternion, q:

    qn=qa2+b2+c2+d2

  3. Applies the rotation:

    vq=q*uqq

  4. Converts the quaternion output,
    vq, back to R3

Property Values

Value Description Play it
none Defines that there should be no transformation Play it »
matrix(n,n,n,n,n,n) Defines a 2D transformation, using a matrix of six values Play it »
matrix3d
(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)
Defines a 3D transformation, using a 4×4 matrix of 16 values
translate(x,y) Defines a 2D translation Play it »
translate3d(x,y,z) Defines a 3D translation
translateX(x) Defines a translation, using only the value for the X-axis Play it »
translateY(y) Defines a translation, using only the value for the Y-axis Play it »
translateZ(z) Defines a 3D translation, using only the value for the Z-axis
scale(x,y) Defines a 2D scale transformation Play it »
scale3d(x,y,z) Defines a 3D scale transformation
scaleX(x) Defines a scale transformation by giving a value for the X-axis Play it »
scaleY(y) Defines a scale transformation by giving a value for the Y-axis Play it »
scaleZ(z) Defines a 3D scale transformation by giving a value for the Z-axis
rotate(angle) Defines a 2D rotation, the angle is specified in the parameter Play it »
rotate3d(x,y,z,angle) Defines a 3D rotation
rotateX(angle) Defines a 3D rotation along the X-axis Play it »
rotateY(angle) Defines a 3D rotation along the Y-axis Play it »
rotateZ(angle) Defines a 3D rotation along the Z-axis Play it »
skew(x-angle,y-angle) Defines a 2D skew transformation along the X- and the Y-axis Play it »
skewX(angle) Defines a 2D skew transformation along the X-axis Play it »
skewY(angle) Defines a 2D skew transformation along the Y-axis Play it »
perspective(n) Defines a perspective view for a 3D transformed element
initial Sets this property to its default value. Read about initial
inherit Inherits this property from its parent element. Read about inherit

Авиационно-космическое представление ориентации

Ориентация в авиационных терминах задаётся тремя углами:

угол тангажа (англ. pitch, греч. буква θ)

угол крена (англ. roll, греч. буква ϕ)

угол рысканья (англ. yaw, греч. буква ψ)

Авиационные углы имеют огромное преимущество — исходные оси Ox, Oy, Oz фиксированы в мировых координатах (или в координатах диспетчерской станции аэропорта), и ориентация камеры задаётся лишь последовательным применением авиационных углов для получения вектора курса полёта (англ. heading):

  • сначала считаем курс равным орту оси Ox (т.е. вектору )
  • поворачиваем курс на угол рысканья (yaw, ψ) вокруг оси Oy
  • вычисляем нормаль к плоскости, образованной вектором курса и вектором Oy (назовём эту нормаль “right”)
  • поворачиваем курс на угол тангажа (pitch, θ) вокруг “right”
  • вычисляем нормаль к плоскости, образованной вектором курса и вектором “right” (назовём эту нормаль “up”)
  • поворачиваем вектор “up” вокруг вектора курса на угол крена (roll, ϕ)
  • теперь у нас есть вектор курса (heading, или front) и вектор направления вверх (up), и мы можем использовать уже привычную операцию lookAt для получения матрицы поворота

Данный метод проиллюстрирован на изображении:

Также в GLM есть функции для преобразования между yaw, pitch, roll и другими представлениями:

функция из заголовочного файла преобразует углы yaw, pitch, roll в матрицу поворота:

функция из заголовочного файла преобразует матрицу поворота в кватернион; соединив её с предыдущей функцией, получим функцию для преобразования yaw, pitch, roll в кватернион:

backface-visibility

При работе с трёхмерными преобразованиями, элементы время от времени трансформируются таким образом, что их поверхность отворачивается от экрана. Это может быть вызвано установкой значения rotateY(180deg), к примеру. По умолчанию эти элементы показываются с обратной стороны. Так что если вы не желаете видеть эти элементы вообще, установите свойство backface-visibility как hidden, и вы спрячете элемент всякий раз, когда он отворачивается от экрана.

Другим значением для backface-visibility является значение по умолчанию visible, оно всегда показывая элемент, независимо от того, в каком направлении он смотрит.

В демонстрации ниже обратите внимание, что второй блок не отображается, поскольку установлена запись backface-visibility: hidden

Свойство backface-visibility имеет более важное значение при использовании анимации

2D-трансформации элементов

Поддержка браузерами

1. Функции 2D-трансформации transform

Свойство задаёт вид преобразования элемента. Свойство описывается с помощью функций трансформации, которые смещают элемент относительно его текущего положения на странице или изменяют его первоначальные размеры и форму. Не наследуется.

Допустимые значения:

matrix() — любое числоtranslate(), translateX(), translateY() — единицы длины (положительные и отрицательные), %scale(), scaleX(), scaleY() — любое числоrotate() — угол (deg, grad, rad или turn)skew(), skewX(), skewY() — угол (deg, grad, rad)

Функция Описание
none Значение по умолчанию, означает отсутствие трансформации. Также отменяет трансформацию для элемента из группы трансформируемых элементов.
matrix(a, c, b, d, x, y) Смещает элементы и задает способ их трансформации, позволяя объединить несколько функций 2D-трансформаций в одной. В качестве трансформации допустимы поворот, масштабирование, наклон и изменение положения.
Значение a изменяет масштаб по горизонтали. Значение от 0 до 1 уменьшает элемент, больше 1 — увеличивает.
Значение c деформирует (сдвигает) стороны элемента по оси Y, положительное значение — вверх, отрицательное — вниз.
Значение b деформирует (сдвигает) стороны элемента по оси X, положительное значение — влево, отрицательное — вправо.
Значение d изменяет масштаб по вертикали. Значение меньше 1 уменьшает элемент, больше 1 — увеличивает.
Значение x смещает элемент по оси X, положительное — вправо, отрицательное — влево.
Значение y смещает элемент по оси Y, положительное значение — вниз, отрицательное — вверх.
translate(x,y) Сдвигает элемент на новое место, перемещая относительно обычного положения вправо и вниз, используя координаты X и Y, не затрагивая при этом соседние элементы. Если нужно сдвинуть элемент влево или вверх, то нужно использовать отрицательные значения.
translateX(n) Сдвигает элемент относительно его обычного положения по оси X.
translateY(n) Сдвигает элемент относительно его обычного положения по оси Y.
scale(x,y) Масштабирует элементы, делая их больше или меньше. Значения от 0 до 1 уменьшают элемент. Первое значение масштабирует элемент по ширине, второе — по высоте. Отрицательные значения отображают элемент зеркально.
scaleX(n) Функция масштабирует элемент по ширине, делая его шире или уже. Если значение больше единицы, элемент становится шире, если значение находится между единицей и нулем, элемент становится уже. Отрицательные значения отображают элемент зеркально по горизонтали.
scaleY(n) Функция масштабирует элемент по высоте, делая его выше или ниже. Если значение больше единицы, элемент становится выше, если значение находится между единицей и нулем — ниже. Отрицательные значения отображают элемент зеркально по вертикали.
rotate(угол) Поворачивает элементы на заданное количество градусов, отрицательные значения от -1deg до -360deg поворачивают элемент против часовой стрелки, положительные — по часовой стрелке. Значение rotate(720deg) поворачивает элемент на два полных оборота.
skew(x-угол,y-угол) Используется для деформирования (искажения) сторон элемента относительно координатных осей. Если указано одно значение, второе будет определено браузером автоматически.
skewX(угол) Деформирует стороны элемента относительно оси X.
skewY(угол) Деформирует стороны элемента относительно оси Y.
initial Устанавливает значение свойства в значение по умолчанию.
inherit Наследует значение свойства от родительского элемента.

Синтаксис

Наведите курсор мыши на блоки, чтобы посмотреть функции трансформации в действии.

2. Точка трансформации transform-origin

Свойство позволяет сместить центр трансформации, относительно которого происходит изменение положения/размера/формы элемента. Значение по умолчанию — center, или 50% 50%. Задаётся только для трансформированных элементов. Не наследуется.

transform-origin
Значения:
ось Х(left, center, right, длина, %)
ось Y(top, center, bottom, длина, %)
Пара значений, заданная с помощью ключевых слов, единиц длины или процентов определяет, относительно какой части элемента будет происходить трансформация. Значения больше 100% увеличивают область трансформации элемента.
initial Устанавливает значение свойства в значение по умолчанию.
inherit Наследует значение свойства от родительского элемента.

Синтаксис

3. Множественные трансформации

Можно объединить несколько трансформаций одного элемента, перечислив их через пробел в порядке проявления.

div {transform: scale(1.5) rotate(-10deg);}

CSS3-переходы
CSS3-анимация

CSS Properties

align-contentalign-itemsalign-selfallanimationanimation-delayanimation-directionanimation-durationanimation-fill-modeanimation-iteration-countanimation-nameanimation-play-stateanimation-timing-functionbackface-visibilitybackgroundbackground-attachmentbackground-blend-modebackground-clipbackground-colorbackground-imagebackground-originbackground-positionbackground-repeatbackground-sizeborderborder-bottomborder-bottom-colorborder-bottom-left-radiusborder-bottom-right-radiusborder-bottom-styleborder-bottom-widthborder-collapseborder-colorborder-imageborder-image-outsetborder-image-repeatborder-image-sliceborder-image-sourceborder-image-widthborder-leftborder-left-colorborder-left-styleborder-left-widthborder-radiusborder-rightborder-right-colorborder-right-styleborder-right-widthborder-spacingborder-styleborder-topborder-top-colorborder-top-left-radiusborder-top-right-radiusborder-top-styleborder-top-widthborder-widthbottombox-decoration-breakbox-shadowbox-sizingbreak-afterbreak-beforebreak-insidecaption-sidecaret-color@charsetclearclipclip-pathcolorcolumn-countcolumn-fillcolumn-gapcolumn-rulecolumn-rule-colorcolumn-rule-stylecolumn-rule-widthcolumn-spancolumn-widthcolumnscontentcounter-incrementcounter-resetcursordirectiondisplayempty-cellsfilterflexflex-basisflex-directionflex-flowflex-growflex-shrinkflex-wrapfloatfont@font-facefont-familyfont-feature-settingsfont-kerningfont-sizefont-size-adjustfont-stretchfont-stylefont-variantfont-variant-capsfont-weightgridgrid-areagrid-auto-columnsgrid-auto-flowgrid-auto-rowsgrid-columngrid-column-endgrid-column-gapgrid-column-startgrid-gapgrid-rowgrid-row-endgrid-row-gapgrid-row-startgrid-templategrid-template-areasgrid-template-columnsgrid-template-rowshanging-punctuationheighthyphens@importisolationjustify-content@keyframesleftletter-spacingline-heightlist-stylelist-style-imagelist-style-positionlist-style-typemarginmargin-bottommargin-leftmargin-rightmargin-topmax-heightmax-width@mediamin-heightmin-widthmix-blend-modeobject-fitobject-positionopacityorderoutlineoutline-coloroutline-offsetoutline-styleoutline-widthoverflowoverflow-xoverflow-ypaddingpadding-bottompadding-leftpadding-rightpadding-toppage-break-afterpage-break-beforepage-break-insideperspectiveperspective-originpointer-eventspositionquotesresizerightscroll-behaviortab-sizetable-layouttext-aligntext-align-lasttext-decorationtext-decoration-colortext-decoration-linetext-decoration-styletext-indenttext-justifytext-overflowtext-shadowtext-transformtoptransformtransform-origintransform-styletransitiontransition-delaytransition-durationtransition-propertytransition-timing-functionunicode-bidiuser-selectvertical-alignvisibilitywhite-spacewidthword-breakword-spacingword-wrapwriting-modez-index

IVC Moduleo Transform Stone Dryback — коллекция для дома и офиса

Moduleo поражает своей многосторонностью и дизайном. Блочные планки выглядят как настоящие и предоставляют разные возможности укладки. Благодаря чему вы сами решаете, какую атмосферу вы хотите создать.
Кликнуть, наклеить – для каждого типа применения есть свой тип укладки. Можно делать самим, можно предоставить дело специалистам. Но самое главное – не нужно ничего ломать и выламывать. Таким образом вы можете полностью трансформировать ваше пространство – легко и без стресса.
После настила пола вы сможете наслаждаться им без забот. Moduleo радует не только глаз: он заглушает звуки, мягок и тёпел на ощупь, не царапается, не впитывает пятна, водонепроницаем (как и все другие наши продукты) – что делает его идеальным для использования в кухнях и ванных комнатах. Моduleo — продукт, отвечающий нормам экологии и умный выбор для будущего. Наши продукты произведены в соответствии с природосберегающими технологиями (содержат до 50% переработанного сырья /утиля/ ) и сами представляют возможность быть повторно использованными в производстве.

CSS Tutorial

CSS HOMECSS IntroductionCSS SyntaxCSS SelectorsCSS How ToCSS CommentsCSS Colors
Colors
RGB
HEX
HSL

CSS Backgrounds
Background Color
Background Image
Background Repeat
Background Attachment
Background Shorthand

CSS Borders
Borders
Border Width
Border Color
Border Sides
Border Shorthand
Rounded Borders

CSS MarginsCSS PaddingCSS Height/WidthCSS Box ModelCSS Outline
Outline
Outline Width
Outline Color
Outline Shorthand
Outline Offset

CSS Text
Text Color
Text Alignment
Text Decoration
Text Transformation
Text Spacing
Text Shadow

CSS FontsCSS IconsCSS LinksCSS ListsCSS TablesCSS DisplayCSS Max-widthCSS PositionCSS OverflowCSS FloatCSS Inline-blockCSS AlignCSS CombinatorsCSS Pseudo-classCSS Pseudo-elementCSS OpacityCSS Navigation BarCSS DropdownsCSS Image GalleryCSS Image SpritesCSS Attr SelectorsCSS FormsCSS CountersCSS Website LayoutCSS UnitsCSS Specificity

Features

  • Azimuth only and azimuth / elevation rotator support
  • Serial interface using the standard Arduino USB port
  • Control Port Protocol Support:
  • Yaesu GS-232A & GS-232B
  • Easycom
  • Support for position sensors:
  • Potentiometers / Analog Voltage
  • Rotary Encoders
  • Incremental Encoders
  • Pulse Output
  • HMC5883L digital compass
  • ADXL345 accelerometer
  • LSM303 digital compass and accelerometer
  • HH-12 / AS5045
  • A2 Absolute Encoder (under development)
  • LCD display (2 or 4 rows, at least 16 columns)
  • Can be interfaced with non-Yaesu rotators, including homebrew systems
  • Directional indication on LCD display (North, South, North Northwest, etc.) along with degrees
  • Intelligent automatic rotation (utilizes overlap on 450 degree rotators)
  • Support for both 360 degree and 450 degree azimuth rotators or any rotation capability up to 719 degrees
  • North Center and South Center support
  • Support for any starting point (fully clockwise)
  • Optional automatic azimuthal rotation slowdown feature when reaching target azimuth
  • Optional rotation smooth ramp up
  • Optional brake engage/disengage lines for azimuth and elevation
  • Buttons for manual rotation
  • Command timeout
  • Timed interval rotation
  • Overlap LED Indicator
  • Help screen
  • Speed Control, both single PWM output (compatible with Yaesu controllers) and dual PWM rotate CW and rotate CCW outputs and dual elevate up and elevate down outputs
  • Variable frequency outputs
  • Preset Control using either potentiometers or rotary encoders with optional preset start button
  • Speed Potentiometer
  • Manual Rotation Limits
  • Classic 4 bit, Adafruit I2C LCD, and Yourduino.com Display Support
  • Optional tenth of a degree support with Easycom protocol (i.e. 123.4 degrees)
  • Park button
  • Azimuth and elevation calibration tables
  • Host unit and Remote unit operation for remotely located sensors using two Arduinos or ATMega chips
  • Works with hamlib rotctl/rotcltd, HRD, N1MM, PST Rotator, and many more programs
  • Moon and Sun Tracking
  • GPS Interfacing
  • Realtime Clock Interfacing
Ссылка на основную публикацию