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

Вниз

Математика   Найти похожие ветки 

 
{RASkov} ©   (2008-08-22 23:36) [0]

1)
 for C:=0 to 2 do
  for R:=0 to 2 do begin
   Ind:=R*2+C;

.......
Что-то никак не соображу как в Ind получить последовательность (0,1,2,3,4,5,6,7,8) или (1,2,3,4,5,6,7,8,9)

2)
Или вот такой вопрос:
Как расчитать Rect"ы зная их кол-во и размер сетки. Т.е.
var R: TRect;
begin
ColCount:=5;
RowCount:=5;
for I:=0 to ColCount*RowCount-1 do begin
R:=Rect(?)
Canvas.Rectangle(R); //Должна получится на канве сетка 5х5
........


Ох уж эта математика, да еще и в пятницу :(


 
palva ©   (2008-08-22 23:39) [1]

C*3+R+1


 
Zeqfreed ©   (2008-08-22 23:41) [2]

2)
x := I mod ColCount;
y := I div RowCount;
R := Rect(x * rectWidth, y * rectWidth, x * rectWidth + rectWidth, y * rectWidth + rectHeight);

Вроде :)


 
DVM ©   (2008-08-22 23:42) [3]


> Ох уж эта математика, да еще и в пятницу :(

завязывай, ночь на дворе :)


 
TUser ©   (2008-08-22 23:43) [4]

C*3+R, по аналогии с перечислением десятичных числе - множим на 10, хотя макс цифра 9.

границы i-й ячейки W*i...W*(i+1) + толщину границ учесть и тоже самое по веритикали


 
Zeqfreed ©   (2008-08-22 23:44) [5]

> Zeqfreed ©   (22.08.08 23:41) [2]

Копипаст меня подвел :) Ну как-нибудь разберетесь.


 
{RASkov} ©   (2008-08-22 23:59) [6]

Ага... Спасибо.
С первым разобрался так:
 for C:=0 to ColCount do
  for R:=0 to RowCount do begin
   Ind:=R*(ColCount+1)+C+1;
   RC:=Rect(C*IM_W+IM_HS, R*IM_H+IM_VS, C*IM_W+IM_W, R*IM_H+IM_H); //Не верно!
   Canvas.Rectangle(RC);
   Canvas.TextOut(RC.Left+5, RC.Top+5, IntToStr(Ind));
  end;
константы IM_xxx - это ширина ректа и отступ между ними...
Кстати тоже пока не верно расчитывается RC, но с этим я думаю уже разберусь сам... Еще раз спасибо palva, TUser.

А со вторым - намек вроде понял, но пока не получилось.... но думаю тоже "допру". Спасибо Zeqfreed.

Ну и тебе спасибо DVM ;):)


 
{RASkov} ©   (2008-08-23 12:55) [7]

> А со вторым - намек вроде понял, но пока не получилось..

Со вторым вообще оказалось еще проще, чем с первым... :)
Там и "в див" и "в мод" нужно на одно и тоже значение делить.
Правда я вчера последовал совету DVM...
А сегодня со свежим взглядом на жизнь все сделал, но все равно огромное спасибо, быть может я бы долго еще соображал с этой примитивной математикой...
И тут

> RC:=Rect(C*IM_W+IM_HS, R*IM_H+IM_VS, C*IM_W+IM_W, R*IM_H+IM_H); //Не верно!

вот как нужно:
 L:=RC_HSPACE+C*(RC_WIDTH+RC_HSPACE);
 T:=RC_VSPACE+R*(RC_HEIGHT+RC_VSPACE);
 RC:=Rect(L, T, L+RC_WIDTH, T+RC_HEIGHT);

Теперь Верно!
:)



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1220519929
Dagir
2008-09-04 13:18
2008.10.12
Сравнение данных


15-1219385138
vajo
2008-08-22 10:05
2008.10.12
Про активацию Windows XP


15-1219403448
Amoeba
2008-08-22 15:10
2008.10.12
Жизненный цикл программиста


15-1219386429
zdm
2008-08-22 10:27
2008.10.12
Формат отображения вещественных данных


1-1199993925
kilonet
2008-01-10 22:38
2008.10.12
Создание отчёта