Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

ПОворот канваса   Найти похожие ветки 

 
_alx_   (2002-07-22 15:25) [0]

В МАПИ описаны ф-ии для трансформации координатных плоскостей (вращение, сдвиг итд). Но они недоступны из В98, конечно можно создать структуры для объектов(прямоугольников, линий, элипсов)
и аоворачивать вершины из этих записей... (кстати как повернуть элипс), но неужели нет фий под 98???


 
Viewer   (2002-07-22 18:10) [1]

В Московском Авиационно-Проектном институте они точно не описаны.
Попробуй в МИФИ поискать.


 
MBo ©   (2002-07-23 06:39) [2]

эллипс под углом (простенький путь)

procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
ang:integer;
sfi,cfi,alpha:double;
xa,ya:double;
x,y:integer;
a,b:integer;
x0,y0:integer;
begin
ang:=30;x0:=200;y0:=200;a:=150;b:=100;n:=60;
sfi:=sin(degtorad(ang));
cfi:=cos(degtorad(ang));
for i:=0 to n do begin
alpha:=i*2*pi/n;
xa:=a*cos(alpha);
ya:=b*sin(alpha);
x:=round(x0+xa*cfi+ya*sfi);
y:=round(y0-xa*sfi+ya*cfi);
if i=0 then canvas.moveto(x,y) else canvas.lineto(x,y);
end;

вращение 24-bit Bitmap без обрезания уголков с исп. Scanline

function BmpRot(const B: TBitmap;fi:integer):TBitmap;
type
TRGBTripleArray = array[word] of TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
var
x0,y0,i,j,x1,y1,x11,y11,x2,y2:integer;
ht,wd,newht,newwd:integer;
cfi,sfi: double;
sline1,sline2: pRGBTRipleArray;
BEGIN
sfi:=sin(degtorad(fi));
cfi:=cos(degtorad(fi));
ht:=b.height;
wd:=b.width;
newwd:=abs(round(ht*sfi))+abs(round(wd*cfi));
newht:=abs(round(wd*sfi))+abs(round(ht*cfi));
Result:=TBitmap.create;
Result.Width:=newwd;
Result.Height:=newht;
Result.PixelFormat:=pf24bit;
x0:=wd div 2;
y0:=ht div 2;
for j :=newht-1 downto 0 do begin
sline2 := Result.scanline[j];
y1:= 2*(j-(newht-ht) div 2 -y0);
for i := newwd-1 downto 0 do begin
x1:=2*(i-(newwd-wd) div 2 -x0);
x2 :=round(x1 * cfi - y1 * sfi);
y2 :=round(x1 * sfi + y1 * cfi);
x11:=x2 div 2 +x0;
y11:=y2 div 2 +y0;
if (x11>=0)and(x11<wd)and(y11>=0)and(y11<ht) then begin
sline1 := b.scanline[y11];
sline2[i] := sline1[x11];
end;
end;
end;
end;



 
K.o.Z ©   (2002-07-27 02:43) [3]

MBo
я даже знаю откуда стянул алгоритм поворота... :)
он, конечно хорош, но в нём есть некоторые недороботки :(


 
MBo ©   (2002-07-29 10:08) [4]

>K.o.Z
О, ты тоже читал школьный учебник по геометрии ;)



Страницы: 1 вся ветка

Текущий архив: 2002.11.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-59167
Bocman
2002-11-09 04:31
2002.11.18
Капитальный баг


1-59220
Мутень
2002-11-06 16:50
2002.11.18
Как обращаться к свойствам и перехватывать события....


1-59204
Pesh
2002-11-06 13:35
2002.11.18
MDI Forms on Top


7-59441
Maxi-mov
2002-09-15 13:36
2002.11.18
Как можно


8-59286
Дж
2002-07-31 11:37
2002.11.18
Как можно проиграть MP3 !!!