|
||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Масштабирование фигуры
Рассмотрим случай уменьшения размеров фигуры делением ее сторон.
N:= 7; R:= 170; xc:= GetMaxX div 2; yc:= GetMaxY div 2; for i:= 1 to N do begin alfa:= i*2. *pi/N; x[i]:= xc + round(R*cos(alfa)); { координаты вершин } y[i]:= yc + round(R*sin(alfa)) { исходного N-угольника } end; MoveTo(x[N], y[N]); for i:= 1 to N do LineTo(x[i], y[i]); { рисуем N-угольник } ch:= ReadKey; { нажать клавишу } Repeat { найдем середины сторон многоугольника и запишем их в массивы новых координат многоугольника } x1:= x[1]; y1:= y[1]; for i:=1 to N-1 do begin x[i]:= (x[i]+x[i+1]) div 2; y[i]:= (y[i]+y[i+1]) div 2 end; x[N]:= (x[N]+x1) div 2; y[N]:= (y[N]+y1) div 2; { строим многоугольник по новым точкам } MoveTo(x[N], y[N]); for i:=1 to N do LineTo(x[i], y[i]); ch:=ReadKey; { нажать клавишу } Until ch=#27; При нажатии клавиши внутрь фигуры будет "убегать" ее уменьшенная копия до нажатия клавиши Esc. Стороны можно делить не пополам, а в каком-либо соотношении. Для стирания фигуры необходимо перерисовать ее в режиме XorPut. Масштабирование фигур можно проводить используя зависимости, приведенные выше для вращения фигуры относительно своего "центра", изменяя Kx и Ky, при постоянных параметрах xf, yf, A.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.) |