Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Масштабирование   Найти похожие ветки 

 
Death2   (2004-02-07 05:36) [0]

Здравствуйте.
Помогите пожалуйста написать функцию масштабирования многоугольника. Многоугольник представлен ввиде массива точек. Функция на входе получает коэффициент масштабирования и многоугольник.
Type
TPoligon = class
public
FNamberOfPoints : integer;
FPoints : array[0..100] of Tpoint;
end;
function MashtabPoligon(ACoef : real; APoligon : TPoligon) : boolean;
begin
//???
end;


 
TUser   (2004-02-07 10:19) [1]

Преобразовать координаты так, чтобы одна из точек попала в (0,0). Ее координаты менять не будем. Остальные координаты (ну, собственно, все) - умножаем на полученный коэффиц.


 
Никто   (2004-02-07 11:07) [2]

function MashtabPolygon(ACoef : real; APolygon : TPolygon) : boolean;
const
BasePointIndex = 0;
begin
for i := 0 to FNumberOfPoints - 1 do
if (i <> BasePointIndex) then // хотя можно и без этого условия
with FPolygon do
begin
FPoints[i].X := round((FPoints[i].X - FPoints[BasePointIndex].X) * ACoef) + FPoints[BasePointIndex].X;
FPoints[i].Y := round((FPoints[i].Y - FPoints[BasePointIndex].Y) * ACoef) + FPoints[BasePointIndex].Y;
end;
end;

P.S. Я не знаю всех условий Вашей задачи, но, в общем случае, лучше использовать не статический массив точек ([0..100]), а динамический ([0..0]) с выделением памяти по мере необходимости. Однако, в таком случае необходимо отключить контроль выхода за границы ({$RANGECHECKS OFF}), а так же проявить некоторую долю осторожности при отладке кода.

P.P.S. В качестве параметра FPolygon передавайте не значение, а ссылку ^TPolygon.

P.P.P.S. Масштаб - Scale (англ.)

P.P.P.P.S. Извините, если мои комментарии Вас напрягли :o)


 
Death2   (2004-02-10 08:12) [3]

Нет, абсолютно не напрягли!
Спасибо большое!

Вот только, APolygon и так уже является ссылкой, т.к. в делфи все экземпляры класса - ссылки(указатели).



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

Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.03 c
3-79590
rosl
2004-01-28 04:27
2004.02.25
количество заполненных строк в файле excel


3-79575
werq
2004-01-29 13:10
2004.02.25
Мастаки, какой есть бесплатный компонент по сохранению в DBF?


3-79644
Dima
2004-01-31 21:51
2004.02.25
Пустые ADO DataSets


4-80358
yaric
2003-11-26 18:08
2004.02.25
Можно ли программно заблокировать лоток CD


3-79576
ИМХО
2004-01-29 06:53
2004.02.25
Кто работал с TDBF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский