Форум: "Media";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
ВнизПОворот канваса Найти похожие ветки
← →
_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 вся ветка
Форум: "Media";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c