Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить соотношение ширина/высота? [D7, WinXP]


Страницы:   1 2 3

Justin ©   (2011-05-29 17:56:00) 

Помогите пожалуйста вот в чем. К примеру, имеется число 530992. Каким образом можно на основе этого построить прямоугольник с наиболее "наглядным" чтоли соотношением ширины/высоты? Т.е., к примеру, если ширина 862, а высота 616, то приумножении мы и получаем число 530992.
Т.е., конечно же, построить таким образом, чтобы высота получилась 16, а ширина 33187 - это будет не то. Хоть и прямоугольник, но...не знаю как правильно объяснить)) надеюсь, суть уловили.


Anatoly Podgoretsky   (2011-06-01 13:51:00) [1]

> Inovet  (01.06.2011 11:20:39)  [39]

Ну так неправильное же, на части не делится, а вот с дробными нет никаких
проблем, можно делать прямоугольникы с любым соотношением, с ошибкой в
пол-пикселя


OW   (2011-06-01 12:03:00) [2]


> Inovet ©   (01.06.11 11:25) [40]

дык я вас всех и подытожил


Омлет   (2011-06-01 11:57:00) [3]

> К примеру, имеется число 530992.

А если число окажется простым? Совсем ненаглядно станет )


Inovet   (2011-06-01 11:25:00) [4]

> [38] OW ©   (01.06.11 09:11)

Так это у ЮЗ и сделано, только для квадрата. А выше разные "наиболее наглядные" соотношения предлагались, не понятно что автор под этим подразумевает. ЮЗ предположил 1, я вот о золотом сечение спросил, Jeer о формате А sqrt(2) и т.п..


Inovet   (2011-06-01 11:20:00) [5]

> [37] Anatoly Podgoretsky ©   (01.06.11 07:47)
> Это неправильное число?
> Я до сих пор не понял насчет дробных чисел, допустимы или нет, если нет, то задача имеет одно решение Nx1

Это простое число.

Автору надо в целых решить, и он только сейчас понял что "наиболее наглядым" - это непонятно как и для него самого, а говорили об этом ещё в самом начале ветки. Вот и начал дополнительные пиксели выдумывать - суть округление.


OW   (2011-06-01 09:11:00) [6]

имхо,
1. надо задать константой массив кошерных размеров прямоугольнико
(320х240, 640х480, и т.п.)
2. Площадь поделить на стороны этих прямоугольников, определить минимум расхождения частного с парой из массива для каждого прямоугольника. Это будет то, к чему стремиться. (Идеал)
3. Колебаниями вправо-влево в размерах Идеала(делитель), попробовать получить целочисленное деление, при неудаче колебать вправо/влево площадь (делимое)


Anatoly Podgoretsky   (2011-06-01 07:47:00) [7]

> Inovet  (31.05.2011 23:39:25)  [25]

Это неправильное число?
Я до сих пор не понял насчет дробных чисел, допустимы или нет, если нет, то
задача имеет одно решение Nx1


MBo   (2011-06-01 07:10:00) [8]

>Германн ©   (01.06.11 01:19) [32]
>Вот чего вам не спится? :)

Кто бы говорил ;))


Юрий Зотов   (2011-06-01 03:15:00) [9]

А не задача ли это линейного программирования?

Abs(Z - W * H) = min
Abs(W - H) = min

Z - исходное число, W - ширина, H - высота.

Если так, то методы известны - вперед.


Германн   (2011-06-01 02:09:00) [10]


> Не уподобляйтесь заказчику, который хочет, чтобы программист
> все написал, как надо - но при этом сам не знает, а как
> же ему надо.
>

+1


Юрий Зотов   (2011-06-01 01:58:00) [11]


> Justin   (31.05.11 23:27) [24]
> Вот она как раз и "не наглядная" получается, т.е. "неправильное".

До тех пор, пока Вы сами не решите, что такое "правильное" и "неправильное" - до этих пор ни Вы, ни я, ни кто-либо другой объяснить эти понятия компьютеру не сможет. Не уподобляйтесь заказчику, который хочет, чтобы программист все написал, как надо - но при этом сам не знает, а как же ему надо.

> как-то оно не совсем просто получается в реализации.

В реализации как раз ничего сложного не будет. После того, как Вы точно определитесь, чего же Вы хотите.


Германн   (2011-06-01 01:19:00) [12]


> MBo ©   (31.05.11 23:45) [27]
>
> >Inovet ©   (31.05.11 23:39) [25]
> Рассвет встречаешь?
> ;)
> <Цитата>
>
> Inovet ©   (31.05.11 23:51) [28]
>
> > [27] MBo ©   (31.05.11 23:45)
> > Рассвет встречаешь?
> > ;)
>
> Уже алеет небо на востоке.
>

Вот чего вам не спится? :)


RWolf   (2011-06-01 00:40:00) [13]


> Inovet ©   (31.05.11 22:51) [23]

речь о том, что из этих форматов только ISO имеет одно соотношение сторон для всех стандартных размеров.


Inovet   (2011-05-31 23:57:00) [14]

> [29] Justin   (31.05.11 23:52)
> Может, конечно, дописывать просто 1 любой пиксель в конец
> в таких случаях?

Вот началось. Так может и в других дописывать? Где критерий заметности дописывания?


Justin   (2011-05-31 23:52:00) [15]


> MBo ©   (31.05.11 23:42) [26]
> > по Вашему алгоритму предлагается 12973х37
> У этого числа только два таких простых множителя, другого
> разложения на множители нет.
> Что делать в случае, если разложение неудачное, или вообще
> число простое - приблизительное решение искать?


Так отож :( Может, конечно, дописывать просто 1 любой пиксель в конец в таких случаях? Он все равно для глаза практически не заметен на общей картинке будет.


Inovet   (2011-05-31 23:51:00) [16]

> [27] MBo ©   (31.05.11 23:45)
> Рассвет встречаешь?
> ;)

Уже алеет небо на востоке.


MBo   (2011-05-31 23:45:00) [17]

>Inovet ©   (31.05.11 23:39) [25]
Рассвет встречаешь?
;)


MBo   (2011-05-31 23:42:00) [18]

> по Вашему алгоритму предлагается 12973х37
У этого числа только два таких простых множителя, другого разложения на множители нет.
Что делать в случае, если разложение неудачное, или вообще число простое - приблизительное решение искать?


Inovet   (2011-05-31 23:39:00) [19]

> [24] Justin   (31.05.11 23:27)
> Но вот если взять уже число 480.001, то по Вашему алгоритму
> предлагается 12973х37. Представляете себе такую картинку?
> :)

А с таким 524287 как будет?


Justin   (2011-05-31 23:27:00) [20]

>Юрий Зотов

Да, вот именно что-то наподобие этого.
Как раз объясню на Вашем примере суть.
К примеру, необходимо построить картинку по числу 480.000
Наиболее оптимальным "наглядным" решением будет 800x600
По Вашему коду определяется как 750x640. Тоже вполне подходит.
Но вот если взять уже число 480.001, то по Вашему алгоритму предлагается 12973х37. Представляете себе такую картинку? :) Вот она как раз и "не наглядная" получается, т.е. "неправильное".

Я почему и интересуюсь у постояльцев форума, потому что как-то оно не совсем просто получается в реализации. Возможно, стоит как-то определять и вводить ограничения на длину, или еще как-то. Ума не приложу :(


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо