MSSQL Скрипт просмотра всех бэкапов определенной базы данных, работает на MSSQL 2000 + И выше
declare @cmt varchar(200)
set @cmt = ''
declare @dbname varchar(250)
set @dbname = 'db_name'
print @cmt+'database '+@dbname
print @cmt+'full backup of '+@dbname
declare @full_bs_id numeric(38)
declare @full_start datetime
declare @full_end datetime
declare @full_created bit
declare @full_lsn numeric(38)
declare @full_media_id numeric(38)
declare @full_media_file varchar(2000)
declare @full_media_pos numeric(38)
set @full_created = 0
select top 1
@full_created = 1,
@full_bs_id = backup_set_id,
@full_start = backup_start_date,
@full_end = backup_finish_date,
@full_lsn = database_backup_lsn,
@full_media_pos = position,
@full_media_id = media_set_id,
@full_media_file = (select b.physical_device_name from msdb.dbo.backupmediafamily b where b.media_set_id = bs.media_set_id)
from msdb.dbo.backupset bs
where
bs.database_name = @dbname
and bs.type = 'D'
order by bs.backup_start_date desc
if @full_created = 1 begin
print @cmt+'full backupset id: '+cast(@full_bs_id as varchar)
print @cmt+'full backupset started: '+convert(varchar(200),@full_start,120) -- +cast(@full_start as varchar)
print @cmt+'full backupset finished: '+convert(varchar(200),@full_end,120) -- +cast(@full_end as varchar)
print @cmt+'full backupset db lsn: '+cast(@full_lsn as varchar)
print @cmt+'full backupset media id: '+cast(@full_media_id as varchar)
print @cmt+'full media file: '+@full_media_file
print @cmt+'full media position: '+cast(@full_media_pos as varchar)
print @cmt+'diff backup of '+@dbname
declare @diff_bs_id numeric(38)
declare @diff_start datetime
declare @diff_end datetime
declare @diff_created bit
declare @diff_lsn numeric(38)
declare @diff_media_id numeric(38)
declare @diff_media_file varchar(2000)
declare @diff_media_pos numeric(38)
set @diff_created = 0
select top 1
@diff_created = 1,
@diff_bs_id = backup_set_id,
@diff_start = backup_start_date,
@diff_end = backup_finish_date,
@diff_lsn = database_backup_lsn,
@diff_media_pos = position,
@diff_media_id = media_set_id,
@diff_media_file = (select b.physical_device_name from msdb.dbo.backupmediafamily b where b.media_set_id = bs.media_set_id)
from msdb.dbo.backupset bs
where
bs.database_name = @dbname
and bs.type = 'I'
and bs.database_backup_lsn > @full_lsn
order by bs.backup_start_date desc
if @diff_created = 1 begin
print @cmt+'diff backupset id: '+cast(@diff_bs_id as varchar)
print @cmt+'diff backupset started: '+convert(varchar(200),@diff_start,120) -- +cast(@diff_start as varchar)
print @cmt+'diff backupset finished: '+convert(varchar(200),@diff_end,120) -- +cast(@diff_end as varchar)
print @cmt+'diff backupset db lsn: '+cast(@diff_lsn as varchar)
print @cmt+'diff backupset media id: '+cast(@diff_media_id as varchar)
print @cmt+'diff media file: '+@diff_media_file
print @cmt+'diff media position: '+cast(@diff_media_pos as varchar)
end
end else begin
print @cmt+'! full backup of '+@dbname+' not exists'
end
go
Cofe +
tomcat ssl
Проверить время на сервере
apt-get update
aptitude install ntp
apt-get install ntpdate
dpkg-reconfigure tzdata
ntpdate ntp.remco.org
Сгенерировать ключ
cd /var/lib/tomcat8
keytool -genkey -alias tomcat -keyalg RSA -keystore keystore -validity 300
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: *.cofe.xyz
What is the name of your organizational unit?
[Unknown]: cofe.xyz
What is the name of your organization?
[Unknown]: cofe.xyz
What is the name of your City or Locality?
[Unknown]: NTagil
What is the name of your State or Province?
[Unknown]: Sverdlovskay
What is the two-letter country code for this unit?
[Unknown]: ru
Is CN=*.cofe.xyz, OU=cofe.xyz, O=cofe.xyz, L=NTagil, ST=Sverdlovskay, C=ru correct?
[no]: yes
apt-get update
aptitude install ntp
apt-get install ntpdate
dpkg-reconfigure tzdata
ntpdate ntp.remco.org
Сгенерировать ключ
cd /var/lib/tomcat8
keytool -genkey -alias tomcat -keyalg RSA -keystore keystore -validity 300
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: *.cofe.xyz
What is the name of your organizational unit?
[Unknown]: cofe.xyz
What is the name of your organization?
[Unknown]: cofe.xyz
What is the name of your City or Locality?
[Unknown]: NTagil
What is the name of your State or Province?
[Unknown]: Sverdlovskay
What is the two-letter country code for this unit?
[Unknown]: ru
Is CN=*.cofe.xyz, OU=cofe.xyz, O=cofe.xyz, L=NTagil, ST=Sverdlovskay, C=ru correct?
[no]: yes
Просмотр ключа
keytool -list -keystore keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
tomcat, 04.01.2017, PrivateKeyEntry,
Certificate fingerprint (SHA1): A0:6D:7E:41:88:E1:05:F9:06:21:58:7C:34:47:35:68:8E:6D:97:1A
публикую программу zipsfx
Доброго времени! публикую свою программу zipsfx-cpp
JAVA из коробки поддерживает работу с zip архивами, при том хотелось чтобы были соблюдены следующие условия
run = cmd /C launcher-2.bat $args - указывает, что после распаковки, необходимо выполнить команду запуска bat файла
workDir = $dir\data - указывает, что выполнить надо команду, в под каталоге data, относительно распакованного каталога
deleteFiles = true - указывает, что по завершению, надо удалить фалы
Вот так склеиваем файлы (в командной строке)
Выполнение того что получилось
Дистрибутив программы - это всего один файл (zipsfx), который не требует какой либо установки, он и является тем самым самораспаковывающийся архив, точнее заголовок exe файла.
Более подробное описание расположено на сайте github
Преамбула
Была у меня такая идея создавать на лету SFX (Самораспаковывающийся архив) файлы средствами JAVAJAVA из коробки поддерживает работу с zip архивами, при том хотелось чтобы были соблюдены следующие условия
- Создание sfx архива должно работать из любой ОС
- Создание sfx архива должно быть реализовано в пределах JAVA
Облазив тырнет (где-то 2011 - 2012) я не нашел подходящего решения, из возможных решений было использование 7z, все хорошо, есть SDK, есть "модуль" SFX, кроме одного, оно работает с только 7z архивами (так было 2012)
Тогда было решено написать свой
О программе
Суть использования программы сводится к нескольким шагам
- Создать каким либо образом zip архив, тем же 7zip или средствами JAVA.
Назовем этот файл data.zip или еще как либо. - Создать текстовый файл с параметрами распаковки (куда распаковывать, что потом сделать).
Назовем этот файл options.txt или еще как либо. - Склеить файлы install.exe = zipsfx + options.txt + data.zip
Вот пример работающей версии:
Содержит два файла:
Шаг 1 - создание архива
Файл data.zipСодержит два файла:
- launcher.bat
- data/launcher-2.bat
data/launcher-2.bat в себе содержит следующий код:
@echo off
echo current dir "%CD%"
pause
echo current dir "%CD%"
pause
Шаг 2 - создание параметров
Файл options.txt
OPTIONS BEGIN {
# Hello text
hello = HELLO4 Test arguments
# Show hello text
showHello = false
# Show log progress
showLog = false
# Delete files on exit
deleteFiles = true
# Run after extract
run = cmd /C launcher-2.bat $args
workDir = $dir\data
# return exit code from run
return = true
# true - use temp dir; false - use current dir
useTemp = true
} OPTIONS END
run = cmd /C launcher-2.bat $args - указывает, что после распаковки, необходимо выполнить команду запуска bat файла
workDir = $dir\data - указывает, что выполнить надо команду, в под каталоге data, относительно распакованного каталога
deleteFiles = true - указывает, что по завершению, надо удалить фалы
Шаг 3 - склейка фалов
copy /b zipsfx + options.txt + data.zip test.exe
Выполнение того что получилось
Дистрибутив программы
Дистрибутив программы, а так же исходный код (лицензия MIT) расположен на сайте https://github.com/gochaorg/zipsfx-cppДистрибутив программы - это всего один файл (zipsfx), который не требует какой либо установки, он и является тем самым самораспаковывающийся архив, точнее заголовок exe файла.
Более подробное описание расположено на сайте github
Перевод Bashrc
Надоело смотреть на скучные комментарии на англицком в файле .bashrc
Как известно этот файл отвечает за настройку командной строки (bash) в linux/freebsd и т.д.
*i*) ;;
*) return;;
esac
HISTFILESIZE=2000
debian_chroot=$(cat /etc/debian_chroot)
fi
xterm-color) color_prompt=yes;;
esac
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
alias la='ls -A'
alias l='ls -CF'
. ~/.bash_aliases
fi
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
export PS1
export PATH
Как известно этот файл отвечает за настройку командной строки (bash) в linux/freebsd и т.д.
#!/bin/bash
# ~/.bashrc: выполняется программой bash для Non-login оболочки (да и для оной тоже)
# см. /usr/share/doc/bash/examples/startup-files (в пакете документации bash-doc)
# для примеров
# ~/.bashrc: выполняется программой bash для Non-login оболочки (да и для оной тоже)
# см. /usr/share/doc/bash/examples/startup-files (в пакете документации bash-doc)
# для примеров
# Если не интерактино, то ничего не делать
case $- in*i*) ;;
*) return;;
esac
# Не выводить в историю повторяющиеся строки
# или строки начинающиеся с пробела
# см. bash(1) для дополнительных опций
HISTCONTROL=ignoreboth# или строки начинающиеся с пробела
# см. bash(1) для дополнительных опций
# добавить в файл истории, не перезаписать его
shopt -s histappend# Длина файла истории см. bash(1)
HISTSIZE=1000HISTFILESIZE=2000
# Проверить размер окна после каждой команды и при необходимости,
# Обновить значения строк (LINES) и столбцов (COLUMNS).
shopt -s checkwinsize# Обновить значения строк (LINES) и столбцов (COLUMNS).
# Если установлено, шаблон "**" используется в контексте расширения путь будет
# Соответствовать всем файлам и ноль или более каталогов и подкаталогов.
#shopt -s globstar# Соответствовать всем файлам и ноль или более каталогов и подкаталогов.
# Сделать менее более дружественным для входных файлов нетекстовых см. lesspipe (1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# Установить переменную идентифицирующую работу в окружении chroot (используется в следующем приглашении)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; thendebian_chroot=$(cat /etc/debian_chroot)
fi
# Установить подсказку цветной по возможности
# Зависит от переменной TERM
case "$TERM" in# Зависит от переменной TERM
xterm-color) color_prompt=yes;;
esac
# Раскомментируйте для цветной подсказки, если терминал имеет эту возможность;
# По умолчанию отключено, чтобы не отвлекать пользователя от фокуса внимания в окне терминала
# Должно быть на выходе команд, а не вводимой строке
#force_color_prompt=yes
# По умолчанию отключено, чтобы не отвлекать пользователя от фокуса внимания в окне терминала
# Должно быть на выходе команд, а не вводимой строке
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# У нас есть поддержка цвета; предполагаю, что это соответствует ECMA-48
# (ISO/IEC-6429). (Отсутствие такой поддержки крайне редко,
# и пусть будет так. Как правило поддерживается SETF, а не setaf.)
color_prompt=yes# (ISO/IEC-6429). (Отсутствие такой поддержки крайне редко,
# и пусть будет так. Как правило поддерживается SETF, а не setaf.)
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# Если это Xterm задать заголовок так: user@host:dir
case "$TERM" inxterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# Включить поддержку цвета для ls, а также добавить удобные псевдонимы
if [ -x /usr/bin/dircolors ]; thentest -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# Еще несколько ls псевдонимов
alias ll='ls -l'alias la='ls -A'
alias l='ls -CF'
# Вы можете поместить все ваши дополнения в отдельный файл, как
# ~/.bash_aliases вместо добавления их здесь непосредственно.
# см. /usr/share/doc/bash-doc/examples в пакете документации bash-doc
if [ -f ~/.bash_aliases ]; then# ~/.bash_aliases вместо добавления их здесь непосредственно.
# см. /usr/share/doc/bash-doc/examples в пакете документации bash-doc
. ~/.bash_aliases
fi
# Включить программируемые функции завершения (дополнительно включать не нужно,
# т.к. уже включено в /etc/bash.bashrc , /etc/profile и /etc/bash.bashrc
if ! shopt -oq posix; then# т.к. уже включено в /etc/bash.bashrc , /etc/profile и /etc/bash.bashrc
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
###############################################################################
# Добавлено мной
# Добавлено мной
# Переопределение цветной подсказки в таком виде:
# ЧЧ.ММ.СС:user@host:dir
# > тут_курсор_ввода
PS1='\[\033[02;32m\]\D{%H.%M.%S}\033[00m:\033[0;34m\u@\h\[\033[00m\]:\w\n> '# ЧЧ.ММ.СС:user@host:dir
# > тут_курсор_ввода
export PS1
# Добавление путей поиска
PATH="~/.bin:~/bin:$PATH"export PATH
Измерение отрезков общего положения
В предыдущей части
я рассмотрел как построить отрезки в перспективе, были рассмотрены
только частные случаи - горизонтальные, вертикальные и уходящие в глубь
отрезки линий.
Теперь разберемся как измерить отрезок который расположен в горизонтальной плоскости, под не известным углом и как нарисовать еще один отрезок такой же длины в перспективе.
И так нам дано: перспектива отрезка AB и нам необходимо продлить этот отрезок в глубь, на такую же длину что бы получился отрезок BC равный по длине AB.
1. Через точки A и B проведем линию до пересечения с линией горизонта hh1, точку пересечения отметим буквой F
2. Возьмем циркуль и проведем дугу, где центр будет точка - F, радиус дуги будет - отрезок FSk, начало дуги в точке Sk, а ее конец на линии горизонта в точке M.
Наша точка M - это специальная точка, ее название масштабная точка. Используя ее мы узнаем размеры отрезка AB
3. Через масштабную точку M проведем две линии, через точки A и B, до основания картины. На основании картины отметим соот. точки Ao и Bo.
Реальный размер отрезка AB мы можем получить взяв линейку и померив ей отрезок AoBo
4. Теперь отмерим на основании отрезок BoCo такой же по длине как и AoBo, и проведем линию из точки Co, до точки M.
Линия пересечет прямую AB в точке C.
Вот так мы и построили нужный нас отрезок BC.
Теперь разберемся как измерить отрезок который расположен в горизонтальной плоскости, под не известным углом и как нарисовать еще один отрезок такой же длины в перспективе.
И так нам дано: перспектива отрезка AB и нам необходимо продлить этот отрезок в глубь, на такую же длину что бы получился отрезок BC равный по длине AB.
Алгоритм
2. Возьмем циркуль и проведем дугу, где центр будет точка - F, радиус дуги будет - отрезок FSk, начало дуги в точке Sk, а ее конец на линии горизонта в точке M.
Наша точка M - это специальная точка, ее название масштабная точка. Используя ее мы узнаем размеры отрезка AB
3. Через масштабную точку M проведем две линии, через точки A и B, до основания картины. На основании картины отметим соот. точки Ao и Bo.
Реальный размер отрезка AB мы можем получить взяв линейку и померив ей отрезок AoBo
4. Теперь отмерим на основании отрезок BoCo такой же по длине как и AoBo, и проведем линию из точки Co, до точки M.
Линия пересечет прямую AB в точке C.
Вот так мы и построили нужный нас отрезок BC.
Перспективные масштабы
Вы уже знаете, что все предметы по мере удаления в даль на картине
уменьшаются в размерах, хотя в пространстве они как были так и остаются
не измененные.
Напрашивается вопрос - как правильно отобразить размеры объекта в перспективе.
Сначала рассмотрим три частных случая:
Допустим у нас есть уже горизонтальный отрезок AB в перспективе, и есть еще точка С лежащая немного дальше этого отрезка. Необходимо построить перспективу горизонтального отрезка CD такой же длины как и AB
2. Из точки F до точки B проведем вторую линию
3. Проводим горизонтальную линию из точки C до пересечения с прямой FB, точка пересечения - будет искомой точкой D
Масштаб высоты выполняется аналогично масштабу ширины
Теперь у нас немного другая ситуация, у нас есть отрезок AB который направлен строго в глубь, точка B пересекает основание картины.
Нам необходимо построить перспективу отрезка AB.
Проведем соот. линию BP - это будет перспектива прямой AB, но не отрезка AB, на еще необходимо найти точку A на этой прямой.
2. Отложим от точки B вправо отрезок BC нужной длинны - такой же как и AB.
3. Соединим прямой точки AC.
Теперь мы имеем прямую AC расположенную под 45 градусов, в соответствии о точках схода, эта прямая будет иметь точку схода D
4. Нарисуем перспективу прямой AC, проведем из точки C в точку D прямую, точка пересечения прямых CD и BP - будет искомая точка A.
У нас есть уже нарисованная перспектива отрезка расположенного в глубь. В дополнение у нас дистанционные точки выходят за границы листа
Нам необходимо узнать размеры отрезка AB
Вот ниже картинка этого случая
2. Проведем перспективу прямой AB, из точки A, через B и до точки P проведем прямую
3. Теперь из точки D/2 проведем две прямые через точки A и B до пересечения с основанием картины,
4. Мы получили отрезок AoBo размером 5,6 см, по скольку он получен с использованием точки D/2, то реальный размер отрезка AB будет больше в два раза 5,6 * 2 = 11,2 см.
Возможно использовать не только точки D/2, но и например D/4 и т.д. соответственно реальные размеры необходимо будет увеличивать в соответствующую кратность.
Пример построения перспективы квадрата
В нашем примере точка D находится за пределами листа, по этому мы будем использовать точку D/2
Изначально у нас есть только точка P и отрезок 1-2 и мы хотим построить квадрат размером с этот отрезок.
1. Проведем из точек 1 и 2 две прямых в точку P
2. Возьмем отрезок 1-2 и разделим поровну получим два равных отрезка 1-5 и 5-2, при использовании точки D/2 отрезок 5-2 будет соответствовать боковой стороне квадрата.
3. Из точки 5 проведем прямую до точки D/2, она пересечет прямую 2-P в точке 3
4. Из точки 3 проведем горизонтальную прямую до пересечения с прямой 1-P, в точке 4
Вот и все мы имеем перспективу квадрата с углами в точках 1,2,3,4
Напрашивается вопрос - как правильно отобразить размеры объекта в перспективе.
Сначала рассмотрим три частных случая:
- Масштаб ширины - сокращение отрезков расположенных параллельно основанию картины
- Масштаб высоты - сокращение вертикальных отрезков
- Масштаб глубины - сокращение отрезков направленных в глубь картины, т.е. отрезки направленные в главную точку схода P
Масштаб ширины
Алгоритм
1. Из точки A через точку C проведем до горизонта линию, точку пересечения обозначим буквой F2. Из точки F до точки B проведем вторую линию
3. Проводим горизонтальную линию из точки C до пересечения с прямой FB, точка пересечения - будет искомой точкой D
Масштаб высоты
Масштаб глубины
Нам необходимо построить перспективу отрезка AB.
Алгоритм
1. По скольку отрезок AB расположен перпендикулярно картинной плоскости, то точка схода прямой AB будет P.Проведем соот. линию BP - это будет перспектива прямой AB, но не отрезка AB, на еще необходимо найти точку A на этой прямой.
2. Отложим от точки B вправо отрезок BC нужной длинны - такой же как и AB.
3. Соединим прямой точки AC.
Теперь мы имеем прямую AC расположенную под 45 градусов, в соответствии о точках схода, эта прямая будет иметь точку схода D
4. Нарисуем перспективу прямой AC, проведем из точки C в точку D прямую, точка пересечения прямых CD и BP - будет искомая точка A.
Обратная задача
Теперь рассмотрим обратную задачуУ нас есть уже нарисованная перспектива отрезка расположенного в глубь. В дополнение у нас дистанционные точки выходят за границы листа
Нам необходимо узнать размеры отрезка AB
Вот ниже картинка этого случая
Алгоритм
1. Давай уменьшим величину D в два раза и отметим ее на горизонте как точка D/2.2. Проведем перспективу прямой AB, из точки A, через B и до точки P проведем прямую
3. Теперь из точки D/2 проведем две прямые через точки A и B до пересечения с основанием картины,
4. Мы получили отрезок AoBo размером 5,6 см, по скольку он получен с использованием точки D/2, то реальный размер отрезка AB будет больше в два раза 5,6 * 2 = 11,2 см.
Возможно использовать не только точки D/2, но и например D/4 и т.д. соответственно реальные размеры необходимо будет увеличивать в соответствующую кратность.
Пример построения перспективы квадрата
В нашем примере точка D находится за пределами листа, по этому мы будем использовать точку D/2
Изначально у нас есть только точка P и отрезок 1-2 и мы хотим построить квадрат размером с этот отрезок.
1. Проведем из точек 1 и 2 две прямых в точку P
2. Возьмем отрезок 1-2 и разделим поровну получим два равных отрезка 1-5 и 5-2, при использовании точки D/2 отрезок 5-2 будет соответствовать боковой стороне квадрата.
3. Из точки 5 проведем прямую до точки D/2, она пересечет прямую 2-P в точке 3
4. Из точки 3 проведем горизонтальную прямую до пересечения с прямой 1-P, в точке 4
Вот и все мы имеем перспективу квадрата с углами в точках 1,2,3,4
Перспектива паркета
Так же как и для построения перспективы точки, нам понадобятся следующее:
По скольку все линии паркета располагаются под 45 градусов, то соответ. эти линии в перспективе будут сходится в две точки, D и D1 (см. Точки схода)
Как я строил перспективу паркета
1. Расстояние Sk P - взял с потолка, но по больше
2. Высоту горизонта взял по меньше, чем расстояние SkP
3. Провел линию горизонта
4. На линии горизонта отметил центральную точку P
5. Дистанционные точки D,D1 (они соответ. точкам схода 45 градусов) отметил на линии горизонта, на расстояние равном SkP от точки P.
6. Параллельно ниже провел линию основания картины на расстоянии соот. высоте горизонта
7. Ниже линии основания нарисовал паркет, так если смотреть на него сверху
Вот что у меня на этом этапе соответственно получилось
8. Далее я пунктиром провел линии из основания картины в точки схода
9. Последним шагом я по намеченным пунктирным линиям закрасил перспективные прямоугольники сверяясь с рисунком, и вот ниже вы можете видеть результат
- Лист бумаги
- Длинная линейка
- Треугольная линейка
- Карандаш
- Основные понятия перспективы
- Понятие о совмещенной предметной плоскости
- Понятие о точках схода
По скольку все линии паркета располагаются под 45 градусов, то соответ. эти линии в перспективе будут сходится в две точки, D и D1 (см. Точки схода)
Как я строил перспективу паркета
1. Расстояние Sk P - взял с потолка, но по больше
2. Высоту горизонта взял по меньше, чем расстояние SkP
3. Провел линию горизонта
4. На линии горизонта отметил центральную точку P
5. Дистанционные точки D,D1 (они соответ. точкам схода 45 градусов) отметил на линии горизонта, на расстояние равном SkP от точки P.
6. Параллельно ниже провел линию основания картины на расстоянии соот. высоте горизонта
7. Ниже линии основания нарисовал паркет, так если смотреть на него сверху
Вот что у меня на этом этапе соответственно получилось
8. Далее я пунктиром провел линии из основания картины в точки схода
9. Последним шагом я по намеченным пунктирным линиям закрасил перспективные прямоугольники сверяясь с рисунком, и вот ниже вы можете видеть результат
Подписаться на:
Сообщения (Atom)